Docker高可用配置中心Etcd使用场景有哪些
本篇内容介绍了“Docker高可用配置中心Etcd使用场景有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
一:简介
Etcd是一个开源的分布式的键值存储库,用于配置共享和服务发现。通常以集群的形式进行部署,各工作节点会选出一个leader节点主导工作。通常用于存储数据库的连接配置,缓存配置,通用配置信息等。
Etcd的特点有:
简单:基于HTTP+JSON的API,用curl命令就可以轻松使用
安全: 可选SSL客户认证机制
快速:每个实例每秒支持一千次写操作
可信:使用Raft算法充分实现了分布式
Etcd主要解决的是分布式系统中数据一致性的问题,而分布式系统中的数据分为控制数据和应用数据。Etcd处理的数据默认为控制数据,对于应用数据,它只推荐处理数据量很小但访问频繁的情况。
二:Etcd使用场景
服务发现
在同一个分布式集群中的进程或服务,互相感知并建立连接,这就是服务发现。从本质上说服务发现就是要了解集群中是否有进程在监听UDP或TCP端口,并通过对应的字符串信息进行查找和连接。解决服务发现的问题,需要以下几个方面:
a.一个强一致性,高可用的服务存储目录
b.一种注册服务和监控服务健康状态的机制
c.一种查找和连接服务的机制
消息发布与订阅
在分布式系统中,最适合的组件间通信方式是消息发布和订阅机制。具体而言,即构建一个配置共享中心,数据提供者在这个配置中心发布消息,而消息使用者则订阅他们相关的主题,一旦相关主题有消息发布,就会实时通知订阅者。通过这种方式可以实现分布式系统配置的集中式管理和实时动态更新。
分布式通知与协调
使用etcd中的Watcher机制,通过注册与异步通知机制,实现分布式环境下不同系统之间的通知与协调,从而对数据变更进行实时处理。
a. 通过etcd进行低耦合的心跳检测
检测系统和被检测系统通过etcd上某个目录关联而非直接关联起来,这样可以大大减少系统的耦合性。
b.通过etcd完成系统调度
管理人员在控制台做一些操作,实际上只需要修改etcd上某些目录节点的状态,etcd就会自动把这些变化通知给注册了Watcher的推送系统客户端,推送系统再做出相应的推送任务。
c.通过etcd完成工作汇报
大部分类似的任务分发系统会在子任务七朵花,到etcd来注册一个临时工作目录,并且定时将自己的进度进行汇报(即将进度写入到这个临时目录),这样任务管理者就能够实时知道任务进度。
分布式锁与竞选
a.保持独占锁
b.控制时序锁
使用分布式锁可以完成Leader竞选,对于一些长时间的CPU计算或者使用I/O操作,只需要竞选出的Leader计算或处理一次,再把结果复制给其他Follower即可,从而避免重复劳动,节省计算资源。
分布式队列
集群监控
三:Etcd架构
Etcd中涉及的术语有:
Raft:etcd所采用的保证分布式系统强一致性的算法
Node:一个Raft状态机实例
Member:一个etcd实例,管理着一个Node,可以为客户端请求提供服务
Cluster:由多个Member构成的可以协同工作的etcd集群
Peer:对同一个etcd集群中另外一个Member的称呼
Client: 向etcd集群发送HTTP请求的客户端
WAL:预写式日志,是etcd用于持久化存储的日志格式
Snapshot : etcd防止WAL文件过多而设置的快照,存储etcd数据状态
Proxy:etcd的一种模式,为etcd集群提供反向代理服务
Leader: Raft算法中通过竞选而产生的处理所有数据提交的节点
Follower:竞选失败的节点作为Raft中的从属节点,为算法提供强一致性保证
Candidate:Follower超过一定时间接收不到Leader的心跳时,转变为Candidate开始Leader竞选
Term:某个节点成为Leader到下一次竞选开始的时间周期,成为一个Term
14. Index:数据项编号,Raft中通过Term和Index来定位数据。
“Docker高可用配置中心Etcd使用场景有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341