=============================
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. SCOI 2015 Day2 简要题解

    「SCOI2015」小凸玩密室 题意 小凸和小方相约玩密室逃脱,这个密室是一棵有 $ n $ 个节点的完全二叉树,每个节点有一个灯泡.点亮所有灯泡即可逃出密室.每个灯泡有个权值 $ A_i $,每条边 ...

  2. 自学华为IoT物联网_01 物联网概述

    点击返回自学华为IoT物流网 自学华为IoT物联网_01 物联网概述 1. 物联网的概念 百度百科: 物联网(Internet of Things),国内外普遍公认的是MIT Auto-ID中心Ash ...

  3. cf245H Queries for Number of Palindromes (manacher+dp)

    首先马拉车一遍(或者用hash),再做个前缀和处理出f[i][j]表示以j为右端点,左端点在[i,j]的回文串个数 然后设ans[i][j]是[i,j]之间的回文串个数,那就有ans[i][j]=an ...

  4. centos7使用yum安装zabbix3.4

     应用环境: 关于ZABBIX: zabbix一开强大的开源监控工具,同类型还有nagios,ganglia,cacti等监控工具,通过过去一年Google趋势就知道zabbix全球的相对热度:   ...

  5. php 限制类的对象类型

    事实上,采用哪种处理参数类型的策略,取决于任何潜在bug的严重程度.通常PHP会根据语境自动转换大多数基本数据类型. 因此,你需要在检测类型.转换类型和依赖良好清晰的文档(无论决定用哪一种,都应该提供 ...

  6. UVALive - 4225(贪心)

    题目链接:https://vjudge.net/contest/244167#problem/F 题目: Given any integer base b ≥ 2, it is well known ...

  7. A1114. Family Property

    This time, you are supposed to help us collect the data for family-owned property. Given each person ...

  8. react-native-deprecated-custom-components

    速记:从0.44版本开始,Navigator被从react native的核心组件库中剥离到了一个名为react-native-deprecated-custom-components的单独模块中. ...

  9. padding内边距

    android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/ac ...

  10. selinux 的使用

    SELinux 的启动.关闭与查看 1,并非所有的 Linux distributions 都支持 SELinux 的 目前 SELinux 支持三种模式,分别如下: •enforcing:强制模式, ...