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

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

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

基于ZooKeeper和etcd实现服务的注册和发现功能,先讲ZooKeeper。

ZooKeeper

服务注册

  1. 利用临时节点的特性,创建一个服务的临时节点,关联服务信息数据,当服务不可用时会话超时,临时节点会被删除,就起到了心跳的作用。

  2. 给这个临时节点注册一个watch监视数据,不存在了可以及时重新注册服务信息。

服务注册

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

etcd

服务注册

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

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

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

服务注册

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

看原理是不是都很简单呢?主要是怎么实现呢?下面附上完整代码供参考:

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

 评论
暂无评论