【大数据面试题】Zookeeper
1-Zookeep定义&应用场景
定义:
ZooKeeper是一个分布式的,开放源码的,用于分布式应用程序的协调服务。所谓分布式协调主要是来解决分布式系统中多个进程之间的同步限制,防止出现脏读,例如我们常说的分布式锁。zookeeper服务端有两种模式:单机的独立模式和集群的仲裁模式,所谓仲裁是指一切事件只要满足多数派同意就执行,不需要等到集群中的每个节点反馈才执行。Zookeeper本身也是服从主从架构的,在仲裁模式下会有一个主要的节点作为Leader(领导者),而其余集群中的节点作为Follower(公民),对某一事件是否执行,leader都会先征询各个follower的反馈信息再做决定,如果多数派同意,leader就将命令下发到所有的follower去执行。
特点:
1、Zookeeper是由一个Leader和多个Follower组成的集群。
2、集群中只要有半数以上的节点存活,Zookeeper就能正常工作。
3、全局数据一致性,每个server上保存的数据都一样,客户端无论访问哪个节点,数据都一致。有几个节点就有几个副本。
4、更新请求顺序进行,来自同一个客户端的更新请求按其发送顺序一次执行。
5、数据更新的原子性,一次更新要么成功,要么失败。
6、实时性,在一定时间范围内,客户端能读到最新数据。
应用场景:
1)数据发布/订阅
数据的发布与订阅,顾名思义就是一方把数据发布出来,另一方通过某种手段获取。
通常数据发布与订阅有两种模式:推模式和拉模式,推模式一般是服务器主动往客户端推送信息,
拉模式是客户端主动去服务端请求目标数据(通常采用定时轮询的方式)
Zookeeper采用两种方式互相结合:发布者将数据发布到Zookeeper集群节点上,
订阅者通过一定的方法告诉Zookeeper服务器,自己对哪个节点的数据感兴趣,那么在服务端数据发生变化时,就会通知客户端去获取这些信息。
2)负载均衡
首先在服务端启动的时候,把自己在zookeeper服务器上注册成一个临时节点。
zookeeper拥有两种形式的节点,一种是临时节点,一种是永久节点。注册成临时节点后,在服务端出问题时,节点会自动的从zookeeper上删除,
如此zookeeper服务器上的列表就是最新的可用的列表。
客户端在需要访问服务器的时候首先会去Zookeeper获得所有可用的服务端的连接信息。
客户端通过一定的策略(如随机)选择一个与之建立连接。
当客户端发现连接不可用时,会再次从zookeeper上获取可用的服务端连接,并同时删除之前获取的连接列表。
3)命名服务
提供名称的服务。如一般使用较多的有两种id,一种是数据库自增长id,一种是UUID,两种id都有局限,自增长id仅适合在单表单库中使用,uuid适合在分布式系统中使用但由于id没有规律难以理解。
而ZK提供了一定的接口可以用来获取一个顺序增长的,可以在集群环境下使用的id。
4)分布式协调,通知,心跳服务
在分布式服务系统中,我们常常需要知道哪个服务是可用的,哪个服务是不可用的,传统的方式是通过ping主机来实现的,ping得200的结果说明说明该服务是OK的。而在使用zookeeper时,可以将所有的服务都注册成一个临时节点,我们判断一个服务是否可用,只需要判断这个节点是否在zookeeper集群中存在就可以了,不需要直接去连接和ping服务所在主机,减少系统的复杂度和对服务主机的压力。
2-选举机制
半数机制:2n+1,安装奇数台
10台服务器:3台
20台服务器:5台
100台服务器:11台
台数多,好处:提高可靠性;坏处:影响通信延时
3-常用命令
ls、get、create
4-Paxos算法
Paxos算法一种基于消息传递且具有高度容错特性的一致性算法。
分布式系统中的节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing)。基于消息传递通信模型的分布式系统,不可避免的会发生以下错误:进程可能会慢、被杀死或者重启,消息可能会延迟、丢失、重复,在基础Paxos场景中,先不考虑可能出现消息篡改即拜占庭错误的情况。Paxos算法解决的问题是在一个可能发生上述异常的分布式系统中如何就某个值达成一致,保证不论发生以上任何异常,都不会破坏决议的一致性。
5-讲一讲什么是CAP法则?Zookeeper符合了这个法则的哪两个?
CAP法则:强一致性、高可用性、分区容错性;
Zookeeper符合强一致性、分区容错性
#23届找工作求助阵地##我的求职思考##数据人offer决赛圈怎么选##阿里##腾讯#