etcd 简介与应用场景 etcd 是一个使用 Go 语言开发的开源、高可用的分布式 key-value 存储系统,可以用于配置共享和服务的注册和发现。类似项目有 ZooKeeper 和 Consul。etcd 具有以下特点: 1. 完全复制:集群中的每个节点都可以使用完整的存档 2. 高可用性:Etcd 可用于避免硬件的单点故障或网络问题 3. 一致性:每次读取都会返回跨多主机的最新写入 4. 简单:包括一个定义良好、面向用户的 API(gRPC) 5. 安全:实现了带有可选的客户端证书身份验证的自动化 TLS 6. 快速:每秒 10000 次写入的基准速度 7. 可靠:使用 Raft 算法实现了强一致、高可用的服务存储目录 etcd 的应用场景包括: 1. 服务发现:解决分布式系统中最常见的问题之一,即在同一个分布式集群中的进程或服务,要如何才能找到对方并建立连接。 2. 配置中心:将一些配置信息放到 etcd 上进行集中管理。 3. 分布式锁:因为 etcd 使用 Raft 算法保持了数据的强一致性,某次操作存储到集群中的值必然是全局一致的,所以很容易实现分布式锁。 为什么选择 etcd 而不是 ZooKeeper?etcd 实现的这些功能,ZooKeeper 都能实现。然而,ZooKeeper 有以下缺点: 1. 复杂:ZooKeeper 的部署维护复杂,管理员需要掌握一系列的知识和技能。 2. Java 编写:ZooKeeper 是使用 Java 编写的,而 Java 本身就偏向于重型应用,它会引入大量的依赖。 3. 发展缓慢:Apache 基金会项目特有的“Apache Way”在开源界饱受争议,其中一大原因就是由于基金会庞大的结构以及松散的管理导致项目发展缓慢。 相比之下,etcd 的优点明显: 1. 简单:使用 Go 语言编写部署简单;使用 HTTP 作为接口使用简单;使用 Raft 算法保证强一致性让用户易于理解。 2. 数据持久化:etcd 默认数据一更新就进行持久化。 3. 安全:etcd 支持 SSL 客户端安全认证。 etcd 的架构主要分为四个部分: 1. HTTP Server:用于处理用户发送的 API 请求以及其它 etcd 节点的同步与心跳信息请求。 2. Store:用于处理 etcd 支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是 etcd 对用户提供的大多数 API 功能的具体实现。 3. Raft:Raft 强一致性算法的具体实现,是 etcd 的核心。 4. WAL:Write Ahead Log(预写式日志),是 etcd 的数据存储方式。 etcd 是一个值得尝试的项目,已经在生产环境中使用的知名项目包括 CoreOS、Kubernetes 和 CloudFoundry 等。
剩余7页未读,继续阅读
- 粉丝: 7
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于Spring Boot和Vue的后台管理系统.zip
- 用于将 Power BI 嵌入到您的应用中的 JavaScript 库 查看文档网站和 Wiki 了解更多信息 .zip
- (源码)基于Arduino、Python和Web技术的太阳能监控数据管理系统.zip
- (源码)基于Arduino的CAN总线传感器与执行器通信系统.zip
- (源码)基于C++的智能电力系统通信协议实现.zip
- 用于 Java 的 JSON-RPC.zip
- 用 JavaScript 重新实现计算机科学.zip
- (源码)基于PythonOpenCVYOLOv5DeepSort的猕猴桃自动计数系统.zip
- 用 JavaScript 编写的贪吃蛇游戏 .zip
- (源码)基于ASP.NET Core的美术课程管理系统.zip