没有合适的资源?快使用搜索试试~ 我知道了~
首页分布式系统基石-etcd.pdf
资源详情
资源推荐
[日期
]
分布式系统基石 ETCD
应用场景与实现原理
解读
Microsoft Office
用户
[公司名称
]
目录
1、简介 .......................................................................................................................................... 4
2、分布式系统 ............................................................................................................................. 4
3、为何选择 GO 实现 ................................................................................................................. 4
4、ETCD 优势(对比 ZOOKEEPER) ...................................................................................... 5
5、核心—-RAFT 协议 ................................................................................................................ 5
6、ETCD3 特性 ............................................................................................................................ 6
7、ETCD 使用场景简述 .............................................................................................................. 6
7.1 服务注册与发现 ............................................................................................................................. 6
7.1.1 服务发现三要素 ................................................................................................................... 6
7.1.2 etcd 服务发现步骤 ............................................................................................................... 7
7.1.3 服务发现具体场景之服务动态添加 ............................................................................... 8
7.1.4 服务发现具体场景之 PaaS 平台实例故障重启 .......................................................... 9
7.2 消息发布与订阅 .......................................................................................................................... 10
7.3 负载均衡 ........................................................................................................................................ 11
7.4 分布式通知与协调 ..................................................................................................................... 12
7.5 分布式锁 ........................................................................................................................................ 13
7.6 分布式队列 ................................................................................................................................... 14
7.7 集群监控与 LEADER 竞选 ........................................................................................................... 15
7.8 为什么用 ETCD 而不用 ZOOKEEPER? ................................................................................... 16
8、ETCD 实现原理 ................................................................................................................... 17
8.1 架构 ................................................................................................................................................ 17
8.2 新版 ETCD 重要变更列表 .......................................................................................................... 18
8.3 ETCD 概念词汇表 .......................................................................................................................... 19
8.4 集群化应用实践 .......................................................................................................................... 19
8.4.1 启动集群 ............................................................................................................................... 19
8.4.2 关键部分源码解析 ............................................................................................................. 23
8.4.3 运行时节点变更 ................................................................................................................. 24
8.5 PROXY 模式 ................................................................................................................................... 26
8.5.1 Proxy 取代 Standby 模式的原因 .................................................................................... 26
8.5.2 关键部分源码解析 ............................................................................................................. 27
8.6 数据存储 ....................................................................................................................................... 28
8.6.1 预写式日志(WAL) ........................................................................................................ 29
8.6.2 关键部分源码解析 ............................................................................................................. 29
7 Raft
............................................................................................................................................... 30
8.7 RAFT 常见问答一览 ..................................................................................................................... 30
8.7.1
关键部分源码解析 .......................................................................................................... 33
8.8 STORE ............................................................................................................................................... 35
9
总结
.......................................................................................................................................... 38
1、简介
随着 CoreOS 和 Kubernetes 等项目在开源社区日益火热,它们项目中都用到的 etcd 组
件作为一个高可用强一致性的服务发现存储仓库,渐渐为开发人员所关注。在云计算
时代,如何让服务快速透明地接入到计算集群中,如何让共享配置信息快速被集群中
的所有机器发现,更为重要的是,如何构建这样一套高可用、安全、易于部署以及响
应快速的服务集群,已经成为了迫切需要解决的问题。
etcd 是一个高可用的键值存储系统,主要用于共享配置和服务发现。etcd 是由 CoreOS
开发并维护的,灵感来自于 ZooKeeper 和 Doozer,它使用 Go 语言编写,并通过 Raft
一致性算法处理日志复制以保证强一致性。
2、分布式系统
一个系统的演变,包含数据与服务,从集中到集群再到分布。在系统初始时,功能简
单结构单一,服务与数据在一台机器上。随着系统使用的增加和功能的扩展,系统会
遇到瓶颈,难以支撑,为了解决这个瓶颈,可以对数据或者服务水平扩展,采用集群
部署增加其节点,用以负载均衡,使得系统性能提升,随着业务与用户的增长,这种
靠集群方式提升性能往往不是直线提升(机器与性能不成正比),当达到这个瓶颈的
时候,仅仅靠单一的增加节点是不现实的,为了解决这个问题,这个时候,分布式出
现了,把数据和服务二维拆分(水平和垂直),分散在多台机器上。分布式系统的出
现,使得系统变得复杂,数据和服务难以管理,这个时候需要由专门的分布式工具去
管理,市面上有专门这样的产品(zookeeper、etcd、consul)
3、为何选择 GO 实现
系统用户指数的增长,引发高并发,很多后端高级语言(java、.net、php)处理高并发
采用的方案往往是增加线程,一个连接创建一个线程,或者采用线程池,以此来提高
性能。学过操作系统的同学应该都清楚,进程和线程是操作系统最重要的概念,一个
进程包括多个线程,标准线程是操作系统调度的基本单位,线程需要占用内存资源,
普通的线程需要消耗 1M 的堆栈,切换线程执行需要消耗 cpu 资源,这就意味这线程
数不是越多越好,线程越多操作系统切换消耗的资源越高。所以千万级并发实现的秘
密:内核不是解决方案,而是问题所在。
为了解决这个问题,go 语言引入了 Coroutine-协程模型,coroutine 本质上是一种轻量级
的 thread,它的开销会比使用 thread 少很多,多个 coroutine 可以按照次序在一个 thread
里面执行,简单来说:协程十分轻量,可以在一个进程中执行有数以十万计的协程,依
旧保持高性能。开发分布式系统管理产品,当然选择一个处理并发架构良好的语言为佳。
etcd 和 consul 不约而同的采用 go 实现,还有当下火热的 docker。
4、ETCD 优势(对比 ZOOKEEPER)
1) 一致性协议: etcd 使用 Raft 算法充分实现了分布式, ZK 使用 ZAB(类 PAXOS
协议),前者容易理解,方便工程实现;
2) 运维方面:etcd 方便运维,ZK 难以运维;
3) 项目活跃度:etcd 社区与开发活跃,ZK 已经快死了;
4) API:etcd 提供 HTTP+JSON, gRPC 接口,跨平台跨语言,ZK 需要使用其客户
端;
5) 访问安全方面:etcd 支持 HTTPS 访问,可选 SSL 客户认证机制,ZK 在这方面缺
失;
6) 性能:etcd 性能支持上万次读写(每个实例每秒支持一千次写操作)
5、核心—-RAFT 协议
etcd 使用 Raft 协议来维护集群内各个节点状态的一致性。简单说,etcd 集群是一个分布
式系统,由多个节点相互通信构成整体对外服务,每个节点都存储了完整的数据,并且
通过 Raft 协议保证每个节点维护的数据是一致的。
如图所示,每个 etcd 节点都维护了一个状态机,并且,任意时刻至多存在一个有效的主
节点。主节点处理所有来自客户端写操作,通过 Raft 协议保证写操作对状态机的改动会
可靠的同步到其他节点。
etcd 工作原理核心部分在于 Raft 协议。主要分为三个部分:选主,日志复制,安全性。
1) 选主:Raft 协议是用于维护一组服务节点数据一致性的协议。这一组服务节点构
成一个集群,并且有一个主节点来对外提供服务。当集群初始化,或者主节点挂
掉后,面临一个选主问题。集群中每个节点,任意时刻处于 Leader, Follower,
Candidate 这三个角色之一
2) 日志复制,所谓日志复制,是指主节点将每次操作形成日志条目,并持久化到本地
磁盘,然后通过网络 IO 发送给其他节点。其他节点根据日志的逻辑时钟(TERM)
和日志编号(INDEX)来判断是否将该日志记录持久化到本地。当主节点收到包括
自己在内超过半数节点成功返回,那么认为该日志是可提交的(committed),并
将日志输入到状态机,将结果返回给客户端。
3) 安全性,针对与特殊情况的一些处理,保证 Leader 挂机和选举冲突情况处理数据
一致性。
剩余37页未读,继续阅读
茶博士_38043550
- 粉丝: 25
- 资源: 36
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功