ZooKeeper是一个分布式协调服务来管理大量的主机。协调和管理在分布式环境的一个服务是一个复杂的过程。ZooKeeper 简单解决了其结构和API这个问题。ZooKeeper允许开发人员能够专注于核心应用程序逻辑,而无需担心应用程序的分布式特性。
ZooKeeper框架始建于“雅虎”,一个简单而强大的方法用于访问应用程序。后来 Apache ZooKeeper 成为用 Hadoop,HBase 的组织服务以及其他分布式架构的标准。例如,Apache HBase 使用 ZooKeeper 跟踪分布式数据的状态。
在进一步向前,我们知道有关分布式应用程序的一两件事情。所以,我们不如用分布式应用程序来快速概览开始讨论。
分布式应用程序
分布式应用程序可以通过在它们之间协调以完成特定的任务,快速且有效的方式在多个系统中的网络在给定时间(同时)运行。通常,复杂的和耗时的任务,这将需要几个小时由非分布式应用程序(在一个系统上运行)来完成,可以在几分钟内由分布式应用程序通过使用所有所涉及的系统的计算能力来完成。
完成任务的时间可以通过配置分布式应用到更多的系统上运行来进一步降低。一组在分布式应用程序正在运行的系统被称为集群,在群集中运行的每台机器被称为节点。
分布式应用程序有两部分,分别是:服务器和客户端应用程序。服务器应用程序实际上是分布式的,有一个共同的接口,这样客户端可以连接到集群中的任何服务器,并得到同样的结果。客户端应用程序用一个分布式应用程序交互工具。
分布式应用程序的好处
-
可靠性 − 单个或几个系统的故障不会使整个系统失效。
-
可扩展性 − 性能可以在无需停机的应用程序的微小配置变化来在需要时增加更多的机器。
-
透明性 − 隐藏了系统的复杂性并表现为一个单一的实体/应用程序。
分布式应用程序的挑战
-
竞争条件 − 两个或更多的机器试图执行特定任务,这实际上需要将仅由一台机器在任何给定的时间内完成。例如,共享资源只能由一台机器在任何特定时间进行修改。
-
死锁 − 两个或更多的操作等待对方无限期完成。
-
不一致性 - 数据部分失败。
Apache ZooKeeper 意味着什么?
Apache ZooKeeper是由群集(组节点)之间进行相互协调,并保持强大的同步技术共享数据的服务。ZooKeeper本身是一个分布式应用写入分布式应用提供服务。
ZooKeeper 提供的通用服务如下-
-
命名服务 − 确定在一个集群中的节点的名字。它类似于DNS,只不是过节点。
-
配置管理 − 系统最近加入节点和向上最新配置信息。
-
集群管理 − 加入/节点的群集和节点状态实时离开。
-
节点领导者选举 − 选举一个节点作为领导者协调的目的。
-
锁定和同步服务 − 锁定数据,同时修改它。这种机制可以帮助自动故障恢复,同时连接其它的分布式应用程序。如Apache HBase。
-
高可靠的数据注册表 − 一个或几个节点的可用性的数据向下。
分布式应用程序提供了很多好处,但他们也带来了一些复杂的,难以破解的挑战。ZooKeeper框架提供了完整的机制来克服所有挑战。竞争条件和死锁使用故障安全同步的方式进行处理。另一个主要缺点是不一致的数据,ZooKeeper 使用原子性解决。
ZooKeeper的优点
下面是使用 ZooKeeper 的好处 -
-
简单的分布式协调过程
-
同步 − 互斥和服务器进程之间的合作。这个过程有助于Apache HBase 的配置管理。
-
有序消息
-
序列化− 根据特定的规则进行编码数据。确保应用程序不断地运行。这种方法可以用来在MapReduce的协调队列以执行正在运行的线程。
-
可靠性
-
原子性 − 数据传输成功或完全失败,但没有事务处理部分。
易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。
加QQ群啦,易百教程官方技术学习群
注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。