您的位置:首页 > 其它

第一章 Zookeeper 介绍

2017-09-12 20:21 281 查看
概述:

现在想要学习一下Zookeeper,那么就开始吧!加油骚年。

由于项目逐渐增加,单机无法满足要求,开始采用集群,那么这样需要协调集群信息通讯,而Zookeeper就是已经弄好集群协调工作,让程序员专注于业务层,不要太多关心主机之间协调工作,这都由Zookeeper替你完成,它工作包括选举主服务器,管理组成员,管理元数据。

ZooKeeper Mission(Zookeeper任务)

Zookeeper通过消息传送算法来保证同步。

Zookeeper 在如下项目得到更好的扩展:

Apache HBase , 与Hadoop一起使用的数据存储,Zookeeper被用来选择集群的master(管理者),它去追踪可用的服务器和保存集群元数据。

Apache Kafka : 卡夫卡一个订阅/发布消息系统。它使用Zookeeper去检测奔溃点,去实现topic发现,为topic保持生产者和消费者的状态。

Apache Solr: Solr 是一个企业搜索平台。它的分布式形式成为SolrCloud,它使用Zookeeper去存储节点的元数据和协调更新这些元数据。

Yahoo! Fetching Service (雅虎的爬虫服务) :它爬虫的实现,它去网页上爬取有效的信息,这个服务器使用ZooKeeper的管理者选举,故障检测和元数据存储。

Fecebook Messages: 它是脸书的应用,它整合了渠道有:邮箱,SMS,Facebook Chat和 Facebook InBox.它使用Zookeeper作为一个控制器去实现分片和故障转移,也可以为服务探索。

1、如果世界上没有Zookeeper会怎么样?

先前系统已经实现类似分布式的功能(例如分布式锁管理和分布式数据库来协调),Zookeeper也借鉴先前的系统优点,它没有暴露锁接口或存储数据一般目的接口,Zookeeper主要注意力是在协调任务上面。如果分布式应用没有Zookeeper是可能,但是非常难实现。

2、那些Zookeeper不能做的?

Zookeeper 不是为了批量存储。Zookeeper不能实现响应式过程(不断变化应用过程),但是它提供工具去这样的任务。

3、用Zookeeper构建分布式应用

网络连接设计分布式的关键。

构建分布式需要考虑的问题:

Message delays(消息延迟): 由于网络原因,消息会不定的延迟,例如,消息A可能先与消息B发生,但是可能消息B可能第一个被接受到。

Processor speed(处理速度) : 由于机器配置可能有些差异,导致处理的时间不一样,传递过程的时间产生差异。

Clock drift(系统时钟) : 系统时钟有一定误差,依托于时钟会导致错误的决定。

4、例子:Master-Worker应用

管理者-工作者(简称老板-员工)

一个管理者下面有多个工作者,这就是Zookeeper典型模型,它任务主要完成选举、追踪可用工作者,保持元数据。

为了实现这个模型,需要解决三个关键问题:

Master crashes(管理者挂了):如果管理者出现异常,这时候群龙无首,没有分配任务和管理了

Worker crashes(工作者挂了): 工作者挂了,委派任务将会不能完成。

Communication failure(沟通失败): 如果管理者不能和工作者交互信息,那么工作者就不能领任务了

为了解决上面三个问题:选举管理者(当管理者挂了),监控工作者是否可用,监控工作者状态(是否在忙,还是闲,还是挂了)

5、任务摘要

总结master-worker工程结构:

1、Master election(管理者选举):选举一个管理者分配任务给工作者
2、Crash detection(奔溃检测):检测工作者不可用和连不上
3、组成员管理机制:那些工作者可以执行什么任务(能者多劳)
4、元数据管理:存储委派执行状态

6、Why Is Distributed Coordination Hard?(为啥分布式均衡最难?)

举个例子,应用一般需要配置文件,如果不是分布式的话,需要关闭所有应用,修改完配置文件重启,这就down机的时间,这是不可容忍。你遇到分布式错误,例如奔溃和通讯错误,这些错误会在任何时候发生,可能需要枚举各种极端情况需要对应处理。

单点故障:也就是把所有鸡蛋放在一个篮子里,(只要篮子摔了,蛋全没了),分布式:就是将鸡蛋放在不同篮子里,(虽然有些篮子摔没有关系)

分布式理想状态是:CAP(Consistency一致性,Availablity可用性,Partition 隔离性),而Zookeeper设计就是一致性和可用性,以及提供只读网络隔离性)

7、Zookeeper Is a Success,with Caveats(Zookeeper是成功,也是有缺陷的)

Zookeeper解决一般分布式的问题,让开发人员专注于业务开发,但是它并不是万能的,如何合理使用Zookeeper,就是学习本书目的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: