您的位置:首页 > 其它

《ZooKeeper》 Chapter 1 Introduction

2016-04-04 21:06 162 查看

一、ZooKeeper的基本概念

要想多个程序进程或者线程能够正常协调并发运行,需要导入一个同步机制,比如可以使用:特殊的可用来进行同步控制的消息传递机制,分布式锁管理器机制,数据库中保存“信号量”机制,分布式文件系统保存“信号量”机制,或者ZooKeeper维护“信号量”机制等等。

ZooKeeper对外提供简单的API接口,使得可以方便使用ZooKeeper维护(增删改查)一些“元数据”,这个“元数据”一般都为“信号量”资源。

ZooKeeper分为“Server端”和“驱动程序库”两部分。“Server端”由Java开发,独立运行提供服务,一般以集群的方式运行,可以提升服务的可用性和性能;“驱动程序库”现在有Java和C的两个实现版本。应用程序调用“驱动程序库”的接口,从而访问“Server端”的服务。通信示意图如图1所示。

图1



二、使用ZooKeeper的一些项目

当下使用ZooKeeper的一些项目有:Apache Hbase,Apache Kafka,Apache Solr等。

三、使用ZooKeeper开发分布式应用程序

3.1、使用ZooKeeper开发分布式应用程序

分布式应用程序的运行特点是:多个程序进程独立协调并发地运行在多台机器上。在开发分布式应用程序的过程中,需要解决很多问题。其中一部分问题可以得益于ZooKeeper提供的服务而被方便快捷地解决,除此之外的其他问题并不能得益于ZooKeeper提供的服务而被方便快捷地解决。

3.2、开发分布式应用程序举例及需要解决的问题

在分布式应用程序中,经常会用到“Master-Worker”架构体系,Storm,Hadoop,Hbase都是采用该架构体系。在这个架构体系中,“Master”的职责是:维护可用的“Worker”和“Task”列表,将可用的“Task”分配给可用的“Worker”。

要开发一个遵循该架构体系的分布式应用程序,最主要是解决以下3个关键问题。

1、Master挂掉

Master一旦挂掉,分布式应用程序需要能够:1)重新选举一个Master,并从某处恢复数据;2)避免出现“原Master并未真正挂掉,只是负载过重,现在重新选举一个Master,导致出现两个Master”的情况。

分布式应用程序通过使用ZooKeeper的服务能够快速实现以上功能。

2、Worker挂掉

Worker一旦挂掉,Master需要能够:1)侦测到Worker挂掉情况,获取到存活Worker列表;2)重新分配挂掉Worker所分配到的Task,处理挂掉Worker已经部分或者完全完成Task的情形。

分布式应用程序通过使用ZooKeeper的服务能够快速实现以上功能。

3、Master与Worker之间的网络连接挂掉

一旦Master与Worker之间的网络连接挂掉,分布式应用程序需要能够:1)处理多个Worker处理同一个Task的情形;2)处理“网络连接挂掉导致整个分布式应用程序停止运行”等情形。

分布式应用程序通过使用ZooKeeper的服务能够快速实现以上功能。

四、不可能开发一个完美的分布式应用程序

已经证明,不可能开发一个完美的分布式应用程序,在开发一个实际的现实的不完美的分布式应用程序的过程中,会遇到很多问题。其中一部分问题可以得益于ZooKeeper提供的服务而被方便快捷地解决,除此之外的其他问题并不能得益于ZooKeeper提供的服务而被方便快捷地解决。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: