Consul用来做什么?Consul的使用场景

Consul是一个支持多数据中心分布式高可用的服务发现和配置共享的服务软件,Consul用来做什么?码笔记分享Consul的使用场景及Consul优势:

什么是Consul

Consul是HashiCorp公司推出的开源工具,Consul是分布式的、高可用的、 可横向扩展的用于实现分布式系统的服务发现与配置。

  • Consul官网:https://www.consul.io/
  • 服务发现:Consul提供了通过DNS或者HTTP接口的方式来注册服务和发现服务。一些外部的服务通过Consul很容易的找到它所依赖的服务。
  • 健康检测:Consul的Client提供了健康检查的机制,可以通过用来避免流量被转发到有故障的服务上。
  • Key/Value存储:应用程序可以根据自己的需要使用Consul提供的Key/Value存储。 Consul提供了简单易用的HTTP接口,结合其他工具可以实现动态配置、功能标记、领袖选举等等功能。
  • 多数据中心:Consul支持开箱即用的多数据中心. 这意味着用户不需要担心需要建立额外的抽象层让业务扩展到多个区域。
  • Consul的使用场景

    Consul的应用场景包括服务发现、服务隔离、服务配置:

  • 服务发现场景中consul作为注册中心,服务地址被注册到consul中以后,可以使用consul提供的dns、http接口查询,consul支持health check。
  • 服务隔离场景中consul支持以服务为单位设置访问策略,能同时支持经典的平台和新兴的平台,支持tls证书分发,service-to-service加密。
  • 服务配置场景中consul提供key-value数据存储功能,并且能将变动迅速地通知出去,通过工具consul-template可以更方便地实时渲染配置文件。
  • 比如:docker实例的注册与配置共享、coreos实例的注册与配置共享、vitess集群、SaaS应用的配置共享、Consul与confd服务集成,动态生成nginx和haproxy配置文件或者Consul结合nginx构建高可用可扩展的Web服务。

    Consul架构图

    Consul架构图

    Consul架构图

  • Consul Cluster由部署和运行了Consul Agent的节点组成,在Cluster中有两种角色Server和Client;
  • Server和Client的角色和Consul Cluster上运行的应用服务无关,是基于Consul层面的一种角色划分;
  • Consul Server:用于维护Consul Cluster的状态信息。官方建议至少要运行3个或者3个以上的Consul Server。 多个server之中需要选举一个leader,这个选举过程Consul基于Raft协议实现,多个Server节点上的Consul数据信息保持强一致性。在局域网内与本地客户端通讯,通过广域网与其他数据中心通讯;
  • Consul Client:只维护自身的状态, 并将HTTP和DNS接口请求转发给服务端。
  • Consul的优势

  • Consul使用Raft算法来保证一致性,比复杂的Paxos算法更直接,相比较而言zookeeper采用的是Paxos,而etcd使用的则是Raft;
  • Consul支持多数据中心,内外网的服务采用不同的端口进行监听,多数据中心集群可以避免单数据中心的单点故障,而其部署则需要考虑网络延迟、分片等情况等。zookeeper和etcd均不提供多数据中心功能的支持;
  • Consul支持健康检查,etcd不提供此功能;
  • Consul支持http和dns协议接口,zookeeper的集成较为复杂,etcd只支持http协议;
  • Consul官方提供web管理界面,etcd无此功能。
  • 2024年云服务器租用优惠价格,9月最新: