Consul小记

Consul有如下几个主要作用:

  1. 服务发现

  2. key-valye存储

  3. 健康检查

  4. 多数据中心

每隔consul都是一个agent,agent可以是server或者client。每一个数据中心至少有 一个server。client只是将http和dns请求转发给server,以及健康检查。Server会 有一个leader和多个Follower,内部是Raft协议,Server的推荐数量是3个或者5个。 leader挂掉的时候会启动选举机制产生一个新的leader。

consul agent -dev可以启动一个consul实例。可以使用http和dns的方式进行服务发现。

Consul内使用Raft协议在集群内部保证一致性,使用Gossip协议。Gossip协议:在一个有界网络中,每个节点随机地与其他节点通信, 经过一番杂乱无章的通信,最终所有节点的状态将会达成一致,每个节点可能知道所有节点,也可能仅知道几个邻居节点,只要这些节点之间可以 网络互通,Gossip协议是一种最终一致性协议

Gossip协议的特点:

  1. 扩展性

  2. 容错性

  3. 去中心化

  4. 一致性收敛

  5. 简单

其缺点:

  1. 消息延迟,不适用于对实时性要求高的场景

  2. 消息冗余

Written on January 8, 2019