• 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

     

  • 相关阅读:
    Java中使用JTS对空间几何计算(读取WKT、距离、点在面内、长度、面积、相交等)
    Java中Thread类的常用API以及使用示例
    Vue+Leaflet.PM+Turf.js实现绘制多线段并自动生成辐射区(缓冲区)
    SpringBoot中使用Redisson分布式锁的应用场景多线程、服务、节点秒杀/抢票处理
    Turf.js(地理空间GIS分析的js库),处理地图相关算法
    Java中使用CountDownLatch实现并发流程控制
    Java中数据同步synchronized关键字与Mointor的使用
    SpringBoot+Lombok+Builder实现任意个数属性的对象构造
    【20220930】连岳摘抄
    【20220928】按自己节奏走
  • 原文地址:https://www.cnblogs.com/harrychinese/p/consul_basics.html
Copyright © 2020-2023  润新知