Go服务注册与发现的实现 - etcd和ZooKeeper

 提示:转载请注明原文链接

 本文永久链接:https://360us.net/article/82.html

基于ZooKeeper和etcd实现服务的注册和发现功能的原理。

ZooKeeper

服务注册

利用临时节点的特性,创建一个服务的临时节点,写入服务信息数据,不断监视节点续期,当服务不可用时会话超时,临时节点会被删除。

服务发现

服务发现是利用watch的特性,首先获取一遍需要的服务信息,保存在本地,然后给这个服务节点添加watch,监视变化和更新。

etcd

服务注册

服务注册是利用了etcd租约的特性。

首先创建一个定时的租约,比如10秒,20秒等。

然后带租约存储服务信息,不断的续期租约,当服务不可用时,租约过期,服务数据就会被删除,就相当于心跳保活了。

服务发现

服务发现和zookepper类似,是利用了etcd的watch的特性,首先获取一遍需要的服务的信息,再监视变化和更新。

下面是实现代码供参考:

https://github.com/ilaziness/gopkg/tree/main/serviceregdisc

 评论
暂无评论