zookeeper的快速入门《二》

1. zookeeper的六大应用场景:

A. 数据的发布和订阅:一方发布数据,另一方得到数据

a) 数据的订阅有2种方法:推模式和拉模式。

a) 推模式:服务器主动向客户推送消息。

b) 拉模式:客户端主动去服务器获取数据(通常为定时轮询的方式)

b) 发布者将数据发布到zk集群节点上,订阅者通过告知服务器,对该节点感兴趣,则当服务器的该节点数据发生变化时,会通知客户端,则客户端,可以去服务器获取信息。

B. 负载均衡

   

a. DB在启动时,先在zk上注册成一个临时节点,(永久节点,临时节点),db不可用时,节点会自动从zk删除,则zk上的服务列表是最新的可用列表

b. 客户端在读写db时,先去zk中得到所有可用的db连接信息(一张列表),并且随机选择一个与之建立连接。当客户端发现该链接不可用时,可再次从zk获取连接信息,再随机选择一个db与之连接。

 

C. 命名服务

即提供名称的服务,例如数据库表格id,常用的为2id,一种是自动增长的id,一种是uuid。前者:局限于单库表中使用,不能再分布式中使用。后者:可在分布式中使用,但是id没有规律可循。

我们可借用zk来生成一个顺序增长的,可在集群环境下使用的id

 

D. 分布式协调/通知

     心跳检测:zk让所有机器都注册一个临时节点,通过ping该主机的方式,得到该主机是否可用,不可用的,则临时节点会自动删除。

E.配置管理



2. Zk的五大功能:

A.命令服务:

1) .树形名称结构

2) 类似于JNDI,均可以将目录结构关联到对应的资源,但是zkNameService还可以形成不重复的名称(类似PK)且不关联资源

 

B.配置管理:

将配置信息保存在zk的某个目录节点中,所有server监控配置的信息状态,若变化,则从zk中获取新的配置信息应用到系统中。

 

C.集群管理:(group Members

1) .1server宕机,其他的server知道

    原因:每个server创建目录节点的父节点上调用getChildren(String path,Boolean boolean);

2) LeaderElection:最小编号的servermaster,可以避免单点故障。

原因:每个server创建一个Ephenmeral_sequential的目录节点,可编号,不断的选出最新编号,从而实现动态选择master

 

D.共享锁:

原因:它在跨进程、不同的server中,不易实现,但是在zk中易实现。

方法:
    有了zookeeper的一致性文件系统,锁的问题变得容易。锁服务可以分为两类,一个是保持独占,另一个是控制时序。 

    对于第一类,我们将zookeeper上的一个znode看作是一把锁,通过createznode的方式来实现。所有客户端都去创建 /distribute_lock 节点,最终成功创建的那个客户端也即拥有了这把锁。用完删除掉自己创建的distribute_lock 节点就释放出锁。 
    
    对于第二类, /distribute_lock 已经预先存在,所有客户端在它下面创建临时顺序编号目录节点,和选master一样,编号最小的获得锁,用完删除,依次方便。

 

E.队列管理:两种实现方式:

1) .当一个队列的成员都到齐时,该队列才可用,否则一直处于等待状态,此为同步队列

2) 队列按FIFO方式进行入队和出队的操作,实现生产者和消费者模型。


3.zk的角色描述:



4.Leader的主要功能:

 

1) .恢复数据;

 

2) .维持与Learner的心跳,接收Learner请求并判断Learner的请求消息类型;

 

3) .Learner的消息类型主要有PING消息、REQUEST消息、ACK消息、REVALIDATE消息,根据不同的消息类型,进行不同的处理。

 

PING 消息是指Learner的心跳信息;

 

REQUEST消息是Follower发送的提议信息,包括写请求及同步请求;

 

ACK消息是 Follower的对提议的回复,超过半数的Follower通过,则commit该提议;

 

REVALIDATE消息是用来延长SESSION有效时间。

 

5.Follower主要有四个功能:

 

1).Leader发送请求(PING消息、REQUEST消息、ACK消息、REVALIDATE消息);

 

2).接收Leader消息并进行处理;

 

3).接收Client的请求,如果为写请求,发送给Leader进行投票;

 

4).返回Client结果。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值