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 ...
随机推荐
- C语言函数指针 和 OC-Block
C语言函数指针 和 OC-Block 一. C语言函数指针 关于函数指针的知识详细可参考:http://www.cnblogs.com/mjios/archive/2013/03/19/2967037 ...
- Angular动态表单生成(一)
好久不写博客了,手都生了,趁着最近老大让我研究动态表单生成的时机,撸一发博客~~ 开源项目比较 老大丢给我了两个比较不错的开源的动态表单生成工具,这两个项目在github上的star数量基本持平: h ...
- 前端css小米导航栏设置及盒子定位居中问题
1.小米最上部导航栏设置 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 协议类接口 - NAND
一.引脚的含义 先看下nand flash是怎么接的,如下所示便为某一款nand存储芯片的引脚图.发现其连地址信号都没有.那么是如何访问地址数据的呢? 查阅该nand flash的数据手册可得其各个引 ...
- Java中的集合框架-Map
前两篇<Java中的集合框架-Commection(一)>和<Java中的集合框架-Commection(二)>把集合框架中的Collection开发常用知识点作了一下记录,从 ...
- oracle的sys和system的默认密码
oracle的sys和system默认密码system默认:manager sys默认:change_on_install使用PL/SQL Plus登录数据库时,system用户使用密码manager ...
- 通达信k线颜色设置
通达信的k线函数没有颜色选项.如果想要画颜色可以使用STICKLINE函数来覆盖当前k线这样也是可以满足需求. 第一步画针 STICKLINE(条件 , L , H , 0 , 0 ) , 颜色; 第 ...
- #leetcode刷题之路22-括号生成
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合. 例如,给出 n = 3,生成结果为:[ "((()))", "(()())&q ...
- Ubuntu修改桌面为Desktop
想用中文系统,却不想用中文文件夹,可以用以下方法: 先把home路径下的桌面文件夹修改为Desktop 然后在命令行输入 nano ~/.config/user-dirs.dirs 修改后ctrl - ...
- VS Code 的常用快捷键及插件(前端)
一.vs code 的常用快捷键 1.注释: a) 单行注释:[ctrl+k,ctrl+c] 或 ctrl+/ b) 取消单行注释:[ctrl+k,ctrl+u] (按下ctrl不放,再按k + u) ...