《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提供的服务而被方便快捷地解决。相关文章推荐
- HTML5 之 基本标签、属性
- UltraISO制作U盘启动盘安装Win7系统攻略
- 查看mysql当前表使用的存储引擎(转)
- [LeetCode] Subsets II
- js事件
- uva 10245 The Closest Pair Problem
- codeforces #305 C Mike and Foam
- Kylin cuboid算法修改
- python文件取MD5
- linux tail命令的使用方法详解
- 矩阵快速幂
- python 中 print 函数用法总结
- angularjs post /get请求及radio button
- JSON in google Maps
- 队列卡片题
- 一、ThinkPHP的介绍
- serverlet
- 一、ThinkPHP的介绍
- 一、ThinkPHP的介绍
- static 和 final 总结