zookeeper学习

zookeeper类似于一个按摩会所app,生产者相当于技师,消费者相当于去按摩的顾客,而app上面就保存了几号技师available,技师有可能当天请假啥的,当前技师是不是available,就需要通知给客户了

采用观察者模式

zookeeper只存储一些简单的配置信息,因为每个Node只能存储1MB的数据,所以不能像UNIX一样存储海量信息

统一命名服务,类似于nginx,还有负载均衡也类似nginx

统一配置管理

同步参数

zk客户端命令行

Zookeeper能做什么?

1 服务器动态上下线 服务器创建临时节点,然后在服务器关闭的时候,临时节点自动消失,client端通过watch监听指定路径,便可知道是否有服务器提供服务了

2 分布式锁 (成熟的Curator框架) 自己写用countDownLatch

3 配置实时更改 (之前在拼多多的时候就有用到,ZooService),其实运用的就是监听机制(watch的process函数)

其实这三者都是运用了Zookeeper的节点新增create、获取getData及getChildren、删除Delete

节点包括永久节点和临时节点,而节点又分为带序号的和不带序号的 参数为-e -s

Paxco算法解决多机器的一致性问题,角色有三种Proposer,Acceptor,Learner,但是问题在于多个Proposer会导致活锁问题,为此使用改进的Paxco算法,即ZAB协议,只有一个Leader当做Proposer,解决活锁问题

CAP原理

一致性 可用性 分区容错性(Patition Toralance)

P是必须的,所以一般是AP 或者CP

Zookepper实现了CP,因为Leader选举时不可用

 zookeeper启动源码流程

start启动时恢复快照和编辑日志到内存中

 选举日志源码解析:

 非第一次启动

 选举源码,选举和对外通讯 解耦

 具体源码流程图

同步源码解析

 同步源码流程图:

Zookeeper的Leader启动

Follower启动

 客户端启动

 

读源码也要化繁为简 

确认接口的反思,能不做就不做,绝对不做

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值