栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

ZooKeeper最早起源于雅虎公司研究院的一个研究小组

ZooKeeper最早起源于雅虎公司研究院的一个研究小组

单体应用在达到性能瓶颈之后,就必须靠分布式集群解决高并发问题,而集群的分布式架构和集群节点之间的交互一定少不了可靠的分布式协调工具,ZooKeeper就是目前极为重要的分布式协调工具。
什么是ZooKeeper
ZooKeeper最早起源于雅虎公司研究院的一个研究小组。当时,研究人员发现,在雅虎内部很多大型的系统需要依赖一个类似的系统进行分布式协调,但是这些系统往往存在分布式单点问题,所以雅虎的开发人员就试图开发一个通用的无单点问题的分布式协调框架。
此框架的命名过程也是非常有趣的。在项目初期给这个项目命名时,准备和很多项目一样,按照雅虎公司的惯例使用动物的名字来命名(例如著名的Pig项目)。在探讨取什么名字的时候,研究院的首席科学家Raghu Ramakrishnan开玩笑说:“再这样下去,我们这儿就变成动物园了。”此话一出,大家纷纷表示新框架就叫动物园管理员吧,于是ZooKeeper(动物园管理员)诞生了。而ZooKeeper正好是用来协调分布式环境的不同节点的,形象地说,可以理解为协调各个以动物命名的分布式组件,所以ZooKeeper也就“名副其实”了。
ZooKeeper的优势
ZooKeeper的核心优势是实现了分布式环境的数据一致性,简单地说:每时每刻我们访问ZooKeeper的树结构时,不同的节点返回的数据都是一致的。也就是说,对ZooKeeper进行数据访问时,无论是什么时间,都不会引起“脏读”“幻读”“不可重复读”问题。
“脏读”“幻读”“不可重复读”是数据库事务的概念,当然,ZooKeeper也可以被理解为一种简单的分布式数据库。“脏读”是指一个事务中访问到了另外一个事务未提交的数据。“不可重复读”是指在一个事务内根据同一个条件对数据进行多次查询,但是结果却不一致,原因是其他事务对该数据进行了修改。“幻读”是指当两个完全相同的查询执行时,第二次查询所返回的结果集和第一次查询所返回的结果集不相同,原因也是另外一个事务新增、删除了第一个事务结果集中的数据。说明
“不可重复读”和“幻读”的区别是:“不可重复读”关注的重点在于记录的更新操作,对同样的记录,再次读取后发现返回的数据值不一样了;“幻读”关注的重点在于记录新增或者删除操作(数据条数发生了变化),同样的条件第一次和第二次查询出来的记录数不一样。
ZooKeeper对不同系统环境的支持都很好,在绝大多数主流的操作系统上都能够正常运行,如GNU/Linux、Sun Solaris、Win32以及MacOS等。但是,ZooKeeper官方文档中特别强调,由于FreeBSD系统的JVM实现对Java的NIO Selector(选择器)支持得不是很好,因此不建议在FreeBSD系统上部署ZooKeeper生产服务器。
可以说,ZooKeeper提供的是分布式系统中非常底层且必不可少的基本功能,如果开发者自己来实现这些功能且达到高吞吐、低延迟,同时还要保持一致性和可用性,实际上是非常困难的。借助ZooKeeper提供的这些功能,开发者就可以轻松地在ZooKeeper之上构建自己的各种分布式系统。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389376.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号