讲解5种常用的注册中心,对比其流程和原理,无论是面试还是技术选型,都非常有帮助。
往期精选:
大家好,我是楼仔!对于注册中心,在写这篇文章前,我其实只对ETCD有比较深入的了解,但是对于Zookeeper和其它的注册中心了解甚少,甚至都没有考虑过ETCD和Zookeeper是否适合作为注册中心。
经过近2周的学习,原来注册中心除了ETCD和Zookeeper,常用的还有Eureka、Nacos、Consul,下面我们就对这些常用的注册中心,初探它们的异同,便于后续技术选型。
全文接近 8千字,有点长,建议先收藏,再慢慢看,下面是文章目录:
注册中心基本概念
什么是注册中心?
注册中心主要有三种角色:
-
服务提供者(RPC Server):在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态。
-
服务消费者(RPC Client):在启动时,向 Registry 订阅服务,把 Registry 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接。
-
服务注册中心(Registry):用于保存 RPC Server 的注册信息,当 RPC Server 节点发生变更时,Registry 会同步变更,RPC Client 感知后会刷新本地 内存中缓存的服务节点列表。
最后,RPC Client 从本地缓存的服务节点列表中,基于负载均衡算法选择一台 RPC Sever 发起调用。
注册中心需要实现功能
根据注册中心原理的描述,注册中心必须实现以下功能,偷个懒,直接贴幅图:
注册中心基础扫盲
这块知识如果大家已经知道,可以直接跳过,主要是为了扫盲。
CAP理论
CAP理论是分布式架构中重要理论:
-
一致性(Consistency):所有节点在同一时间具有相同的数据;
-
可用性(Availability) :保证每个请求不管成功或者失败都有响应;
-
分隔容忍(Partition tolerance) :系统中任意信息的丢失或失败不会影响系统的继续运作。
关于 P 的理解,我觉得是在整个系统中某个部分,挂掉了,或者宕机了,并不影响整个系统的运作或者说使用,而可用性是,某个系统的某个节点挂了,但是并不影响系统的接受或者发出请求。
CAP 不可能都取,只能取其中2个的原因如下:
-
如果C是第一需求的话,那么会影响A的性能,因为要数据同步,不然请求结果会有差异,但是数据同步会消耗时间,期间可用性就会降低。
-
如果A是第一需求,那么只要有一个服务在&#x