9 月 14 日, Hashicorp 发布了其开源分布式服务发现和配置工具 Consul 的 0.7 版本。该版本号称是一个“非常重大的版本”,引入了键 / 值更新事务、跨数据中心复制 ACL,并改进了其 Raft 和 Gossip 协议实现,优化了相应的计时方式。
Consul 已经成为现代分布式应用程序和数据中心的重要组成部分。据 Hashicorp 介绍,“这个版本的重点是简化 Consul 集群操作,为未来版本不断地改善操作打下重要的基础。”变更日志列出了该版本带来的特性、改进和 Bug 修复,下面是其中一些最重要的变化。
原子键 / 值更新
新的 /v1/txn 端点可以在单个原子事务中处理 Consul 键 / 值配置数据存储上的多个更新。单个更新可以包含多达 64 个键 / 值操作及一系列可能的动作。除了一般的读取、设置和删除动作外,它还支持锁操作、检查和条件修改(检查 - 设置)。成组的更新被作为一个 JSON 数组传入。如果有任何操作没有成功,则整个事务都会回滚,结果和错误都通过一个数组返回。
多数据中心 ACL 复制
在多数据中心 Consul 配置中,新的 ACL 复制特性允许用户将整套的 ACL 从 ACL 数据中心同步到非授权的数据中心,防止网络分区。在 0.7 版本之前,非授权数据中心的 ACL 只是一份缓存,在 WAN 故障时可能会导致 ACL 不完整。
改进健壮性、性能和操作
-
更新后的 Raft 库改进了集群成员变化后的处理过程以及仲裁失败后的恢复过程。而且现在,默认的 Raft 计时据称在性能较低的服务器上更有效了。
-
通过一个名为 Lifeguard 特性扩展了 Gossip 协议,可以防止不能满足软实时性要求的退化节点“导致其他健康节点的 serfHealth 波动”。
-
为了重新分配查询负载,Consul 代理会定期连接可用的 Consul 服务器。
-
Consul 操作员可以使用
consul operator
命令管理 Raft 配置,如查看 Raft 配置:consul operator raft -list-peers
或者不停机手动删除对等节点中的过期服务器:
consul operator raft -remove-peer -address=“127.0.0.1:8300”
Consul 升级指南详细介绍了如何从特定的版本升级到 0.7。由于不再支持 Consul 协议 v1,所以新版本和 0.3 之前的版本是不兼容的。
在此次更新之前,Consul 今年(3 月 16 日)还增加了支持模板的预处理查询和一个官方Docker Consul 镜像。
查看英文原文: Consul 0.7 Adds Atomic K/V Updates, ACL Replication and Improved Protocol Robustness
评论