zookeeper概述

来源:互联网 发布:证券交易软件 编辑:程序博客网 时间:2024/05/21 09:46

zookeeper是什么?
zookeeper是用于分布式中处理一致性的框架。就是为了解决分布式系统中数据的最终一致性。
著名的hadoop、kafka、dubbo 都是基于zookeeper而构建。
一致性
一致性分为:强一致性、弱一致性、最终一致性
什么叫做一致性?
例如:卖家促销一件商品,通过服务器A提交到主数据库,此时买家立即i通过服务器B去数据库中查看该商品,出现的结果是,卖家已 经发布成功,但是买家是查询不到的,过一段时间后主数据库中的数据同步到从数据库中,买家就能查询到了。
一致性:分布式系统中状态和数据保持同步和一致。
常见的解决一致性问题的方式
查询重试补偿:对分布式中不确定的情况先采用查询接口查询到当前的状态,如果状态不一致就采用补偿接口对当前的状态进行重试推送,或者回滚接口对业务进行回滚。
定时任务推送:对于上面的情况,有时一次推送不成功,就需要多次进行推送。
TCC:两阶段协议,第二阶段的可以实现提交操作或是逆操作。
zookeeper到底可以做什么东西?
推理主备切换可能出现的问题:一是由于网络抖动,负载过大等问题,备机检测不到心跳并不能说明主机一定挂了,有可能一定时间后主机或网络恢复,这时候主机并不知道备机已经切换为主机,2台主机互相争用,可能造成脑裂;二是如果一些数据集中在主机上面,则备机切换时由于同步延时势必会损失掉一部分的数据。
这些问题的出现可以由zookeeper解决,解决方案如下:
1.zookeeper作为第三方集群参与到主备节点中去,当主备启动时会在zookeeper上竞争创建一个临时锁节点,争用成功者则充当主机,其余备机;

2.所有备机会监听该临时锁节点,一旦主机与zookeeper间session失效,则临时节点被删除;

3.一旦临时节点被删除,备机开始重新申请创建临时锁节点,重新争用为主机;

4.用zookeeper如何解决脑裂?实际上主机争用到节点后通过对根节点做一个ACL权限控制,则其他抢占的机器由于无法更新临时锁节点,只有放弃成为备机。
zookeeper的基本数据模型
1.同一时刻多台机器创建同一个节点,只有一个会争抢成功。利用这个特性可以做分布式锁。

2.临时节点的生命周期与会话一致,会话关闭则临时节点删除。这个特性经常用来做心跳,动态监控,负载等动作。

3.顺序节点保证节点名全局唯一。这个特性可以用来生成分布式环境下的全局自增长id。

0 0
原创粉丝点击