前段时间有传言说Consul将不能在我国继续使用,后被查明是因法律问题Vault企业版产品不能在国内销售。Valut和Consul都是HashiCorp公司的产品,并且都推出了开源版本,继续使用开源版本都是没有问题的,虚惊一场。Consul是一款优秀的服务发现和配置管理产品,基于其提供的Session机制,可以很方便的实现Leader选举功能。考虑到ZooKeeper的一个常见用途也是选主,所以此类库把ZooKeeper也集成了进来。
代码结构
下边先来张图,了解下代码结构:
![466cc24fb991d4de3acaee7f4636e48e.png](https://img-blog.csdnimg.cn/img_convert/466cc24fb991d4de3acaee7f4636e48e.png)
FireflySoft.LeaderElection类图
从上图可以看到,此类库可以方便的添加其它Leader选举支持程序,只要按照规范实现ILeaderElection接口就可以了,有兴趣的可以试试。
使用说明
下边继续对基于Consul和ZooKeeper的Leader选举进行详细说明。
基于Consul
原理
1、参加选举的程序可以在Consul中创建一个Session,这个Session的存活状态依赖于当前程序的Consul健康检查状态, 一旦健康检查处于Critical状态,则对应的Session就会失效。
2、使用这个Session去锁定