consul - 基础
=============================
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 - 基础的更多相关文章
- 【转】.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现
作者:Zhang_Xiang 原文地址:.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发 ...
- .NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现
先决条件 关于 Ocelot 针对使用 .NET 开发微服务架构或者面向服务架构提供一个统一访问系统的组件. 参考 本文将使用 Ocelot 构建统一入口的 Gateway. 关于 IdentityS ...
- Spring Cloud:Consul基础知识
一.基本概念 Consul是一套开源的分布式服务发现和配置管理系统,由HashiCorp公司用Go开发. 它提供微服务系统中的服务治理.配置中心.控制总线等功能. 服务发现:提供HTTP和DNS两种发 ...
- Mac OS、Ubuntu 安装及使用 Consul
Consul 概念(摘录): Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发现的方案,比如 Airbnb 的 SmartStac ...
- .NET Core微服务之基于Consul实现服务治理
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Consul基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发 ...
- NET Core + Ocelot + IdentityServer4 + Consul
.NET Core + Ocelot + IdentityServer4 + Consul 基础架构实现 先决条件 关于 Ocelot 针对使用 .NET 开发微服务架构或者面向服务架构提供一个统一访 ...
- Consul实现服务治理
.NET Core微服务之基于Consul实现服务治理 https://www.cnblogs.com/edisonchou/p/9124985.html 一.Consul基础介绍 Consul是Ha ...
- Confd+Consul 动态生成配置文件
一.Consul安装和配置 1.consul是什么? consul是HashiCorp公司推出的一款工具,主要用于实现分布式系统的服务发现与配置,它提供了以下几个关键特性: 服务发现:Consul客户 ...
- 学习搭建 Consul 服务发现与服务网格-有丰富的示例和图片
目录 第一部分:Consul 基础 1,Consul 介绍 2,安装 Consul Ubuntu/Debian 系统 Centos/RHEL 系统 检查安装 3,运行 Consul Agent 启动 ...
随机推荐
- mailkit库收发邮件
mailkit库用于收发邮件.这个库可以替代C#自带的发邮件库 环境 W10 / VS2017CMMT / MailKit version="2.0.3" "net46 ...
- [Vani有约会]雨天的尾巴(树上差分+线段树合并)
首先村落里的一共有n座房屋,并形成一个树状结构.然后救济粮分m次发放,每次选择两个房屋(x,y),然后对于x到y的路径上(含x和y)每座房子里发放一袋z类型的救济粮. 然后深绘里想知道,当所有的救济粮 ...
- [SDOI2011]消防
某个国家有n个城市,这n个城市中任意两个都连通且有唯一一条路径,每条连通两个城市的道路的长度为zi(zi<=1000). 这个国家的人对火焰有超越宇宙的热情,所以这个国家最兴旺的行业是消防业.由 ...
- 让Mac 可以使用mysql -u用户直接连接数据库
在执行完安装版本的mysql数据库后,会发现执行mysql还是会出现 command not found的错误:解决方案 方案1.设置软连接到/usr/local/bin下在命令行下输入如下 ln - ...
- Java io概述
内容来源:http://ifeve.com/java-io/ Java IO 概述 输入流可以理解为向内存输入,输出流可以理解为从内存输出 Java的IO包主要关注的是从原始数据源的读取以及输出原始数 ...
- 第二篇:用Android Studio编写Hello World
将Android Studio的环境搭建好后,第一个写Hello World测试程序.Android Studio v3.2.1. 一.新建工程 点击Start a new Android Studi ...
- c#两个listbox怎么把内容添加到另外个listbox
https://bbs.csdn.net/topics/392156324?page=1 public partial class Form1 : Form { public ...
- Doing Homework HDU - 1074 (状压dp)
Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Every ...
- 牛客网 2018年东北农业大学春季校赛 L题 wyh的天鹅
链接:https://www.nowcoder.com/acm/contest/93/L来源:牛客网 时间限制:C/C++ 3秒,其他语言6秒空间限制:C/C++ 262144K,其他语言524288 ...
- ES6(promise)_解决回调地狱初体验
一.前言 通过这个例子对promise解决回调地狱问题有一个初步理解. 二.主要内容 1.回调地狱:如下图所示,一个回调函数里面嵌套一个回调函数,这样的代码可读性较低也比较恶心 2.下面用一个简单的例 ...