常用注册中心的比较
注册中心的组成部分有哪些?
服务提供者(RPC Server):在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。
服务消费者(RPC Client):在启动时,向 Registry 订阅服务,把 Registry 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接。
服务注册中心(Registry):用于保存 RPC Server 的注册信息,当 RPC Server 节点发生变更时,Registry 会同步变更,RPC Client 感知后会刷新本地 内存中缓存的服务节点列表。
最后,RPC Client 从本地缓存的服务节点列表中,基于负载均衡算法选择一台 RPC Sever 发起调用。
常用的注册中心有哪些?这里主要介绍4种常用的注册中心,分别为Zookeeper、Eureka、Nacos、Consul。1、Zookeeper
经典的服务注册中心中间件
java体系中,大部分的集群环境都是依赖zookeeper管理服务的各个节点
其组件特点:
数据结构上高度抽象为K-V格式
支持节点短暂存在
2、Eureka
Netflix开发的服务发现框架
基于REST的服务
用于服务注册、管理、负载均衡、服务故障转
其组件特点:
包含两个组件:EurekaServer 和 EurekaClient
EurekaServer提供注册服务,服务节点的信息可以在界面中直观的看到
允许在注册服务时,自定义实现检查自身状态的是够健康的方法
EurekaClient简化与EurekaServer的交互,同时也是一个内置的、使用轮询负载算法的负载均衡器
3、Consule
用于服务发现和配置的工具
分布式的,高度可用的,并且具有极高的可伸缩性
提供了功能齐全的控制面板
主要特点:服务发现、健康检查、键值存储、安全服务通信、多数据中心、ServiceMesh
其组件特点:
提供多个数据中心支持,基于Fabio做负载均衡
八卦池,其中包含给定数据中心的所有节点
4、Nacos
用于微服务的发现、配置、管理
更敏捷、容易地构建、交付、管理微服务平台
其组件特点:
数据模型:服务 - 集群 - 实例
提供数据逻辑隔离模型,用户账号可以新建多个命名空间,每个命名空间对应一个客户端实例,这个命名空间对应的注册中心物理集群是可以根据规则进行路由的,这样可以让注册中心内部的升级和迁移对用户是无感知的。

总结:Zookeeper基于ZAP协议实现保证每个节点数据同步的问题,中心化思想集群模式,分为领导和跟随者角色。当我们的zk领导因为某种原因宕机的情况下,会自动触发重新选一个新的领导角色,整个选举的过程为了保证数据的一致性问题,在选举的过程中整个zk环境是不可使用的可短暂可能无法使用到zk。意味着微服务采用该模式情况下,可能无法实现通讯(本地有缓存除外)
注意:可运行的节点必须满足过半机制,整个zk采用使用。
Eureka采用ap的设计理念架构注册中心,完全去中心化思想,也就是没有主从之分每个节点都是均等,采用相互注册的原理,你中有我我中有你,只要最后有一个eureka节点存在就可以保证整个微服务可以实现通讯。
Nacos中集群保证一致性算法采ratf协议模式,采用心跳机制实现选举的()。

