基于ZooKeeper和etcd实现服务的注册和发现功能的原理。
ZooKeeper
服务注册
利用临时节点的特性,创建一个服务的临时节点,写入服务信息数据,不断监视节点续期,当服务不可用时会话超时,临时节点会被删除。
服务发现
服务发现是利用watch
的特性,首先获取一遍需要的服务信息,保存在本地,然后给这个服务节点添加watch
,监视变化和更新。
etcd
服务注册
服务注册是利用了etcd租约的特性。
首先创建一个定时的租约,比如10秒,20秒等。
然后带租约存储服务信息,不断的续期租约,当服务不可用时,租约过期,服务数据就会被删除,就相当于心跳保活了。
服务发现
服务发现和zookepper类似,是利用了etcd的watch
的特性,首先获取一遍需要的服务的信息,再监视变化和更新。
下面是实现代码供参考:
https://github.com/ilaziness/gopkg/tree/main/serviceregdisc
本文链接:https://360us.net/article/82.html