了解 etcd

本文主要介绍 etcd 能解决什么问题,哪些大型项目使用了 etcd,以及 etcd 社区的情况。

初识 etcd

我是在一个项目文档上看到 etcd 的,当时还不了解 etcd 是做什么的。

看到 etcd 这个名字的时候我就在想,为什么叫 etcd 呢?好眼熟啊,etcd 拆分一下就是 etc 和 d,etc 不由得让我联想到了 Linux,在 Linux 系统中 etc 文件夹下通常放配置相关的文件,那么 d 呢?d 是什么意思?

查阅了 etcd 的官方文档,发现 d 代表 distributed。

"etcd"这个名字源于两个想法,即 unix "/etc" 文件夹和分布式系统"d"istributed。 "/etc" 文件夹为单个系统存储配置数据的地方,而 etcd 存储大规模分布式系统的配置信息。因此,"d"istributed。 的 "/etc" ,是为 "etcd"。

原来如此。

etcd 的功能

etcd 是一个基于Raft 算法分布式键值对存储,用来保存关键数据并提供访问。

Raft 算法是分布式系统中非常经典的一个算法,Raft 算法能解决分布式系统中选主、同步、一致性等问题,更多请查阅 Raft 算法

所以 etcd 除了存储以外,还能提供选主、同步等一系列功能,可以使用 etcd 做服务注册与发现、消息订阅发布、协调分布式工作等。

能够解决分布式常见问题的工具不止 etcd,还有 ZooKeeper、Consul,以下是 etcd、ZooKeeper、Consul 的对比.(来自 etcd 文档)

了解 etcd_第1张图片

在了解 etcd 的过程中发现,K8S、TiCDC、Apache APISIX 都用到了 etcd。

Kubernetes

Kubernetes 将配置数据存储到 etcd 中,用于服务发现和集群管理;etcd 的一致性对于正确调度和操作服务至关重要。Kubernetes API 服务器将集群状态持久化到 etcd 中。它使用 etcd 的 watch API 来监控集群并推出关键的配置更改。

TiCDC

TiCDC 是一款通过拉取 TiKV 变更日志实现的 TiDB 增量数据同步工具,具有将数据还原到与上游任意 TSO 一致状态的能力,同时提供开放数据协议 (TiCDC Open Protocol),支持其他系统订阅数据变更。

了解 etcd_第2张图片

架构中的 PD 是使用 etcd 实现高可用。更多请查阅TiCDC 文档

Apache APISIX

Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

了解 etcd_第3张图片

架构中使用 etcd 做配置存储,实现动态扩容等。更多请查阅Apache APISIX 文档

etcd 社区

etcd 是一个开源项目,最后聊聊 etcd 的社区。

了解 etcd_第4张图片

etcd 目前最新版本是 v3.5.0,通过 Github 上 Insights 看板发现社区并不活跃,近一个月只合并了 13 个 PR,开放的 issue 有 150+,大多是 bug 等反馈,处理速度也比较慢。

2019 年 ~ 2020 年还开放了社区会议,不过目前没有更新了。

总的来说 etcd 社区并不活跃。

总结

对 etcd 有了初步的认识,了解了 etcd 能解决什么问题,哪些大型项目使用了 etcd,以及 etcd 社区的情况。

你可能感兴趣的:(后端etcd分布式)