Apache zookeeper和nosql数据库
大量的NoSQL数据库是一个笨重的管理。
Apache zookeeper到救援!保持群集中的节点在群集中进行操作,每个数据都是哪些数据,并确保当主设备失败时选择新的主人并非简单。
因此,协调大型分布式系统非常困难。
Hadoop和分布式NoSQL数据库都需要一种管理整个群集的配置。
此过程还需要高度可用,使其在整个系统中不是单一的故障。
这是Apache Zookeeper进入的地方。
ZooKeeper提供了分布式,经常一致的协调服务。
其他几种产品使用ZooKeeper进行群集管理:
Apache Hadoop.
solr云
neo4j.
Accumulo
HBase.
Rackspace.
Zynga.
雅虎(对于几个服务)
ZooKeeper提供了一个类似于计算机文件系统的内存分层存储结构。
此结构由当前的Zookeeper主设备管理,并在群集中的其他节点中复制。
zookeeper群集被称为zookeeper合奏。
只有主管理更新(写入)到存储。
这些更改将检查到磁盘以使其持久,然后复制到Ensemble中的其他Zookeeper实例。
这些服务将其集群配置数据存储在ZooKeeper中。
其中一些人也将关键范围存储在数据库的碎片中。
这使得正在利用NoSQL数据库的客户端使用Zookeeper与合奏中的任何ZooKeeper服务器通信。
通过这种方式,客户端可以发现NoSQL服务器保存他们感兴趣的数据。
查找哪个节点存储哪个键范围最小化NoSQL服务器上的负载,因为它们不需要将数据从一个NoSQL节点转发到实际保存数据的节点。
我们还可以使用Zookeeper的截单存储数据存储(存储不会超出服务重启的存储),这对于存储会话或者其他运行时数据非常有用。
ZooKeeper服务器使用此短暂存储器来确定谁接管,如果主机失败。
每个服务器都在关键空间中创建一个编号的短射Znode(存储文件)。
如果zookeeper master(Leader)遭受硬件故障,则序列中下一个Znode的所有者将成为主站。
这是一个优雅的解决方案,避免了"牛群"效果,所有服务器彼此疯狂地通信几秒钟以选择一个新的主人。
Zookeeper是一个很好的Java解决方案,用于协调系统管理和高可用性所固有的问题。
我们可以使用它来实现高可用的服务,包括消息服务。
因此,如果我们需要创建一个新的分布式服务,请考虑使用zookeeper。