写点什么

Zookeeper 用作注册中心的原理,张孝祥 jsp 视频教程

作者:Java高工P7
  • 2021 年 11 月 10 日
  • 本文字数:981 字

    阅读完需:约 3 分钟


具体来说,zookeeper 就是个分布式文件系统,每当一个服务提供者部署后都要将自己的服务注册到 zookeeper 的某一路径上: /{service}/{version}/{ip:port},比如我们的 HelloWorldService 部署到两台机器,那么 zookeeper 上就会创建两条目录:分别为/HelloWorldService/1.0.0/100.100.0.237:16888


/HelloWorldService/1.0.0/100.100.0.238:16888。


如图:



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


1.服务提供者启动时,会将其服务名称,ip 地址注册到配置中心。


2.服务消费者在第一次调用服务时,会通过注册中心找到相应的服务的 IP 地址列表,并缓存到本地,以供后续使用。当消费者调用服务时,不会再去请求注册中心,而是直接通过负载均衡算法从 IP 列表中取一个服务提供者的服务器调用服务。


3.当服务提供者的某台服务器宕机或下线时,相应的 ip 会从服务提供者 IP 列表中移除。同时,注册中心会将新的服务 IP 地址列表发送给服务消费者机器,缓存在消费者本机。


4.当某个服务的所有服务器都下线了,那么这个服务也就下线了。


5.同样,当服务提供者的某台服务器上线时,注册中心会将新的服务 IP 地址列表发送给服务消费者机器,缓存在消费者本机。


6.服务提供方可以根据服务消费者的数量来作为服务下线的依据。


感知服务的下线 &上线


zookeeper 提供了“心跳检测”功能,它会定时向


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


各个服务提供者发送一个请求(实际上建立的是一个 socket 长连接),如果长期没有响应,服务中心就认为该服务提供者已经“挂了”,并将其剔除。比如 100.100.0.237 这台机器如果宕机了,那么 zookeeper 上的路径就会只剩/HelloWorldService/1.0.0/100.100.0.238:16888。


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


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

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
Zookeeper用作注册中心的原理,张孝祥jsp视频教程