1.概念
zookeeper用来协作分布式系统中的多个任务。一个协作任务是指涉及多个进程的任务,这种任务是为了协作或者是为了管理竞争。
协作意味着多个进程需要一起处理一个任务,一些进程处理某些操作,使得其他进程可以继续工作,典型如主-从工作模式,从节点空闲之后,发消息通知主节点可以接收数据继续工作。
竞争则不同,意味着两个进程不能同时工作,一个进程必须等待另一个进程处理完成后才能继续工作。同样在主从模式中,主节点只有一个,但是很多进程都想成为主节点,我们需要实现互斥排他锁。实际上,成为主节点就是获取锁的过程。
2.zookeeper怎么实现原语的同步?
虽然许多消息传递算法可以实现同步原语, 但是使用一个提供某种有序共享存储的组件往往更加简便, 这正是ZooKeeper所采用的方式。
3.zookeeper使用实例
1.选举集群的主节点,例如HBase数据仓库的主节点选取;
2.检测组件崩溃,例如Kafka,实现主体的发现,保持主体的生产和消费;
3.存储集群的元数据,例如SolrCloud;
4.主节点选取、崩溃检测和元数据存储一起使用,如应用系统;
5.作为控制器、实现数据分片、故障恢复和服务发现等。
4.分布式系统同步消息方式
1.通过网络进行信息交换;
2.通过读写共享存储。
5.注意事项
zookeeper使用共享存储模型实现应用写作和同步原语。因此需要进程和存储间进行网络同行,网络通信是分布式系统设计的基础。
1.消息延迟,消息传输可能发生任何延迟,比如网络堵塞;
2.处理器性能,操作系统的调度和超载也可能导致消息延迟;
3.时钟偏移,处理器时钟并不可靠。
当消息延迟很难判断,是哪些因素导致的,可能是进程崩溃、网络堵塞或者是其他情况。
zookeeper的设计简化了这些问题的处理,并不能消除问题,将这些问题在应用服务器上完全透明化。
斜体部分疑惑
作者:南风nanfeng
链接:https://www.jianshu.com/p/413914a6cfa3
共同学习,写下你的评论
评论加载中...
作者其他优质文章