zookeeper分布式协调服务

分布式协调技术

随着发展我们在一台机器上运行的程序任务越来越重,资源请求越来越大,根据不同的情况主要有如下的解决方案一个是负载技术,一个是分布式技术
负载技术:主要解决资源使用压力
分布式技术:主要是把应用任务横向切分,跑在不同的机器上通过rpc协作为外部提供整体服务。
在以上的技术中主要面临的问题有:1,数据同步,2,分布式进程协作
zookeeper是其中一种可以为上述问题提供有效的解决方案的技术框架,所以我们下面先认识它。

ZooKeeper架构

这里写图片描述
核心组件
Server:zk集群服务端,数目一般选择为奇数(3,5,7)
Leader:通过选举算法确定,zk中的选举是精华,本人能力有限,怕说不清楚,所有不做讨论,作用发起投票,下达决议,更新系统
Follower:接受客户连接,读写请求,发给leader,参与投票,返回客户端结果
Observer:同步leader
Client:使用者,发起连接,读写请求。

ZooKeeper数据结构

这里写图片描述

层次化的目录结构

每个节点在ZK中叫做znode
znode可以包含数据和子节点(临时类型的节点不能有子节点)
znode中的数据可以有多个版本,可以通过版本查询数据
znode包含临时(ephemeral)和持久(persistent)两种类型每种类型都支持顺序节点
znode的类型在创建时确定后就不能修改

节点属性

这里写图片描述
cZxid: 是节点的创建时间所对应的Zxid格式时间戳。
mZxid:是节点的修改时间所对应的Zxid格式时间戳。
version:节点数据版本号
cversion:子节点版本号
aversion:节点所拥有的ACL版本号

ZooKeeper服务中操作

这里写图片描述

Watch触发器

这里写图片描述
ZooKeeper可以为所有的读操作设置watch,这些读操作包括:exists()、getChildren()及getData()。watch事件是一次性的触发器,当watch的对象状态发生改变时,将会触发此对象上watch所对应的事件。watch事件将被异步地发送给客户端,并且ZooKeeper为watch机制提供了有序的一致性保证。理论上,客户端接收watch事件的时间要快于其看到watch对象状态变化的时间。

哪些框架使用到了ZooKeeper

HDFS HA
HBase
Kafka
Spark
dubbo
……

ZooKeeper应用举例

至此你了解了zk,那么我们能做什么?
1,选举
2,分布式锁
3,分布式队列
4,分布式事务
5,分布式隔离
6,数据同步
…..
选举,分布式锁可以应用在具有单点故障的问题中利用选举确定唯一的active,利用分布式锁防止“脑裂”
分布式队列可应用在分布式共享资源消费中
分布式事务,可以应用在rpc协作中
由于刚开始写博客,技术有限很多想法不能表述,上面的实现如果你感兴趣可以和我讨论!!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值