Zookeeper用作注册中心的原理

  • 时间:
  • 浏览:1
  • 来源:uu快3IOS下载_uu快3app下载_和值

RPC框架带有一个重要的角色:

服务消费者会去监听相应路径(/HelloWorldService/1.0.0),一旦路径上的数据有任务变化(增加或减少),zookeeper后该通知服务消费方服务提供者地址列表事先居于改变,从而进行更新。

在zookeeper中,进行服务注册,实际上如保让在zookeeper中创建了一个多 znode节点,该节点存储了该服务的IP、端口、调用最好的方式(协议、序列化最好的方式)等。该节点承担着最重要的职责,它由服务提供者(发布服务时)创建,以供服务消费者获取节点中的信息,从而定位到服务提供者真正网络拓扑位置以及得知如保调用。RPC服务注册、发现过程简述如下:

使用 zookeeper 作为注册中心时,客户端订阅服务后该向 zookeeper 注册自身;主如保让方便对调用方进行统计、管理。但订阅时是是不是注册 client 后该 必要行为,和不同的注册中心实现有关,同类于使用 consul 时便那么注册。

更为重要的是zookeeper 生和熟俱来的容错容灾能力(比如leader选举),还都都可以 确保服务注册表的高可用性。

简单来讲,zookeeper还都都可以 充当一个多 服务注册表(Service Registry),让多个服务提供者形成一个多 集群,让服务消费者通过服务注册表获取具体的服务访问地址(ip+端口)去访问具体的服务提供者。如下图所示:

zk.jpeg

image.png

zookeeper提供了“心跳检测”功能,它会定时向各个服务提供者发送一个多 请求(实际上建立的是一个多 socket 长连接),事先长期那么响应,服务中心就认为该服务提供者事先“挂了”,并将其剔除,比如200.19.20.02这台机器事先宕机了,那么zookeeper上的路径就会只剩/HelloWorldService/1.0.0/200.19.20.01:16888。

那么描述很糙不好理解,下图更直观,

具体来说,zookeeper如保让个分布式文件系统,每当一个多 服务提供者部署已经 该 将其他人的服务注册到zookeeper的某一路径上: /{service}/{version}/{ip:port}, 比如我们歌词 歌词 歌词 的HelloWorldService部署到两台机器,那么zookeeper上就会创建两条目录:分别为/HelloWorldService/1.0.0/200.19.20.01:16888 /HelloWorldService/1.0.0/200.19.20.02:16888。

jjjjjjj.png