总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
一、功能简介
1、什么是etcd
etcd 是一个分布式、可靠的键值存储系统,用于分布式系统中存储关键核心数据。它由 CoreOS 开发,并且是开源的,授权协议为 Apache 许可证。etcd 内部采用了 Raft 一致性算法,可以实现配置共享和服务发现。 etcd中文文档可参考如下:Etcd 中文文档或者Etcd官方文档中文版。
2、etcd 的主要特性包括:
1、简单:安装配置简单,提供了 HTTP API 进行交互,使用也很简单。
2、键值对存储:将数据存储在分层组织的目录中,类似于标准文件系统。
3、监控变更:可以监视特定的键或目录以检测更改,并对值的更改作出反应。
4、 支持TLS客户端安全认证。
5、性能:单实例(V3)支持每秒10KQps。
6、可靠: 使用 Raft 算法充分保证了分布式系统数据的强一致性。
7、默认情况下,etcd 会将数据更新持久化到磁盘上。
8、使用 Go 语言编写,易于部署和维护。
3、典型应用场景:
1. 服务注册与发现:在微服务架构中,etcd 可以作为服务发现的服务注册中心。
2. 配置管理:存储和管理应用程序的配置信息。
3. 消息发布与订阅:使用 etcd 的 watch 机制来实现消息的发布与订阅模式。
4. 分布式通知与协调:用于在分布式系统中实现通知和协调逻辑。
5. 分布式锁:利用 etcd 实现分布式锁,确保分布式系统中资源的互斥访问。
4、有2个著名开源项目使用etcd
1、Kubernetes (K8s):Kubernetes 使用 etcd 作为其核心存储系统,用于存储集群的状态信息,如节点、Pods、Services、Volumes 等。Kubernetes 依赖 etcd 来保证其状态的一致性和高可用性。
2、CoreDNS: CoreDNS 是一个灵活且可扩展的 DNS 服务器,它使用 etcd 作为数据存储后端之一。CoreDNS 可以通过 etcd 插件来实现动态的 DNS 记录更新。
5、etcd、Zookeeper 和 Consul对比
特性/工具 | etcd | zookeeper | Consul |
---|---|---|---|
一致性模型 | 强一致性 (Raft) | 强一致性 (ZAB) | 最终一致性 (可配置为强一致性) |
扩展性 | 良好,适合大量键值对 | 良好,但在大量数据时可能遇到性能瓶颈 | 可能遭受高延迟和内存压力 |
功能和易用性 | API 简洁,易于使用 | 功能强大,支持多种高级特性 | API 设计友好,易于集成 |
服务发现 | 支持服务发现 | 支持服务发现 | 专门设计用于服务发现 |
健康检查 | 不直接支持 | 不直接支持 | 支持健康检查 |
安全性 | 支持客户端证书验证 | 支持安全配置 | 支持 TLS 和 ACLs |
多数据中心 | 支持多数据中心配置 | 支持多数据中心配置 | 原生支持多数据中心配置 |
语言和生态 | 使用 Go 语言,广泛的客户端库支持 | 使用 Java 编写,适合 Java 应用程序 | 使用 Go 语言,支持多种语言的客户端库 |
社区和生态 | 活跃的社区,是 Kubernetes 的一部分 | 历史悠久,庞大的用户基础 | 良好的文档和社区支持 |
性能 | 在处理大量键值对时表现出色 | 在某些场景下提供了更好的最小延迟 | 性能取决于使用场景 |
使用场景 | 配置管理、服务注册和发现等场景 | 复杂协调服务 | 服务发现、健康检查和配置管理等场景 |
二、部署说明
1、环境信息
主机IP | 节点 | 操作系统 | 内核版本 | etcd版本 | 服务启动用户 |
---|---|---|---|---|---|
192.168.1.111 | etcd-1 | Kylin Linux Advanced Server V10 (Tercel) | 4.19.90-17.5.ky10.aarch64 | 3.5.15 | etcd |
192.168.1.112 |