=============================
consul 是什么
=============================
consul 是 HashiCorp 公司推出的开源工具, 该公司另一个有名的产品是 Vargrant. 用于实现分布式系统的服务发现和配置, 具体功能有:
1. 提供KV安全存储, 这点和Zookeeper一样, 可用于Leader选举, 分布式事务协调的够等功能. KV存储的API是基于 http.
2. 提供服务发现功能, 服务提供方可以将自己注册到 consul 上, 服务使用方可以通过 consul 查询到服务提供方. 服务注册基于Http, 服务发现提供http和DNS两种方式.
3. 自带健康机制, consul客户端提供多种不同的健康检查方案, 比如web服务是否500了, 服务方所在机器内存是否超过90%了.
4. 多数据中心(data center)支持, 这点和 Cassandra 很像, 多个数据中心的不同consul集群, 可以通过网络连在一起, 具体实现方式是, 某个consul server可以加到本地和远端两个数据中心的consul 集群中.
5. 自带一个web UI.

consul 的特点:
Consul由 Go 语言实现, 天然跨平台, 可在Windows/Linux/Mac上运行, consul 软件只有一个可执行文件, 使用非常方便.
consul 经常和ZooKeeper被放在一起比较:

组件名 一致性的算法 数据中心 可视化的页面 提供接口方式 健康检查方式 做业务进程的主备选举
zookeeper Paxos 支持单个 no TCP 对业务 有 侵入 自带,可靠
consul Raft 支持多个 WebUI HTTP/DNS 对业务 无 侵入

借助会话和kv操作,不可靠,

会话过期会导致多主,需要续签

所以 :
1. 做配置管理/健康检查, consul 优于 zookeeper, consul 包含了很多典型应用场景, 开箱即用.  
2. 做主备选举, zookeeper 优于 consul

=============================
consul 架构
=============================
在了解consul架构之前, 先解释一下consul的几个术语:
1. agent, consul 的 agent分为两类, 分别是 server 和 client. agent 是一个守护进程.
2. client 类的 agent, client agent 负责转发所有consul请求到server端, 同server类agent相比, client agent非常轻量级, 但从集群的外部看, client节点的作用和server节点一样, 我们可以通过该client获取consul 集群的http/dns服务. 官方文档讲, 一个集群中client节点的数量较多, 而server节点较少, 所以可以推断client节点的作用承接各种来自于集群外部的请求, 来分担server节点的压力. 
3. server 类的 agent, server agent 除了和其他agent通讯外, 还需要将所有数据持久化到本地. 生产环境中, 一个数据中心会有3~5 个server, server越多, 写的效率越差.
4. leader server 类的 agent, leader 是一个特殊的 server 节点, 它是 Raft 协议中的 leader, 除了承担一般server的职责, 还负责维护各个server的健康检查, 同步注册信息给其他server, 负责和远端数据中心的consul集群通讯.
5. 服务发现协议, consul支持http和dns两种协议, etcd只支持http.

===================
consul 端口
===================
consul 内部会使用很多端口, 理解这些端口对于理解consul架构和功能很有帮助.

===================
参考
===================
https://340starobserver.github.io/2018/03/08/Consul-Cluster/
http://www.liangxiansen.cn/2017/04/06/consul/
https://deepzz.com/post/the-consul-of-discovery-and-configure-services.html
https://www.jianshu.com/p/54011be847b2

consul - 基础的更多相关文章

  1. 【转】.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现

    作者:Zhang_Xiang 原文地址:.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发 ...

  2. .NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现

    先决条件 关于 Ocelot 针对使用 .NET 开发微服务架构或者面向服务架构提供一个统一访问系统的组件. 参考 本文将使用 Ocelot 构建统一入口的 Gateway. 关于 IdentityS ...

  3. Spring Cloud:Consul基础知识

    一.基本概念 Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go开发. 它提供微服务系统中的服务治理.配置中心.控制总线等功能. 服务发现:提供HTTP和DNS两种发 ...

  4. Mac OS、Ubuntu 安装及使用 Consul

    Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...

  5. .NET Core微服务之基于Consul实现服务治理

    Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Consul基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发 ...

  6. NET Core + Ocelot + IdentityServer4 + Consul

    .NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发微服务架构或者面向服务架构提供一个统一访 ...

  7. Consul实现服务治理

    .NET Core微服务之基于Consul实现服务治理 https://www.cnblogs.com/edisonchou/p/9124985.html 一.Consul基础介绍 Consul是Ha ...

  8. Confd+Consul 动态生成配置文件

    一.Consul安装和配置 1.consul是什么? consul是HashiCorp公司推出的一款工具,主要用于实现分布式系统的服务发现与配置,它提供了以下几个关键特性: 服务发现:Consul客户 ...

  9. 学习搭建 Consul 服务发现与服务网格-有丰富的示例和图片

    目录 第一部分:Consul 基础 1,Consul 介绍 2,安装 Consul Ubuntu/Debian 系统 Centos/RHEL 系统 检查安装 3,运行 Consul Agent 启动 ...

随机推荐

  1. 【BZOJ2125】最短路(仙人掌,圆方树)

    [BZOJ2125]最短路(仙人掌,圆方树) 题面 BZOJ 求仙人掌上两点间的最短路 题解 终于要构建圆方树啦 首先构建出圆方树,因为是仙人掌,和一般图可以稍微的不一样 直接\(tarjan\)缩点 ...

  2. CF1139D Steps to One(DP,莫比乌斯反演,质因数分解)

    stm这是div2的D题……我要对不住我这个紫名了…… 题目链接:CF原网  洛谷 题目大意:有个一开始为空的序列.每次操作会往序列最后加一个 $1$ 到 $m$ 的随机整数.当整个序列的 $\gcd ...

  3. 前端基础-- CSS

    CSS知识 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染).Css之车更丰富的文档外 ...

  4. 如何在jsp中引入bootstrap

    如何在jsp中引入bootstrap包: 1.首先在http://getbootstrap.com/上下载Bootstrap的最新版. 您会看到两个按钮: Download Bootstrap:下载 ...

  5. 绝对音乐No.1

    最近儿子在练天空之城钢琴曲.为了方便他听久石让的原版,绝对做张cd.另外加入了自己比较喜欢的几首乐曲.在家音响上聆听时发现,不管是中国乐曲,还是西洋乐,都很美,耳朵都出油了.放到网盘供喜爱之人欣赏,喜 ...

  6. 如何刻录cd音乐

    用nero,选择cd,音乐光盘(第一个)可以添加入wav,MP3等.刻录即可.

  7. Spring Boot 1.X和2.X优雅重启实战

    纯洁的微笑 今天 项目在重新发布的过程中,如果有的请求时间比较长,还没执行完成,此时重启的话就会导致请求中断,影响业务功能,优雅重启可以保证在停止的时候,不接收外部的新的请求,等待未完成的请求执行完成 ...

  8. A1046. Shortest Distance

    The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed t ...

  9. ASP.NET MVC什么时候使用异步Action

    在没有使用异步Action之前,在Action内,比如有如下的写法: public ActionResult Index() CustomerHelper cHelper = new Customer ...

  10. 数据库日志redo和undo

    数据库的ACID属性 Atomicity:原子性,以事物transact为最小单位,事物中的所有操作,要么都执行完,要么都不执行,不存在一部分操作执行,另一部分操作不执行的情况. Consistenc ...