注册中心原理和选型:Zookeeper、Eureka、Nacos、Consul和Etcd
来源:http://www.tudoupe.com时间:2022-03-18
比较五个共同登记中心的方法和理由,无论是面谈还是技术选择,都是有益的。
在撰写本文之前,我对ETCD有更深入的了解,但对ETCD和其他登记中心知之甚少,对ETCD和Zookeper作为登记中心的用处知之甚少。
经过近两周的研究后,我们发现,除了ETCD和Zookeper、Eureka、Nacos和领事外,还经常利用登记中心,我们将调查它们的相似性和差异,以协助选择后续技术。
完整段落超过800个单词长。 它有点长。 提示我们收集它, 然后慢慢研究它。 下面列出文章列表 :

注册中心基本概念
什么是注册中心?
登记中心有三个主要职能:
服务提供者(RPC服务器):在发射时在登记处登记自己的服务,定期向登记处提供生存情况心跳报告。
服务消费者(RPC客户):在启动时加入登记服务,将登记处收到的服务节点清单减慢到当地记忆,然后与RPC Sever连接。
服务登记(注册):这是保存 RPC 服务器登记信息的地方。当 RPC 服务器节点被替换时,登记册将同步进行修改。RPC 客户感知更新了本地记忆中的缓存服务节点列表 。
最后,RPC客户端首先从本地缓存服务节点列表中选择一个基于负负平衡算法的 RPC Sever 。

登记中心必须投入运行。
根据注册中心原则的描述,注册中心必须从事以下活动,偷懒,上传直接图像:

注册中心基础扫盲
如果事先了解这一信息,可以立即跳过,主要是为了扫盲。
CAP理论
CAP理论在分布式结构中至关重要:
一致性:同时,所有节点都有相同的数据。
可用性:保证每一项请求都得到答复,无论请求成功与否。
分区容忍度:系统中信息的任何丢失或失灵均不影响系统的连续运作。
就P而言,我认为是系统的一部分被挂断或关闭,但这不影响系统的运作或使用,而可用性是系统的一个节点被挂断,但这不影响系统的接受或请求。
由于以下原因,联合呼吁程序不能全部拥有,只有两个:
如果C是最初的需求,这将对A的业绩产生影响,因为它必须使数据同步;否则,请求的结果将有所不同;然而,使数据同步需要时间,从而减少这一时期的可用性。
如果A是第一个标准,通常只要有服务就允许提出请求;但是,不能保证回报结果会改变,因为数据对齐过程在以分布方式实施时不能像切线那样快。
如果符合一致性和可用性,则无法核实分割的缺陷,即单一点,是否也是分配的基本核心。
分布式系统协议
和平、拉夫特和ZAB是最常见的一致性协议算法。
Leslie Lamport于1990年推出了和平协会算法,作为基于电文传输的统一方法。非常难以理解,基于和平协会的数据同步和古典掌握数据之间的最大区别是,和平协会只需要一半以上的拷贝就能够上网并相互适当沟通。这项服务每周七天、每天24小时提供。且数据不丢失。
拉夫特是一个容易理解的算法,由斯坦福大学的迭戈·翁加罗和约翰·奥斯特胡特创立。为了实现这一框架,数百种语言Raft算法已经到位。它通常被称为“etcd”而不是“tcd”。谷歌Kubernetes还利用Etcd作为服务发现机制。
拉夫特是一种压缩的和平协会形式。与Paxos相比,拉夫特强调理解和认识是多么简单。与其他人一样,拉夫特和和平协会可以提供服务,确保至少一半的节点是正常的。这篇文章 ETCD 课程-2. 转让合同 我不知道我该怎么办, 但我不确定我会做任何事情。非常有意思,有兴趣的学生可以看一看。
动物维护者原子广播(ZAB,动物维护者原子新闻广播协议)算法为动物维护者分发的数据一致性提供了基础。和平算法由ZaB使用。然而,这与和平协会的算法不同。这是一种广泛使用的统一方法。这是一项特别为动物园维护者制定的原子广播协议,目的是协助崩溃恢复。
常用注册中心
Zookeper、Eureka、Nacos、领事和ETCD是这里讨论的五个经常注册中心。
Zookeeper
值得指出的是,该官员没有表明他是一个登记中心,但全国大多数Dubbo现场都雇用动物园管理员承担登记中心的责任。
当然,造成这种情况有几个历史原因。我们再也不会回来了动物园维护者位于传统服务登记中心的核心。在国内环境下,由于Dubbo框架的影响,在多数情况下,动物园管理员被认为是RPC服务登记中心的最佳选择。当《杜博框架》得到进一步发展和完善时,以及所有注册中心组成部分的诞生即使是RPC框架,动物园维护者同样也在逐步退出登记中心。在共同发展组范围内,动物园维护者继续发挥关键作用。Java体系中,大多数组群设置依赖于动物维护者管理服务节点。

Zookeper注册中心如何运作
文章“使用Zookeper作为注册中心的理由”,
Zookeper可以用来登记服务。建立了一个服务提供者联合体。使服务用户能够使用服务登记表进入某些服务访问地址(IP+港口)。如下图所示:

安装服务供应商时,您必须在 Zookeper 路径: / service/ 版本/ ip:port 上注册服务。
例如,当我们的环球世界服务 被安装在两台电脑上时, Zookeper 创建了两个目录:
/HelloWorldService/1.0.0/100.19.20.01:16888
/HelloWorldService/1.0.0/100.19.20.02:16888
很难理解,下面的插图更直观:

在动物猎手,进行服务注册,事实上,动物园已经建造了一个znode节点。节点维持IP地址、港口、电话(协议、序列等)等等。节点是最重要的组成部分。它由服务提供者(在提供服务时)产生。这是人们第一次有机会获得服务消费者节点的信息。因此,它被安置在一个真正的服务提供者网络中,并学会了如何与它们联系。
以下是RPC登记/发现过程摘要:
当服务提供方启动时,其服务名称被注册到IP地址的配置中心。
当服务用户最初与公司联系时,注册中心将列出适用服务的IP地址清单。并缓存到本地,以供后续使用。当客户与服务机构联系时,我不想再去注册中心了相反,服务供应商IP列表中的服务器呼叫通过负载均衡算法直接发送。
当服务器关闭或关闭时, 随附的 IP 地址会被从服务供应商的 IP 列表中删除。 同时, 注册中心提供一份服务消费者机器的新 IP 服务 IP 地址列表, 延迟了消费者的存在 。
当服务服务器全部关闭时 服务也停止了
同样,当服务供应商的服务器上线时,注册中心向服务消费者机器发送一份新的服务IP地址清单,从而减慢了消费者的存在。
服务提供者可以使用服务用户的人数来确定底线。
“心跳测试”功能由动物园管理员提供:它按预定时间向每个服务供应商发出请求(一个长期的插座连接实际上已经形成),如果它不回答很长一段时间,服务中心就认为服务供应商“已死亡”,将其删除。
例如, 如果这台机器失灵, 动物园keper上的路径只会是/Hello World Service/1.
Zookeper Watch(Zookeper Watch)的装置是一个推拉模型:
服务消费者将收听相关網址(/Hello WorldServicice/1), 照片来自Flickr用户pic.当路径数据变化( 增加或减少) 时,Zookeper 只能将事件类型和节点信息传送给感兴趣的客户端。它不包含任何特定的修改。因此,事件本身是轻而易举的。这就是推的部分。
收到变更通知的客户必须自行调用变更数据,即调用数据。
Zookeper没有资格登记。
作为传播的协同服务,动物保护者是一个出色的程序。然而,该处不能将该处设在何处。因为最好由服务处发现服务已经返回,即使它提供了误导信息,而不是一无所有。因此,当你看看注册中心的服务清单时,我们可以接受几分钟前归还登记资料的做法。因此,不能提供这项服务是不可接受的。
然而,这正是在zk中发生的事情。禁止主节点因网络故障而失去与其他节点的接触。其余的节点将导致重新举行领导人选举。问题在于,一名领导人当选花费了太多的时间。在选举期间,30 120个zk组和全Zk组无法使用。因此,在选举期间,登记服务瘫痪。在云部署的环境下,由于网络问题,zk组群更有可能失去主节点。虽然服务最终可以恢复,但需要提高服务质量。然而,令人无法接受的是,由于选举期间旷日持久,无法在延长的时间内进行登记。
作为注册中心,有用性比一致性更重要!
Zookeper公司尊重联合呼吁程序模式整体一致性(CP)概念,即在任何时候向Zookeper公司提供一致的数据回报,尽管在机器脱机或脱机时无法保证服务的可用性。
那么,为什么Zookeper没有使用最终一致性(AP)模式呢?因为它的主要算法是ZAB 依靠Zookeper其用意都是前后一致的。这适用于分布式协调系统。完全没没有毛病,但是,如果你认为Zookeper是分配协调服务的一致保障,你就可以利用它作为协调工具。用在注册中心,或者,服务机构会定位现场。这个其实就不合适。
Eureka
建筑Eureka

只有我一个人,还是这幅图象看起来很复杂?所以这里是简缩的版本:

Eureka 特点
Eureka是严格按照AP原则创建的,只要集群中有一个Eureka,注册服务的提供就得到保证,但所发现的信息可能不是最新信息(没有强烈一致性的保证)。
分散式架构: Eureka 服务器可同时执行多个实例来创建集群 。与动物维护者的选举程序不同, 动物维护者的投票不如动物维护者的投票简单。Eureka服务器使用对等通信。这是一个分散的系统。没有主人/奴隶,没有主人/奴隶。每个同侪都有对等关系。通过相互登记,节点提高了效用。每个节点必须有一个或一个以上的有效功率Url, 指向其他节点 。每个节点都是其他节点的碳重复。
请求自动切换:如果Eureka服务器机器在集群环境中部署,使用该机器是可行的。Eureka客户端的请求将自动发送到新的 Eureka 服务器节点 。当先前部署的服务器恢复时,Eureka将将其重新引入服务器群集管理 。
当节点开始接受客户的请求时,节点之间的所有活动都将复制,请求被复制到Eureka服务器目前已知的所有其他节点。
自动注册&心跳:当一个新的 Eureka Server 节点启动后,他们首先试图从邻近的节点获得所有登记名单资料。并完成初始化。Eureka服务器上的 Get Eureka ServiceiceUrls () 方法可捕捉所有节点 。它还将通过心跳合同定期更新。
默认启用离线模式 。如果 Eureka 服务器没有在特定时间内从一个服务示例中获得脉冲( 默认为 30 秒),这个示例将被 Eureka 服务器注销( 默认为 90 秒), 然后写下来 。我不确定你在说什么 我不知道 我不知道 我不知道 我不知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道 我知道
当Eureka服务器节点在短期内失去太多心跳时,它进入自我保护模式。
Eureka除了上面列出的属性外,还包含一个自我保护系统。如果85%以上的节点在15分钟后没有正常脉冲,Eureka假定注册中心有网络故障,然后发生以下事件:
由于长时间没有心跳,Eureka没有扩展器将服务从登记表中删除。
Eureka仍然可以接受新的服务登记和查询请求,但将不再与其他节点同步(即检查目前的节点是否仍在运行)
当网络稳定下来时,当前示例中新录入的信息会与其他节点同步。
Eureka的工作流程
在了解了Eureka的基本想法、自我保护机制和该组的工作原则之后, 让我们来看看Eureka的总体工作流程:
如果在启动过程中对组群进行配置,每个Eureka服务器都有一个独立的完整服务登记信息,通过Replicy对组群进行例行同步。
登记中心的登记服务依赖于Eureka服务器IP,该IP是在Eureka客户端开始时指定的。
Eureka客户每30秒向Eureka服务器提出心跳请求,以确保客户服务正常。
在Eureka服务器90s没有得到Eureka客户的脉搏后,注册中心认为节点非法,终止了例例。
Eureka服务器记录了大量Eureka客户,他们没有上传心跳,但觉得可能是网络异常,采用自我保护程序,不再删除不按单位时间传输心跳的客户。
当Eureka客户心率要求恢复正常时,Eureka服务器自动退出自我保护模式。
Eureka客户从登记中心全部或部分或逐步从登记中心取回服务登记表,并隐藏在当地收集的信息。
当该服务被援引时, Eureka 客户端先搜索本地缓存以获取服务。 如果找不到, 登记表将从注册中心更新, 并同步到本地缓存 。
Eureka客户获取目的地服务器的信息,并启动服务电话。
当 Eureka 客户端软件结束时, Eureka 服务器将取消请求发送到 Eureka 服务器, 而 Eureka 服务器将从注册表中删除此示例 。
分析Eureka运作原理时, 我清楚地看到Eureka的设计非常聪明,
Eureka将能够使登记中心更易于进入,以确保其高可用率。这不是唯一会发生在我们身上的事情, 但它是唯一会发生在我们身上的事情。服务节点之间的数据可能有差异。客户端和服务器之间的数据可能不一致 。在注册中心的服务提供标准较高的地方,最好是跨越多卧室迁移。
Nacos
本文摘自Nacos网站:https://nacos.com/Io/zh-cn/docs/what-is-nacos.html。

纳科斯公司努力协助您识别、配置和管理微观服务。纳科斯公司提供简单、方便用户的能力集,协助您尽快实现动态服务发现、服务配置、服务元数据和交通管理。
纳科斯是服务基础设施,有助于建设以“服务”为中心的当代应用架构(如微服务范式、云原型)。

Nacos 关键特征
监测服务的健康和发现新的服务:
以DNS为基础的和以RPC为基础的服务发现得到Nacos的支持。服务提供商在使用原SDK、OpenAPI和互联网后,雇用了原SDK、OpenAPI或单独的TODO注册代理服务。服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
纳科斯公司提供实时服务健康检查。防止向无法信赖的东道主或服务发送请求。Nacos支持传输层(PING或TCP)和应用层(如HTTP、MySQL和习惯)。在复杂的云层环境和网络环境(如VPC、外围网络等)中进行服务健康筛查。为了积极测试两次健康检查,Nacos公司提供了代理商报告模式和服务提供者。此外,Nacos还提供了一个单一的健康检查仪表板。帮助您根据健康状况管理服务的提供和流动。
动态配置服务:
动态配置服务使您能够以集中、外部和动态的方式处理所有环境应用程序和服务配置。
动态配置减少了在配置变化期间调用应用程序和服务的必要性,从而提高了配置管理的效率和灵活性。
集中化的组合管理有利于实现无国籍服务,以需求驱动和灵活的方式扩大服务。
为了帮助您管理所有服务和应用程序配置,Nacos提供了基本和易于使用的UI(包含模板 Demo)。纳科斯公司还具备开放箱配置管理能力,如配置版本跟踪、金丝雀分布、一个关键的滚回配置和客户配置最新状况跟踪。让您管理配置变化,并降低在更安全的生产环境中配置变化的风险。
动态的 DNS 服务 :
这是我第一次找到解决问题的办法使您能够完成中间负载平衡、更灵活的路线计划、交通控制以及为数据中心网络提供简单的 DNS 口译服务。动态DNS服务也使基于DNS的服务发现更容易实施。帮助您避免与制造商的私人服务单位合作寻找其上方的API的风险。
为了帮助您管理该服务的相关域名和可获取的 IP:port 列表, Nacos 提供了基本的 DNS API TODOs。
小节一下:
Nacos是一个开放源码Ali项目,利用DNS和RPC提供服务发现。
纳科斯注册中心为CP和AP提供方便, 而对于他来说,这只是一个命令开关, 与你一起玩耍, 并且支持注册中心移动到纳科斯, 简而言之,只要你喜欢。
除了服务登记外,纳科斯公司还包括动态配置服务,可归纳为纳科斯=春云登记中心+春云配置中心。
Consul
HashiCorp的领事是一个开放源码工具。分销系统服务发现和配置除了其他登记和未披露的分布式服务方案之外,领事的程序比"一对一"方案更"一对一"。它建立了服务登记和发现框架,以及实现分配一致性协议、健康检查、Key/Value存储、多数据中心方案和数据中心系统。没有必要使用其他工具(例如动物园维护者。 ) 。
领事也更方便用户使用。以Go编程语言写作,因此,它具有自然可携带性(支持Linux、Windows和Mac OS X);安装包只包含一个可执行文件,但不是可执行文件。方便部署,容易与轻量级包装工具(如Docker)结合。
领事的电话通话程序
当生产商开始生产时,会向领事发出邮购申请,通知其自己的IP和港口。
当领事收到生产者登记时,它每10秒钟(默认情况下)向生产者发出健康检查请求,以核实生产者的健康。
当消费者使用 / api/ URL 向制片人提出要求时,领事将首先提供储存服务IP和港口的临时清单。从制片人处获得IP地址和端口号,并发送 Get 模式请求/api/地址;
临时表格每10秒钟更新一次,只包括通过健康检查的生产者。

领事的主要特点
在氯化石蜡模型中使用了拉夫特方法,以实现强有力的一致性,但不能保证可用性。
登记和发现支助服务、健康检查和KV储存功能
对多数据中心的支持可防止单一数据中心的单点故障,而要部署这些中心,就必须考虑网络延迟、分割和其他因素。
领事可制作和分发TLS证书,供该处相互建立TLS连接,以便利安保服务互动。
支持 http 和 dns 协议接口 。
网站管理接口现在可正式进入。
多数据中心
关键是知道领事的多数据中心是如何运作的
领事允许开放式箱式多数据中心,这就取消了用户开发额外抽象层以便将业务扩大到各区域的要求。

在上图中,两个数据中心通过互联网连接,只有服务器节点被添加到交叉数据中心连接中,以提高通信效率。
在单个数据中心中,领事又细分为Clit和服务器节点(两者也称为代理)。要存储数据,使用服务器节点。Clit负责健康检查和将数据请求传送到服务器;每个服务器节点都有一名领导和大批追随者。数据将与“主节点”的“追随者”同步。三或五是服务器的最佳数字 。当领袖死后,选举制度被触发,产生新的领袖。
Gossip协议(八卦协议)被该组的领事节点用来保护成员的联系。这表明一个节点知道分组中的其他节点。这些节点被归类为客户端或服务器。根据短信服务协议,TCP和UDP同时用于通信。他们都在8301港口监听TCP和UDP也用于数据中心通信。端口使用8302。
可直接向服务器提交对分组数据进行读写操作的请求。使用RPC将其传送到服务器也是可行的。请求最终将到达领袖节点。如果允许延迟提供数据,也可以在标准的服务器节点满足请求。TCP 8300门户网站用于阅读、撰写和复制集群数据。
ETCD
Etcd是一个分布式、高可用性、一致的关键储存系统,利用Go提供可靠的分布式关键储存、配置共享和服务发现功能。
ETCD 特点
简单使用 : 基于 HTTP+JSON 的 API 允许您轻松使用卷曲 。
简单部署:在Go开发,跨平台,简单部署和维护;
(a) 高度一致:使用拉夫特方法确保分布式系统数据完全一致。
高可用性:过错容忍度,假设正节组,并在(n-1/2节点)失效时继续提供服务;
(a) 可适用性:在通过WAL格式驱动器上将维持数据变化,以便能够进行快照快照。
快速:每例每秒100个写作操作,最大写作性能不超过10,00 QPS;
可选的SSL客户验证安全技术;
ECD 3.0:除上述特征外,还支持菲律宾妇女理事会的通信和观察机制。
ETCD 框架
Etcd分为四大部分:
HTTP服务器:用户和其他等节点为 API 电话请求同步和心跳信息。
存储处:用于管理诸如数据索引、节点修改、监测和反馈、事件处理和执行等由等促成的众多业务的服务,是用于管理由等促成的众多业务的服务,如数据索引、节点改动、监测和反馈、事件处理和执行等,向用户提供的API功能的绝大部分实际落实情况,等等,是用于管理由等促成的众多业务的服务,如数据索引、节点改动、监测和反馈、事件处理和执行等,实际实现由等提供给用户的大多数API功能。
raft: estscd的核心是实际实现强大的Raft一致性算法。
WAL 代表着 " 书头日志 " 。是在 etd 中存储数据的方式 。除了所有内存数据和节点指数的状况之外,Etcd通过WAL提供持久性储存。WAL中,在提交之前,所有数据都预先记录。抓图是一个状态快照, 防止保存不必要的数据; 条目是存储的精确日志信息 。

通常,用户请求已经转交。它将通过HTTP服务器发送到存储处进一步处理。如果对节点有修改,这是Raft 模块第一次有机会 更改状态、日志等等。之后,为了确认数据提交, 将数据与其他等节点同步 。数据提交,最后再次同步。
有关ETCD的间接信息可在文章“从拉夫特到实践,一个月的活性ETC”中找到。
注册中心对比&选型
注册中心对比

服务健康检查:Euraka使用明显配置的健康检查支持、Zookeper、Etcd、在服务过程连接丧失的情况下从事不健康的工作等等。领事比以往更加具体。例如,是否90%的时间使用了记录和档案管理。文件系统不会耗尽空间 。
领事和Nacos得到多数据中心的支助,但其他解决办法需要额外的发展努力。
KV存储服务:除Eureka外,许多其他物品能够为k-v存储服务提供外部支持,因此这些货物高度一致的基本原因将在以后讨论,存储服务也可更好地转化为动态配置服务。
CAP理论的权衡:
Eureka是一种典型的AP,其中Nacos可以被定为AP,在分布式假想中发现的货物更合适,服务更优先提供,一致性并不特别关键。
Zookeper、Etcd和领事都是CP的例子,
Zookeper公司为服务器最终出版修改提供支持,而其他公司则通过长周期查询实现改变感知。
除了Zookeper和Nacos以外,许多其他货物自动使量度成为可能,承运人可以出于监视原因收集并向当局转交这些统计数据。
春云集成:现在有一个匹配的启动装置,提供集成能力。
注册中心选型
关于登记中心的比较和选择,我显然提供了一些个人观点:
当在CP或AP之间作出选择时,选择AP。这与其说是一个一致性问题,不如说是问题, 因为它是一个适用性而不是一致性的问题。这就是为什么我们选择Eureka和Nacos;这就是我们选择Eureka和Nacos的原因。哪个让我做的事少,我就选择哪个,显然,纳科斯帮助我们做了更多的工作。
技术系统:Go被用于建造Etcd和Consul,而Java被用于开发Eureka、Nacos、Zookeper和Zookeper,可能的项目位于不同的技术区,有利于使用适当的技术系统。
(a) 可用性高:除少数例外情况外,这些开放源技术探索了如何建立高可用性集群。
产品活动:这些开放源码产品通常是活跃的。
相关新闻
- 2023-05-06 微pe怎么初始化U盘(微pe怎么恢复初
- 2023-05-06 Xp系统boot 进入pe(boot manager 怎么进入
- 2023-05-06 win pe修复bcdboot(pe修复系统)
- 2023-05-06 win7更新失败 pe(win7更新失败还原更
- 2023-05-06 u盘装了pe读取不了(u盘能进pe读取不
- 2023-05-06 u盘pe 发热(u盘发热烫手)
- 2023-05-06 u盘pe下看不到硬盘(u盘启动pe看不到
- 2023-05-06 pe盘 ntfs(u盘ntfs格式)
- 2023-05-06 sony笔记本进入pe模式(联想笔记本怎
- 2023-05-06 pe启动盘进不去(pe启动盘进不去系统
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
