Consul - 简介

Consul 是一个基于 Hashicorp 的工具,用于发现和配置您基础设施中的各种不同服务。它基于 Golang 并建立在 Golang 之上。构建 Consul 的核心原因之一是维护分布式系统中现有的服务。Consul 提供的一些重要功能如下。

  • 服务发现 − 使用 DNS 或 HTTP,应用程序可以轻松找到它们所依赖的服务。

  • 健康检查状态 − 它可以提供任意数量的健康检查。服务发现组件使用它来将流量从不健康的主机路由出去。

  • 键/值存储 −它可以利用 Consul 的分层键/值存储来实现许多目的,包括动态配置、功能标记、协调、领导者选举等。

  • 多数据中心部署 − Consul 支持多个数据中心。它用于构建额外的抽象层以扩展到多个区域。

  • Web UI − Consul 为其用户提供了一个漂亮的 Web 界面,使用该界面可以轻松使用和管理 consul 中的所有功能。

服务发现

服务发现是 Consul 最重要的功能之一。它被定义为检测不同的服务和网络协议,使用它们可以找到服务。服务发现的使用对分布式系统来说是一种福音。这是当今大型行业面临的主要问题之一,因为其环境中的分布式系统正在不断进步。

与 Etcd 和 Zookeeper 的比较

当我们查看此领域的其他服务发现工具时,我们有两个流行的选择。软件行业的一些主要参与者过去一直在使用它。这些工具是 EtcdZookeeper

让我们考虑下表,以比较每个工具的不同方面。我们还将了解它们每个在内部使用的内容。

属性 Consul Etcd Zoo Keeper
用户界面 可用
RPC 可用 可用
健康检查 HTTP API HTTP API TCP
键值 3种一致性模式 良好一致性 强一致性
Token系统 可用
语言 Golang Golang Java

Consul - 成员和代理

Consul 成员可以定义为部署 consul 集群所使用的不同代理和服务器模式的列表。Consul 为我们提供了一个命令行功能,使用该功能我们可以轻松列出与 consul 关联的所有代理。

Consul 代理是 Consul 的核心进程。代理维护成员信息、注册服务、运行检查、响应查询等。任何代理都可以在以下两种模式之一中运行:客户端服务器。可以根据使用 consul 时决定的角色使用这两种模式。consul 代理通过向我们提供信息来提供帮助,信息列在下面。

  • 节点名称 − 这是机器的主机名。

  • 数据中心 − 代理配置为在其中运行的数据中心。每个节点都必须配置为向其数据中心报告。

  • 服务器 − 它指示代理是在服务器模式还是客户端模式下运行。服务器节点参与共识仲裁,存储集群状态并处理查询。

  • 客户端地址 − 这是代理用于客户端接口的地址。它包括 HTTP、DNS 和 RPC 接口的端口。

  • Cluster Addr − 它是用于集群中 Consul Agent 之间通信的地址和端口集。此地址必须可供所有其他节点访问。

在下一章中,我们将了解 Consul 的架构。