【大数据】ZooKeeper快速入门
2019-05-13 15:16
696 查看
Zookeeper是什么:
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
Zookeeper工作原理:
Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数Server完成了和 leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和Server具有相同的系统状态。
为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。
Zookeeper设计目的:
- 最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。
- 可靠性:具有简单、健壮、良好的性能,如果消息被到一台服务器接受,那么它将被所有的服务器接受。
- 实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。
- 等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。
- 原子性:更新只能成功或者失败,没有中间状态。
- 顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。
ZooKeeper入门课程: 大数据ZooKeeper快速入门
(本课程以帮助学员熟悉zookeeper为目标,适合有一定基础的学员学习。)
更多精品课程:
阿里云大学官网(阿里云大学 - 官方网站,云生态下的创新人才工场)
相关文章推荐
- 【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)
- HealthKit开发快速入门教程之HealthKit数据的操作
- Python快速入门(1)-变量和简单数据类型
- Hadoop教程(一):简介、大数据解决方案、介绍快速入门
- Flex 3快速入门: 处理数据 定义数据模型
- 如何快速入门python数据分析
- ASP.NET MVC3 快速入门-第五节 从控制器访问模型中的数据
- HBase 快速入门之 --数据模型(逻辑结构)
- Enterprise Library 4.1数据访问应用程序块快速入门【6】使用DataSet更新数据库
- 复杂的数据类型5 - C++快速入门11
- Python学习笔记(二):语句、数据类型(快速入门篇)
- 复杂的数据类型1 - C++快速入门07
- Python个人快速入门学习(三)Python中的基本数据类型
- C语言快速入门之数据类型与存储
- zookeeper快速入门
- Flex 3快速入门: 处理数据 使用数据绑定
- ASP.NET MVC3 快速入门-第六节 增加一个追加数据的方法和一个追加数据的视图
- Java数据对象(JDO)快速入门
- Enterprise Library 4.1数据访问应用程序块快速入门【7】在XML中进行多行检索
- 复杂的数据类型5 - C++快速入门11