zookeeper:
背景
集中式管理
集中式的一致性问题
mysql---事务
分布式概念
分布式如何保证数据一致性问题?
多个节点之间如何做到各个节点的数据或状态的一致性
1)hadoop的ha 两个namenode 两个namenode
实时的数据同步 数据一致
2)hadoop的ha 两个namenode 一个active 一个standby的
状态一致 standby实时的获取 active的状态信息
3)hadoop的节点3个节点 3个节点配置文件同步的
远程发送 集群500个 延时性太长
zookeeper就是解决分布式一致性问题 分布式协调(一致)服务
目前zookeeper是没有取代方案的 目前解决分布式一致性问题的
最完美的解决方案
分布式一致性的发展:
CAP理论:
绝对完美的一致性理论
C:Consistency,一致性: 多个副本保持一致 强一致性 实时一致性
一致性:
强一致性:写入什么 就能读取什么 写操作完成
从其他任意备份立即可以读取
弱一致性:尽量保证写什么 读什么 保证绝大部分
最终一致性:弱一致性的一个特殊情况
在一定的时间延迟内 写数据的 所有的副本可以达到数据一致
最终肯定所有的副本保证数据一致的
一致性最高:只有一个副本
副本数量越多 一致性越难保证
A:Availability,可用性: 高可用
系统提供的服务必须一直处于可用,
对于用户的每一个操作请求总是能在有限时间内返回结果
系统实时对外提供服务 即使存在节点宕机
可用性最高的时候:所有节点存储的都有副本
副本越多 可用性越高
P:Partition Tolerance分区容错性:
分布式系统在遇到任何网络分区故障时,
仍然需要能够保证对外提供满足一致性和可用性的服务
hdfs的副本策略
C和A 是冲突的 不可同时满足的 实践上不能达到的
要想实现CAP理论 在C 和A 之间平衡
BASE理论:
将c a做了平衡
c----最终一致性
a----基本可用性
Basically Available:基本可用
相应时间的损失
功能上的损失
Soft State:软状态
允许存在不同节点同步数据时出现延迟,
且出现数据同步延迟时存在的中间状态也不会
影响系统的整体性能。
允许时间延迟
Eventually Consistent:最终一致性
系统中所有数据副本,在经过一段时间后,
都可以达到同步:要求最终达到一致,而不是实时一致
Quorum NRW:保证数据安全的算法
quorum机制是分布式场景中常用的,
用来保证数据安全,
并且在分布式环境中实现最终一致性的投票算法
N: 复制的节点数,即一份数据被保存的份数。
R: Read 成功读操作的最小节点数,即每次读取成功需要的份数。
W: Write 成功写操作的最小节点数 ,即每次写成功需要的份数。
R+W>N
1)W=1 R=N
2)R=1 W=N
R W 权衡:
N=10
W=5
R=6
W=6
R=5
W=N/2+1
R=N/2
过半写入
paxos算法:选举算法
来源希腊的帮主选举
一半以上的选民投票
过半选举的机制
这个算法的一个最完美的实现就是zookeeper
其他的实现都是不完美的实现
zookeeper是什么
分布式一致性算法的
ZooKeeper Google 的 Chubby
一个开源的实现。它提供了简单原始的功能,分是一个分布式的,开放源码的分布式应用程序协调服务,是布式应用可以基于它实现更高级的服务,比
如分布式同步,配置管理,集群管理,命名管理,队列管理。