注册中心

126 阅读2分钟

注册中心

为什么?

第一个阶段:consume ->(invoke) -> provider

单节点,消费者和生产者的RPC调用。

第二阶段: consume ->(invoke) -> 多个 provider

消费者需要调用生产者集群。产生的问题:1. 生产者节点信息的存储 2.服务上下线的变更通知及服务健康检查

  • 服务信息存储 主要任务。 服务注册 服务信息的写;服务发现 服务信息的读。(高并发、读多写少,基于内存)像 CopyOnWrite 写时复制,读时共享一份资源,写时复制一份数据并更新。

  • 健康检测。防止服务进程假死和停止,减少错误调用。下游主动上报,上游主动请求。

  • 上下游变更通知。需要即时性,保证可用性。通过什么方式?客户端轮询 pull 拉 ;服务端推送 push 推;

第一是服务的健康检测,通过连接敏感的特性,对服务宕机做到秒级发现,但为此也带来“网络不稳定导致服务频繁上下线”的负面影响;第二是内部角色之间的“推”和“拉”的机制,整个服务上下线流程都以实时的“推”为主。

推拉结合: nacos apollo zk的watch机制:zk只会发送事件类型和节点信息到客户端;收到变更通知的服务器自己去拉取更多的数据 (如果仅仅是推,把所有数据推过去,会出现推不过来;如果是拉,会出现拉不及时)

第三阶段:单节点故障问题,需要分布式的注册中心。

分布式会出现可用性和一致性问题。

CAP原则:

CAP是在一个分布式系统中,Consitency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)。

  • AP 无主+数据同步 满足可用性,在网络出现异常的情况,系统仍可工作,但会出现节点数据不一致但情况。如eureka,允许短暂数据不一致。用户体验(舍弃一致性)。数据同步 P 节点之前对称,节点角色均等,对称式架构,各个节点需要互相通信,保证数据一致性,节点通信会指数型增长。

  • CP raft协议 选主+数据同步,保证钱财安全。数据同步 P 非对称,有专门的leader维护元数据。如zk

服务发起注册   通知   健康检查
一致性协议(选主 读写控制)
存储