什么是ZooKeeper以及zookeeper的工作原理?

时间:2014-01-15 20:31:33

标签: apache-zookeeper

我正在阅读Apache ZooKeeper。我在互联网上看了很多文档和文章,但我对ZooKeeper的工作方式越来越感到困惑?

目前,我知道ZooKeeper提供了跨节点同步的基础架构,应用程序可以使用它来确保群集中的任务被序列化或同步。它维护着一种由“znodes”组成的树文件系统。例如,我有一个集群,它是一个主节点和两个粉丝,在所有服务器中,这个树文件系统结构总是相同的?如果我在一个跟随服务器中创建一个新的znode,整个集群将同步这个变化?

另一个问题是每个znode只能包含1M数据,因为ZooKeeper不是设计为大数据存储来保存非常大的数据值。但是,如果我需要一种存储大数据的分布式数据库,我该如何使用ZooKeeper来实现呢?如果这个大数据没有存储在znode中,它应该存储在哪里以及ZooKeeper如何获取这些数据?

2 个答案:

答案 0 :(得分:1)

“但如果我需要一种能存储大量数据的分布式数据库,我该如何使用ZooKeeper来实现呢?”别。搅拌机不是汽车; Zookeeper不是一个大型数据存储。

Zookeeper基本上是lock server,并不意味着存储大数据。相反,它通过公开同步工具帮助其他大型数据存储(例如HBase)实现consistency

作为最终用户(只想使用分布式数据库的人),zookeeper不是很有趣。它的目标受众是服务/数据存储作者,他们编写最终用户可能想要的东西。

答案 1 :(得分:0)

ZooKeeper集合必须作为多数(包括主节点)保持一致:您无法保证集合的特定节点与主节点保持同步。为了保证您必须通过该节点实际写入内容:然后将更新节点,之后它将发布更新。这是因为写入是线性的,即严格按顺序写入写入。

我不会将ZooKeeper用于大型存储,原因如上:每次存储时,都会强制大多数节点更新。写入的频繁传播显然违背了您所希望的分布式角色。坚持使用ZooKeeper在客户端之间进行协调,并利用这种协调来执行对实际分布式/分片数据库的写入。