Consul 架构(译)
Consul 架构
此篇文章主要对consul的相关内部技术细节进行简要概述。
»术语
代理 - 代理是指consul集群中运行的consul实例,通过执行
consul agent 命令来启动
. 代理可以运行于客户端或者服务端。通过执行DNS或者HTTP接口来执行健康检查和服务同步。客户节点 - 客户节点负责将向服务节点发送RPC请求,相对来说是无状态的.。客户节点唯一要执行的后台活动是参与LAN gossip pool。当然这只会消耗很少的资源和网络带宽。
服务节点 - 服务节点主要职责包括参与Raft算法,维护集群状态,处理RPC查询,和其它的数据中心交换WLAN gossip及向领导者或者远程数据中心转发查询请求。
数据中心 – …
维护一致性- 包括领导者选举及事务执行顺序方面的一致性。
Gossip - Consul是建立在Serf之上的,支持全部的gossip protocol(节点间随机通信,主要通过UDP)。Serf 提供关系管理, 失败检测及事件分发功能. Consul gossip应用详情可以访问连接gossip documentation。
LAN Gossip - 本地局域网或数据中心节点间Gossip应用.
WAN Gossip – WAN 范围(不同数据中心,主要通过internet或者wan通信)内服务器节点间Gossip应用。
RPC - 远程过程调用,请求/回复机制。
»基本架构
如上图所示,Consul先天支持多数据中心应用:multiple datacenters 。
数据中心中包含客户节点和服务节点,通常建议三到五个服务节点。因为随着节点的增加,服务同步会变得相对更慢,同时考虑到服务失败和性能要求等方面因素。但是对于客户节点数量,则没有限制。
数据中心中的所有节点都会参数gossip protocol. 也就是说包括数据中心中所有的节点。这样做有几个目的,首先, 无需给客户节点配置服务节点地址,就可以自动发现。其次,失效节点检测是分布式的,相对于心跳检测模式更具伸缩性。最后,事件分发是以消息模式分发处理的。
节点之间利用Raft协议选举领导者,领导者负责处理所有的查询和事务请求。同时根据Gossip协议,事务请求需要分发到所有的协议节点。所有当一个非领导者服务节点收到一个Rpc请求时,它会将其转发至集群领导者进行后续处理。
服务节点同时也是WAN gossip pool的一部分。相对于LAN pool,WAN pool是专门为高延迟因特网而优化使用的,它只包含服务节点,提供数据中心之间低接触式发现机制。它支持跨数据中心请求,当一个数据中心接到请求其它数据中心数据的请求时,它会将其转发至目标数据中心中随机的一个服务节点。
由此,大大的降低了数据中心的耦合度。但是,因为有相应的失败检测,连接缓存和复用,数据中心之间的交互也相对快捷可靠。
通常来说,数据中心之间是不进行数据交换的,当一个数据中心接收到一个请求其它数据中心资源的请求时,它会将其进行转发,由相应的数据中心进行处理。当目标数据中心不可用,也就意味着所请求的资源不可用。但也有一些特俗情况,会造成数据的分发,如,consul的内置ACL replication功能,及其它相关的外部工具。
Consul 架构(译)的更多相关文章
- 【DB宝45】MySQL高可用之MGR+Consul架构部署
目录 一.MGR+Consul架构简介 二.搭建MGR 2.1.申请3台MGR机器 2.2.3台主机安装MySQL环境 2.3.修改MySQL参数 2.4.重启MySQL环境 2.5.安装MGR插件( ...
- 【Consul】Consul架构-Session会话
Consul提供session会话机制--可以用于构建分布式锁,session可以绑定到节点.健康检查.KV数据.目的是提供颗粒锁--受 The Chubby LockService for Loos ...
- 【Consul】Consul架构-Gossip协议
Consul使用gossip协议管理成员关系.广播消息到整个集群.详情可参考Serf library,Serf使用到的gossip协议可以参阅"SWIM: Scalable Weakly-c ...
- 【Consul】Consul架构-Consensus协议
Consul使用Consensus协议提供一致性(Consistency)--CAP定义的一致性.Consensus协议是基于"Raft:In search of an Understand ...
- 基于Consul的数据库高可用架构
几个月没有更新博客了,已经长草了,特意来除草.本次主要分享如何利用consul来实现redis以及mysql的高可用.以前的公司mysql是单机单实例,高可用MHA加vip就能搞定,新公司mysql是 ...
- 基于Consul的数据库高可用架构【转】
几个月没有更新博客了,已经长草了,特意来除草.本次主要分享如何利用consul来实现redis以及mysql的高可用.以前的公司mysql是单机单实例,高可用MHA加vip就能搞定,新公司mysql是 ...
- Consul
1. 什么是consul? 是一个服务管理软件. 支持多数据中心下,分布式高可用的,服务发现和配置共享. consul支持健康检查,允许存储键值对. 一致性协议采用 Raft 算法,用来保证服务的高可 ...
- 基于 Consul 的 Docker Swarm 服务发现
Docker 是一种新型的虚拟化技术,它的目标在于实现轻量级操作系统的虚拟化.相比传统的虚拟化方案,Docker 虚拟化技术有一些很明显的优势:启动容器的速度明显快于传统虚拟化技术,同时创建一台虚拟机 ...
- 【Consul】CONSUL调研
[Consul]CONSUL调研 2016年08月18日 18:31:53 YoungerChina 阅读数:1962更多 所属专栏: Consul修炼 版权声明:原创不易,转载请注明出处! ht ...
随机推荐
- PHP过滤
1.过滤是不是URL(后台过滤) $url = "https://www.baidu.com"; if(!filter_var($url,FILTER_VALIDATE_URL)) ...
- [整理记录备忘] Docker相关
docker安装 linux上安装Docker(非常简单的安装方法) https://blog.csdn.net/qq_36892341/article/details/73918672 修改dock ...
- (转)python类class中_init_函数以及参数self的简单解释
1)_init_函数(方法) #-*- encoding:utf-8 -*- class NewClass(object): def __init__(self,name): print self s ...
- f-stack中nginx配置后make出现error: ignoring return value of ‘ftruncate’
问题 Nginx 配置后 make 出现error: src/os/unix/ngx_process_cycle.c: In function 'ngx_start_worker_processes' ...
- Apache 各启动方式的差别
apachectl 调用 $httpd -k 1. kill - TERM `cat /usr/local/apache/logs/http.pid` 2. /bin/httpd -k stop/s ...
- iOS:多媒体(18-01-25更)
1.音频 2.视频 1. 2.AVPlayer 1.音频 2.视频 1. 2.AVPlayer 0).写在前面 AVPlayer 主要包含 AVPlayer.AVPlayerItem.AVPlayer ...
- 清理 Xcode 10 记录
1,清理 ~/Library/Developer/CoreSimulator/Devices 说明:该目录存放当前的所有模拟器,每个标识符代表一台机器,清理掉避免存在旧版本的模拟器缓存 执行: 关闭模 ...
- Java接口和抽象类详解
父类定义了相关子类的共有属性和行为.而接口可以定义类的共同行为(包括非相关的类). 了解接口前,先来说说抽象类.抽象类介乎于普通类和接口之间,提供部分实现方法以及未实现方法,可以看作为一个半成品. 抽 ...
- JavaScript变量类型检测总结
JavaScript中的变量类型: 基本类型值:Undefined,Null,Boolean,Number和String. 按值访问(可直接操作保存在变量中的变量值): 复制规则:当复制基本类型值时: ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 021-024
忙疯警告,这两天可能进度很慢,下午打了一下午训练赛,训练赛的题我就不拿过来的,pta就做了一点点,明天又是满课的一天,所以进度很慢啦~ -------------------------------- ...