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 启动 ...
随机推荐
- 洛谷CF1071E Rain Protection(计算几何,闵可夫斯基和,凸包,二分答案)
洛谷题目传送门 CF题目传送门 对于这题,我无力吐槽. 虽然式子还是不难想,做法也随便口胡,但是一些鬼畜边界情况就是判不对. 首先显然二分答案. 对于每一个雨滴,它出现的时刻我们的绳子必须落在它上面. ...
- 自学Python之路-Python并发编程+数据库+前端
自学Python之路-Python并发编程+数据库+前端 自学Python之路[第一回]:1.11.2 1.3
- [luogu2446][bzoj2037][SDOI2008]Sue的小球【区间DP】
分析 简单区间DP, 定义状态f[i][j][0/1]为取完i-j的小球最后取i/j上的小球所能获得的最大价值. 排序转移. ac代码 #include <bits/stdc++.h> # ...
- LOJ#6283. 数列分块入门 7
对于每个区间先乘在加,如果我修改的是部分的块,我就需要把现这个块的add和mul标记全部放下去,然后再更新. #include<map> #include<set> #incl ...
- shell中的source和直接执行sh的区别
首先我们知道我们执行shell有这么几种方法 1. sh/bash使用其内置的命令集来执行一些命令,例如如下 sh demo.sh bash demo.sh 2. 使用./或者/$SHELLPATH/ ...
- Python中字符串、列表、元组、字典、集合常用方法总结
- 编写高质量代码:改善Java程序的151个建议 --[0~25]
警惕自增的陷阱 public class Client7 { public static void main(String[] args) { int count=0; for(int i=0; i& ...
- js jquery数组去重
数组去重建议直接使用jquery的 $.unique(arr);方法,此外比较好的方法是本文中的unique3方法比较快用了一个hash表,就是所谓的空间换时间.本文还提供了很多其他写法,都是大同小异 ...
- 洛谷P3959 宝藏
去年NOIP第二毒瘤(并不)的题终于被我攻克了,接下来就只剩noip难度巅峰列队了. 首先说一下三种做法:随机化,状压DP和搜索. 前两种做法我都A了,搜索实在是毒瘤,写鬼啊. 有些带DFS的记忆化搜 ...
- A1094. The Largest Generation
A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level bel ...