Hadoop3- zookeeper-kafka

zookeeper

概念:分布式应用程序协调服务

作用:保证数据在在集群间的事务一致性

1.集群分布式锁(共享锁,互斥锁)---一段时间内对锁的独占

2.集群统一命名服务

3.分布式协调服务

角色与特性

leader:接受所有的follower的提案请求并统一协调发起提案的投票,负责所有的follower进行内部数据交换

follower:直接为客户端服务并参与提案的投票,同时与leader进行数据交换

observer: 直接为客户端服务但并不参与提案的;投票,同时也与leader进行数据交换

角色与选举

 zookeeper 角色与选举

服务器在启动的时候是没有角色的(looking)

角色是通过选举产生的

选举一个leader,剩下的是follower

选举leader原则

集群超过板书集群投票选举leader

假如集群中拥有n台服务器,那么leader必须得到n/2+1台服务器的投票

zookeeper角色与选举

如果leader死亡,重新选举leader

如果死亡的机器数量达到一半,则集群挂掉

如果无法得到足够的投票数量,就重新发起投票,如果参与投票的机器不足n/2+1,则集群停止工作

observer不计算在投票总设备数里面

zookeeper原理与设计

zookeeper可伸缩扩展性原理与设计

leader所有写相关操作

follower读操作与响应leader提议

observer出现以前,zookeeper的伸缩性由follower来实现,我们可以通过添加follower节点的数量来保证zookeeper服务的读性能,但是随着follower

节点数量的增加,zookeeper服务的写性能收到了影响

客户端提交一个请求,若是读请求,则由每台server的本副本数据库直接响应,若是写请求,需要通过一致性协议(zab)来处理

zab协议规定:来自client的所有写请求都要转发给zk服务中唯一的leader,由leader根据该请求发起一个proposal,然后其他的server对该proposal

进行vote.之后leader对vote进行收集,当vote数量过半时leader会向所有的server发送一个通知消息.最后当;client所链接的server收到该消息时,

会把该操作更新到内存中并对client的写请求做出回应.

 

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/jeffzhao/p/11711921.html