在学习了Zookeeper(后文都简称zk)的介绍和功能后,您已经很好地理解了zk。 如今,在这个zk教程中,咱们将讨论zk的优势和局限性。 zk有几个功能对用户很是有益,但同时也存在一些局限性,因此在咱们使用zk前,必须先了解一下。让咱们分别学习一下zk的优势与局限性服务器
下面列出了使用zk的各类优势网络
zk节点之间的协调过程很是简单分布式
zk高度同步,这意味着服务器进程之间既存在互斥又存在合做,同步有助于Apache HBase进行配置管理。性能
zk跟踪一个数字,表示每一个更新的顺序,保证消息有序学习
根据具体规则,zk对数据进行编码。 另外,它还可确保咱们的应用程序始终如一地运行。 可是,在MapReduce中,咱们使用此方法(序列化)来协调队列以执行正在运行的线程编码
在读请求多的状况下,能以很快的速度运行线程
此外,能够经过部署更多机器来增强zk的性能blog
众所周知,zk中的消息是有序的。 因此,为了实现更高级别的抽象,须要有序性。 这就是有序性对咱们有利的方式教程
在读多的状况下,zk会很是快队列
zk很是可靠,由于一旦zk更新了,更新后的数据会一直保持,直到被覆盖更新
zk只有两种状况,要么所有成功,要么所有失败,没有中间状态的状况
zk保证在必定时间段内,客户端最终必定能从服务器上读到最新的数据状态
正所谓,"每一个硬币都有两面",zk在有这么多优势的同时也存在一些缺点,下面就是zk不足的列表
在现有服务器中,当新zk服务器数量超过zk服务中已存在的数量时数据会丢失。 同时,向zk服务发出Start命令,新服务器可能造成仲裁
在没有用户干预的状况下,zk服务器没法从版本3.4迁移到3.3,而后再迁移到3.4。
只容许3或5个这样奇数个zk节点(要求奇数是为了保证选举的正常进行由于leader选举要求 可用节点数量 > 总节点数/2,防止脑裂形成集群不可用。同时在容错能力相同的状况下,奇数个节点更节省资源)
目前,它不支持机架放置和感知
不支持减小pod的数量,以防止意外数据丢失
不支持在初始部署后更改volume要求,以防止从新分配意外丢失数据
当服务部署在虚拟网络上时,若是没有彻底从新安装,服务可能没法切换到主机网络。 另外,对于尝试从主机切换到虚拟网络,它们是相同的状况
在虚拟网络上,它目前不支持启用Kerberos
对跨群集方案的支持很是有限。 可是,没有CP系统会一直支持跨集群。 虽然咱们能够说consul彷佛在这方面作得更好
它很是重,因此它须要咱们维持一个至关大的堆栈