文档章节

zookeeper简介

Lbj虞
 Lbj虞
发布于 2017/03/21 20:40
字数 826
阅读 45
收藏 0

zookeeper是hadoop的一个子项目,它与hadoop有密切的关系但确没有任何的依赖,是一个分布式应用程序协调服务 分布式的应用程序可以基于它,实现同步服务,配置服务,命名服务等功能

zookeeper功能: 1.一致性,client不论连接到哪一个Server,展示给它的都是同一个视图 2.可靠性,具有简单,良好,稳健的消息传递功能,如果一台Server接受到消息m,则所有的Server都会接受到消息m 3.实时性,zookeeper会在一定时间间隔内,去统计服务端Server是否有更新,或者失效的Server,会把这些信息通知给client端,更新最新的server或者剔除失效的server,可能由于网络延迟,如果client要保证每次调用最新的server,可以在调用前sync()接口 4.等待无关,慢或者失效的client不会干预快速的client请求每个client都是有效平等的等待 5.原子性,这个很重要,server端的更新要么成功,要么失败,不存在中间状态 6.顺序性,全局有序和局部有序,全局有序:指的是消息顺序a,b那么所有的服务server发布消息的顺序必定是先a后b 局部有序:指的是消息顺序a,b在同一个server上发布,那么顺序必定是先a后b的发布出去

zookeeper的核心是原子广播,这个机制保证了各个server之间的同步,实现这个机制的协议Zab协议 zab协议有两种工作模式,恢复模式(选主)和广播模式(同步) 恢复模式:当服务启动或者leader崩溃后,进入恢复模式,读取保存的服务快照,当leader被选举出来后,且server和leader的状态完成同步以后,就会进入广播模式,恢复模式就此结束

主服务 Zookeeper Master选举   Zookeeper会分配给注册到它上面的客户端一个编号,并且zk自己会保证这个编号的唯一性和递增性,N多机器中只需选出编号最小的Client作为Master就行,并且保证这些机器的都维护一个一样的meta信息视图,一旦Master挂了,那么这N机器中编号最小的胜任Master,Meta信息是一致的

分布式锁

  在一台机器上要多个进程或者多个线程操作同一资源比较简单,因为可以有大量的状态信息或者日志信息提供保证,比如两个A和B进程同时写一个文件,加锁就可以实现。但是分布式系统怎么办?需要一个三方的分配锁的机制,几百台worker都对同一个网络中的文件写操作,怎么协同?还有怎么保证高效的运行? 解决问题: 高效分布式的分布式锁 Zookeeper分布式锁   分布式锁主要得益于ZooKeeper为我们保证了数据的强一致性,zookeeper的znode节点创建的唯一性和递增性能保证所有来抢锁的worker的原子性

© 著作权归作者所有

Lbj虞
粉丝 5
博文 30
码字总数 20298
作品 0
南京
程序员
私信 提问

暂无文章

对话亲历者|鲁肃:我在支付宝“拧螺丝“的日子

摘要: 他是支付宝技术平台的奠基人之一,但是他总说“这还不是我心中最完美的架构”;他行事低调但却有着“此时此地,非我莫属”的豪气;他曾无数次充当救火大队长,但自评只是“没有掉队的...

阿里云云栖社区
5分钟前
0
0
设置 npm yarn 淘宝源

设置npm config set chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver设置yarn config set "chromedriver_cdnurl" "https://npm.taobao.org/mirrors/chromedriver"......

internetafei
14分钟前
0
0
Docker搭建Mysql集群、主从同步复制

1、创建数据挂载点: mkdir /opt/mysql-master/mysql、/opt/mysql-master/conf.d、/opt/mysql-slave/mysql、/opt/mysql-slave/conf.d 2、分别在master、slave节点文件目录conf.d下创建touch......

WALK_MAN
37分钟前
8
0
手把手教你做中间件开发(分布式缓存篇)-借助redis已有的网络相关.c和.h文件,半小时快速实现一个epoll异步网络框架,程序demo

本文档配合主要对如下demo进行配合说明: 借助redis已有的网络相关.c和.h文件,半小时快速实现一个epoll异步网络框架,程序demo 0. 手把手教你做中间件、高性能服务器、分布式存储技术交流群 ...

y123456yz
38分钟前
2
0
Spring-boot单元测试(私有方法测试)

Spring-boot的单元测试网上有了很多,当项目是可以使用spring-boot正常运行时,只要在测试类上添加如下配置就使用@Autowired的方式进行单元测试 @RunWith(SpringJUnit4ClassRunner.class)@...

琴兽
59分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部