consul工作原理

2021年3月26日 12点热度 0条评论 来源: 汕头的小铨

consul工作原理

目录

个人原创总结之 consul 原理

consul服务发现和注册

服务product启动时,会将自己的ip/port告知consul,consul将他们进行注册,每隔一段时间会将服务product进行健康检测

consul服务调用

consumer请求product时,会先去consul的temp table去取得健康的product的信息,temp table注册了一系列健康节点信息

工作模式图


首先绿色部分代表consul集群,有sever,有leader。
然后server4和server5通过consul client注册了serverA、B、C,两台都有注册,避免了一个单独服务故障的问题,consul client通过rpc的方式再把各个server的信息注册到consul server。

consul 核心 agent组件

以守护进程的方式注册在consul节点上,每个agent各自维护自己的服务集合节点。Agent 分为 client和server两个角色,client将ip dns信息转发给server,server记录了ip、dns信息。每个节点的server数目推荐是3个或者5个,通过raft算法保证数据一致性。
(Raft算法:我们不可能要求所有服务器100%都达成一致状态,只要超过半数的大多数服务器达成一致就可以了,假设有N台服务器,N/2 +1 就超过半数,代表大多数了。)

consul 通讯方式

rpc:Gossip流言协议
http api:用于服务发现、健康检测
dns查询:用于服务查询,可以cosul提供的DNS接口来获取当前的服务“web”对应的可用节点

consul的优势

1)Consul使用Raft算法来保证一致性,比复杂的Paxos算法更直接,相比较而言zookeeper采用的是Paxos,而etcd使用的则是Raft;
2)Consul支持多数据中心,内外网的服务采用不同的端口进行监听,多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑网络延迟、分片等情况等。zookeeper和etcd均不提供多数据中心功能的支持;
3)Consul支持健康检查,etcd不提供此功能;
4)Consul支持http和dns协议接口,zookeeper的集成较为复杂,etcd只支持http协议;
5)Consul官方提供web管理界面,etcd无此功能。

consul的使用场景

1)用来做注册中心,注册后可以用consul的dns、http接口查询,consul支持健康检测
2)提供key-value存储功能,并且能将变动迅速地通知出去。比如:动态生成nginx和haproxy配置文件、SaaS应用的配置共享等。

    原文作者:汕头的小铨
    原文地址: https://blog.csdn.net/qq_30358827/article/details/115245439
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。