首页 » 谷歌 » 谷歌账号注册为什么显示重试 如果没有被塞尔维亚族热血青年普林西普枪杀会怎样?(组图)

谷歌账号注册为什么显示重试 如果没有被塞尔维亚族热血青年普林西普枪杀会怎样?(组图)

 

谷歌锁区号/谷歌邮箱老号-购买商城

谷歌play地区代改

Google Voice号码支持自助购买

谷歌锁区号购买商城]

如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp
需要解决问题的人很多,为了更好的处理网友的问题

拒绝白嫖
劝君莫做伸手党
不要下次一定

站在未来的十字路口回首历史的迷失之路往往很有趣,因为我们会在不经意间产生疯狂的念头,比如今年早些时候发生了什么事,而另一件事没有发生怎么办?就像奥匈帝国的王位继承人斐迪南大公夫妇没有被塞尔维亚青年普林西普枪杀会发生什么,如果邱老道没有通过会发生什么牛家村?

2008年底,淘宝内部启动了名为“七彩石”的改造项目。这个项目后来成为了淘宝的面向服务、分布式的自研之路,走出了互联网中间件系统之初,与淘宝服务注册中心同年诞生。

2008年左右,前互联网巨头雅虎开始逐步公开其大数据分布式协同产品,参考了Paxos上发表的论文。

2010年11月,从子项目发展为顶级项目,并正式宣布成为工业级成熟稳定产品。

2011年,阿里巴巴开源了Dubbo。为了更好的开源,需要剥离与阿里巴巴内部系统的关系。 Dubbo 支持开源作为注册中心。公司典型的服务化方案已经赢得了注册机构的声誉。

2015年双11,近8年的内部服务已经过去,阿里巴巴内部“服务规模”超过几百万,推动“千里之外”IDC容灾技术战略等,共同推动阿里巴巴内部打开2.0到3.0的架构升级路径。

时间迈向2018年,站在10年时间的交汇点,有多少人愿意在追逐日新月异的潮流科技理念的同时放慢脚步,仔细凝视这个服务发现领域,如何很多人都想过或者我想过一个问题:

服务发现真的是最好的选择吗?

回顾历史,我们偶尔会有神话。在服务发现的上下文中,如果那一年的出生日期比我们的 HSF 注册中心早一点会发生什么?

我们会不会走弯路,先使用,然后疯狂修改修补,以适应阿里巴巴面向服务的场景和需求?

然而,站在今天和前人的肩膀上,我们从未如此坚定地意识到,在服务发现领域,它根本不是最好的选择,因为这些年来我们一直在与我们同行。以及这篇文章“!Why You 't Use for”的坚定阐述,为什么不应该将它用于服务发现!

我的路并不孤单。

注册表要求和关键设计注意事项分析

接下来,让我们回到服务发现的需求分析,结合阿里巴巴在关键场景的实践,一一分析,讨论为什么它不是最适合的注册中心解决方案。

注册中心是 CP 还是 AP 系统?

CAP 和 BASE 理论相信读者很熟悉。它们已成为指导分布式系统和互联网应用建设的关键原则之一。我不会在这里重复他们的理论。可用性要求分析:

注册表最本质的功能可以看成是一个Query函数Si = F(-name),以-name为查询参数,-name对应的可用(ip:port)服务列表为返回值。

注意:以下简称svc。

我们先来看关键数据(ip:port)不一致的影响,即CAP中不满足C的后果:

如上图,如果一个svcB部署10个节点(/),如果对于同一个服务名svcB,调用者svcA的2个节点2次查询返回不一致的数据,例如:S1 = { ip1,ip2 ,ip3...,ip9 }, S2 = { ip2,ip3,....ip10 },这个不一致有什么影响呢?相信大家一定已经看到,svcB的各个节点的流量会有些不平衡。

ip1 和 ip10 比其他 8 个节点 {ip2...ip9} 小一点,但显然,在分布式系统中,即使对于点对点部署的服务,因为请求到达任何在时间点上,这些点对点部署的节点状态不可能完全一致,并且在流量不一致的情况下,只要注册中心在 SLA 承诺的数据会收敛到一致的状态(即满足最终一致性)在一段时间内(例如1s内),流量很快就会在统计上一致,所以注册中心在生产实践中设计一个最终一致的模型是完全可以接受的。

接下来我们看一下在网络分区(

考虑一个典型的三机房容灾5节点部署结构(即2-2-1结构),如下图:

当3号机房发生网络分区(联系了。

也就是说此时3号机房的应用服务svcB不能新部署、重启、扩容或缩减,但是从网络和服务调用的角度来看,虽然3号机房的svcA不能调用机房1和svcB在机房2,但是svcB在机房3的网络明明是可以的,为什么不让我调用这个机房的服务呢?

现在因为注册表本身为了保证裂脑(P)下的数据一致性(C)而放弃了可用性,所以不能调用同一个机房​​的服务,这是绝对不允许的!可以说,在实践中,注册中心不能以任何理由破坏服务之间的连接性。这是注册表设计应该遵循的铁律!以后我们会继续讨论注册中心客户端的容灾问题。

同时,让我们考虑一下这种情况下的数据不一致。如果1、2、3机房都是孤岛,那么如果每个机房的svcA只获取机房svcB的ip列表,即每个机房svcB的ip列表数据为完全不一致。有什么影响?

其实影响不大,但是这种情况下,都变成了同一个机房​​电话。我们在设计注册表时,有时甚至会主动利用注册表的数据不一致性来帮助应用。主动在同一个机房​​拨打电话,优化服务呼叫环节RT效果!

从上面的描述可以看出,在CAP的权衡中,注册表的可用性比数据的强一致性更有价值,所以整体设计应该更倾向于AP,而不是CP,数据不一致在可接受的范围内,在P下丢弃A完全违反了注册中心不能以任何理由破坏服务本身的连通性的原则。

服务规模、容量、服务连通性

如何注册谷歌账号_谷歌账号注册为什么显示重试_谷歌显示找不到账号

贵公司的“微服务”有多大?数百个微服务?部署了数百个节点?那么3年后呢?互联网是奇迹发生的地方,也许你的“服务”一夜之间家喻户晓,流量翻倍,规模翻倍!

当数据中心的服务规模超过一定数量(服务规模=F{ pub , sub })时,注册中心很快就会像下图中的驴子一样不堪重负

阿里巴巴为什么不用 ZooKeeper 做服务发现?

其实用对了地方,也就是用在粗粒度的分布式锁和分布式协调场景中,支持的tps和支持的连接数就足够了,因为这些场景不需要可扩展性和容量。很强大。

但是,在服务发现和健康监控场景下,随着服务规模的增大,无论是应用频繁释放时服务注册导致的写请求,还是刷入服务健康状态导致的写请求毫秒,我还是希望整个数据中心的所有机器或者容器都长连接到注册中心。连接压力很快就会不堪重负,而且写起来不具备可扩展性,增加节点也无法解决横向扩展问题。

为了在基础上解决服务规模增长的问题,在实践中可以考虑的一个方法是想办法对业务进行梳理,将业务域纵向划分,分成多个注册中心,但作为通用服务,公司平台组织群由于自身提供的服务能力不足,按技术接力棒来划分治理业务真的可行吗?

而且由于注册中心本身(容量不足),这违反了服务连接性。举个简单的例子,1个搜索服务,1个地图服务,1个大娱乐服务,1个游戏业务,它们之间的服务应该是密不可分的吗?也许今天是的,但是明天,1 年,10 年后呢?谁知道未来几个业务领域会开辟出多么精彩的业务创新?注册中心作为一项基础服务,无法预测未来,当然也不能阻碍业务服务未来对内在连接性的需求。

注册表是否需要持久存储和事务日志?

需要和不需要。

我们所知道的ZAB协议会为每个写请求在每个节点上不断地写一个事务日志,同时定期将内存数据镜像到磁盘,以保证数据的一致性和持久性。并且数据可以在停机后恢复。这是一个很好的特性,但是我们不得不问,在服务发现场景中谷歌账号注册为什么显示重试,核心数据——实时健康服务的地址列表真的需要数据持久化吗?

对于这个数据,答案是否定的。

阿里巴巴为什么不用 ZooKeeper 做服务发现?

如上图所示,如果svcB已经通过注册服务(ip1)扩展到2个节点(ip1,ip2)由于宕机(ip1宕机)而收缩),这个 ,导致 3 次写入目标。

但是经过仔细分析,通过事务日志持久记录这个变化过程是没有意义的,因为在服务发现中,服务调用的发起者更关心的是实时地址列表和实时健康要调用的服务。状态,每次调用时,都不关心被调用服务的历史服务地址列表和过去的健康状态。

但是为什么需要它,因为一个完整的生产就绪注册表,除了服务的实时地址列表和实时健康状态之外,还会存储服务的一些元数据信息,比如服务的版本、分组、所在的数据中心、权重、认证策略信息、标签等元信息,这些数据需要持久化存储,注册中心应该提供检索这些元信息的能力.

检查

谷歌账号注册为什么显示重试_谷歌显示找不到账号_如何注册谷歌账号

作为服务注册中心使用时,经常使用主动Track机制和与ZNode结合的机制来进行服务健康检测。总之,服务健康监测与On TCP长链路活跃度检测的健康监测是绑定的。

这在许多情况下也可能导致致命的问题。当ZK与服务提供者机器之间的TCP长链接活动检测正常时,服务是否健康?答案当然是否定的!注册中心应该提供更丰富的健康监控方案,服务健康的逻辑应该开放给服务提供者自己定义,而不是千篇一律的TCP活动检测!

健康检测的基本设计原则之一是尽可能地反馈服务本身的真实健康状态。否则,服务调用者无法信任的健康状态判断结果比没有健康检测还糟糕。

注册表的灾难恢复注意事项

如上所述,在实践中,注册中心不能以任何理由破坏服务之间的连接,所以在可用性方面,一个本质的问题是,如果注册中心()本身完全宕机,svcA调用svcB链接是否会受到影响?

阿里巴巴为什么不用 ZooKeeper 做服务发现?

是的,应该不会受到影响。

服务调用(请求-响应流)环节要弱依赖注册中心,只能在服务发布、机器下线、服务扩缩容时依赖注册中心。

这需要注册中心精心设计自己提供的客户端。当注册服务完全不可用时,客户端应该有灾难恢复的方法。例如,设计一个客户端缓存数据机制(我们称之为)是要走的路。有效措施。另外,注册中心的检查机制也要精心设计,避免出现这种情况下出现空推送等情况。

原生客户端没有这个能力,所以在实现注册中心的时候,我们一定要问自己,如果我们杀掉所有节点,你生产中的所有服务调用链接不受影响吗?并且在这一点上应该定期进行故障演习。

您有可以信赖的专家吗?

看起来是一个简单的产品谷歌账号注册为什么显示重试,但大规模使用并在生产中很好地使用它并不是那么自然。如果决定在生产中引入,最好做好随时寻求技术专家帮助的心理预期,最典型的表现有两个方面:

原生客户端

肯定不好用,会更好,但其实是有限的。完全理解客户端和(下)之间的交互协议并不简单:

但是基于它的服务发现解决方案依赖于提供的长连接/管理、ZNode、Event&、ping机制,所以要很好地使用它进行服务发现,需要了解核心机制原理,这有时会让你大发雷霆,我就是想要一个服务发现,我怎么知道这么多?而如果你了解了所有这些,并且不踩坑,那么恭喜你,你已经成为了技术专家了。

我们在阿里巴巴访问应用的时候,有一个“应用访问必知必知”的WIKI,里面有关于异常处理的讨论:

应用开发者在使用时最需要了解的是什么?那么根据我们之前的支持经验,肯定是异常处理。

当一切(主机、磁盘、网络等)幸运地工作时,应用程序和可能工作得一样好,但不幸的是,我们一整天都面临着各种各样的意外,而且它遵循墨菲定律,其中不好的意外事情总是在你最担心的时候发生。

因此请务必仔细了解某些场景下可能发生的异常和错误,确保正确理解这些异常和错误,并了解您的应用程序如何正确处理这些情况。

离子和事件

简单来说,这是一个可以在同一时间内恢复的异常

(),但应用程序开发人员负责将应用程序恢复到正确的状态。

这个异常的原因有很多,比如应用机器和节点之间的网络断开,节点宕机,服务器Full GC时间过长,甚至你的应用进程Hang dies,之后申请进程 Full GC time is too long 可以恢复。

要理解这个异常,需要了解分布式应用中的一个典型问题,如下图:

阿里巴巴为什么不用 ZooKeeper 做服务发现?

在一个典型的客户端请求和服务器响应中,当它们之间的长连接被闪现时,客户端在感知到这个闪现事件时会陷入尴尬的境地,即事件发生时无法确定请求处于什么状态发生了,客户端收到这个请求了吗?处理了吗?由于这个无法确定,所以在客户端重连的时候,还有一个问号是否应该重试(Retry)。

因此,在处理连接断开事件时,应用开发者必须知道flash附近的请求是什么(往往难以判断),请求是否幂等,以及对业务请求的端服务处理“只处理一次”“最多处理一次”“至少处理一次”语义是可选的和预期的。

例如如果之前的请求是应用接收到ion时的操作,那么应用的catch到这个异常,应用的一个可能的恢复逻辑就是判断之前的请求创建的节点是否已经存在,如果Don '如果存在则不创建,否则创建。

再比如,如果应用程序使用Watch来监听一个不存在的节点的创建事件,那么在ion期间,有可能会遇到在这个flash期间,其他客户端进程可能已经有A节点被创建和删除,因此对于当前的应用程序,相关节点的创建事件被遗漏了。这次错过对申请有什么影响?可以容忍还是不可接受?应用开发者需要根据业务语义对其进行评估和处理。

离子和事件

是一个不可恢复的异常,也就是说当应用程序捕捉到这个异常时,应用程序不可能在同一个异常中恢复应用程序状态,必须重新建立一个新的异常状态。锁可能已过期。 ...

谷歌账号注册为什么显示重试_如何注册谷歌账号_谷歌显示找不到账号

在尝试用于服务发现的过程中,我们的阿里巴巴合作伙伴曾经在我们的内网技术论坛上总结了一个关于他们自己的陷阱的经验分享

阿里巴巴为什么不用 ZooKeeper 做服务发现?

本文中的相关提及:

...我在编码过程中发现了很多可能的陷阱。我估计80%以上第一次使用zk实现集群管理的人都会掉进坑里。有些坑比较隐蔽。只有在出现异常场景时才会出现,而且可能很长时间都不会暴露出来……

左转右转

阿里巴巴根本不用它吗?不是真的!

熟悉阿里巴巴技术体系的人都知道,阿里巴巴拥有中国乃至全球最大的集群,整体规模近1000个服务节点。

同时,阿里巴巴中间件还维护了一个代码分支,用于量产,高可用,更容易监控和运维。如果我们用过去10年在各个业务线和生产中的实践,用一句话来评价,那么我们认为它应该是“大数据之王”!

阿里巴巴为什么不用 ZooKeeper 做服务发现?

在粗粒度分布式锁、分布式主选、主备高可用切换等不需要高TPS支持的场景中发挥着不可替代的作用。这些需求往往集中在大数据、离线任务等。在业务领域,因为大数据领域,数据集的划分很重要,而且大多数时候数据集是由多个并行处理的进程/线程,但总有一些点需要协调这些任务和进程。角色扮演场所。

但在交易场景的交易环节,主要业务数据访问、大规模服务发现、大规模健康监控等方面存在天然的短板。我们应该尽量避免在这些场景中引入它们。在实际应用中,应用在申请使用时需要对场景、容量、SLA要求进行严格评估。

所以可以用,但是大数据请往左,事务往右,分布式协调往左,服务发现往右。

写在最后

感谢您的耐心阅读到这里,至此,相信您已经明白了,我们写这篇文章并不是完全否定,而是基于我们阿里巴巴近10年大规模服务的生产实践,我们总结了服务发现和注册中心设计使用方面的经验和教训,希望能够启发和帮助业界如何更好地使用和设计自己的服务注册中心。

最后,条条大路通罗马,我衷心希望您的注册表直接诞生在罗马。

本文出处://?scm=.184.2.173

谷歌锁区号/谷歌邮箱老号-购买商城

谷歌play地区代改

Google Voice号码支持自助购买

谷歌锁区号购买商城]

如果您还有其他问题可以加我电报交流。
电报号:telegram:@tianmeiapp
需要解决问题的人很多,为了更好的处理网友的问题

拒绝白嫖
劝君莫做伸手党
不要下次一定

原文链接:谷歌账号注册为什么显示重试 如果没有被塞尔维亚族热血青年普林西普枪杀会怎样?(组图),转载请注明来源!

0