赞
踩
etcd特性
简单接口
json和xml格式非常相似,结构对人有友好,易读取
rpc和http详细:点击访问(易哥说的还是很简洁易懂的)
Key-value存储
Key-value形式的存储可以理解为基于索引的引入思考,对于常规关系型数据库中建立索引来加快数据的查询,而有些场景只需要大量的基于索引的形式
分布式场景的产生,对于单机服务进行了拆解,由多台服务承担,提供更高效的服务,前提是需要确保各个节点上数据和事务的强一致性,Key-value存储在分布式中得到应用
目录就是类似key,目录里的文件或者目录就是类似value(可以嵌套)
服务发现
服务发现是解决分布式集群中的进程和服务,要如何才能找到对方并建立连接,常规的就是监控集群中哪些服务端口和地址进行连接,为什么需要增加etcd中间层,在分布式场景中提供方往往是多台负载,中间发送任何的改变,对于请求方是无法获取到的,(可以人工修改,但是避免不了就是服务的中断)因此添加etcd中间层来自动维护服务之间的状态连接
服务发现需要实现一下基本功能:
etcd 是一个分布式的k/V存储系统,核心使用了RAFT分布式一致性协议,多台服务器的状态和数据都要保证一致性,为了提高容错性,就算其中一台服务器出现问题,也不能影响业务的使用
raft协议核心要点
Leader选举(Leader Election)
日志同步 (Log Replication)
leader收到client的更新请求后,会讲更新的内容同步给所有follower
集群状态的正确性 (Safety)
保证日志的一致性
保证选举的正确性
服务器状态
leader
处理所有客户端交互,日志复制等,一个任期只有一个
follower
完全被动的选民,是只读的
candidate
候选人,可以被选举为新领导
分布式锁
因为etcd使用Raft算法保证了数据的强一致性,某次操作存储到集群中的值必然是全局一致的,所以很容易实现分布式锁,两种实现方式
架构
HTTP Server: 用于处理用户发送的API请求以及其它etcd节点的同步与心跳信息请求
Store:用于处理etcd支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是etcd对用户提供的大多数API功能的具体实现
Raft:Raft强一致性算法的具体实现,是etcd的核心
WAL(Write Ahead Log,预写式日志):是etcd的数据存储方式。除了在内存中存有所有数据的状态以及节点的索引以外,etcd就通过WAL进行持久化存储。WAL中,所有的数据提交前都会事先记录日志。Snapshot是为了防止数据过多而进行的状态快照,存储etcd数据状态;Entry表示存储的具体日志内容(类似mysql的bin日志功能)
集群之间服务器是没有协同,各自干各自的,就是一堆提供相同服务的机器
分布式之间是相互协同合作,把一个服务拆分多个模块,在多台服务器上运行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。