1.zookeeper的使命
zookeeper可以在分布式系统的协作多个任务(一个任务是指一个包含多个进程的任务),这个任务可以是为了协作或者是为了管理竞争。
协作:多个进程需要一同处理某些事情,一些进程采取某些行动让其他进程继续工作。例:主-从工作模式中主节点将任务分配给其他的从节点。
竞争:指两个进程不能同时处理工作,一个进程必须等待其他节点。例:主-从工作模式中主节点只有一个,其他从节点只能等主节点崩溃后才能成为主节点,这就需要实现互斥排他锁,我们可以理解为成为主节点的过程就是要获取主节点控制锁的过程。
2.zookeeper api功能
(1)保障强一致性,有序性和持久性。
(2)实现通用的同步原语的能力。
(3)在实现分布式系统中,并发往往导致不正确的行为,zookeeper提供了一种简单的并发处理机制。
3.zookeeper不适用的场景
海量数据存储----我们可以使用数据库或者分布式文件系统等。
4.分布式系统中等进程通信有两种选择:(1)直接通过网络进行信息交换 (2)读写某些共享存储,zookeeper使用共享存储模型来实现应用间的协作和同步原语,而对于共享存储本身,又需要在进程和存储间进行网络通信。
5.注意的问题
(1)消息延迟
消息传输可以会发生任意延迟,比如网络拥堵。
(2)处理器性能
操作系统的调度和超载可能导致消息处理的任意延迟。
(3)时钟偏移
确定某一事件系统中发生哪些事件,处理器的时钟不可靠,他们之间会发生任意偏移。
6.主-从
主节点服务器负责跟踪从节点是否可用,并分派任务到从节点。
从节点服务器负责完成任务。
(1)主节点崩溃
如果主节点发送错误并失效,系统将无法分配新的任务货重新分配已失败的任务。
解决办法:我们需要一个备份主节点,当主节点崩溃是,备份主节点通过zookeeper来恢复已崩溃主节点的状态,但是这也不是万能的,如果主节点负载过高,导致信息任意延迟或者网络分区错误导致都会导致备份主节点与主节点(未崩溃)同时工作,产生脑裂现象。
(2)从节点崩溃
如果从节点崩溃,已分配的任务将无法完成。
解决办法:让主节点具有检查从节点的崩溃能力,并且还要执行某些恢复过程来清除之前状态。
(3)通信故障
如果主节点和从节点之间无法进行信息交换,从节点将无法得知新任务分配给他。
解决办法:首先客户端可以告诉zookeeper某些数据的状态是临时状态,其次,zookeeper需要向客户端定时发送是否存活的通知,如果一个客户端未能即使发送通知,那么所有从属于这个客户端的临时状态数据将全部删除。
7.zookeeper命名的由来
zookeeper是由雅虎研究院开发,zookeeper研究小组参加来很多以动物命名的项目,分布式项目就像一个动物园,zookeeper就是为了将一切变为可控的
原文地址:https://www.cnblogs.com/freeht/p/12569260.html