[译]Zookeeper的优点与局限性
1.Zookeeper的优点与局限性
在学习了Zookeeper(后文都简称zk)的介绍和功能后,您已经很好地理解了zk。 现在,在这个zk教程中,我们将讨论zk的优点和局限性。 zk有几个功能对用户非常有益,但同时也存在一些局限性,所以在我们使用zk前,必须先了解一下。让我们分别学习一下zk的优点与局限性

2.zk的优点
下面列出了使用zk的各种优点

01.分布式协调过程简单
zk节点之间的协调过程非常简单
02.同步
zk高度同步,这意味着服务器进程之间既存在互斥又存在合作,同步有助于Apache HBase进行配置管理。
03.有序消息
zk跟踪一个数字,表示每个更新的顺序,保证消息有序
04.序列化
根据具体规则,zk对数据进行编码。 另外,它还可确保我们的应用程序始终如一地运行。 但是,在MapReduce中,我们使用此方法(序列化)来协调队列以执行正在运行的线程
05.速度
在读请求多的情况下,能以很快的速度运行
06.可扩展性
此外,可以通过部署更多机器来加强zk的性能
07.有序性有何优势?
众所周知,zk中的消息是有序的。 所以,为了实现更高级别的抽象,需要有序性。 这就是有序性对我们有利的方式
08.快
在读多的情况下,zk会非常快
09.可靠性
zk非常可靠,因为一旦zk更新了,更新后的数据会一直保持,直到被覆盖更新
10.原子性
zk只有两种情况,要么全部成功,要么全部失败,没有中间状态的情况
11.实时性
zk保证在一定时间段内,客户端最终一定能从服务器上读到最新的数据状态
3.zk的局限性
正所谓,"每个硬币都有两面",zk在有这么多优点的同时也存在一些缺点,下面就是zk不足的列表

01.增加新的zk服务器时可能导致数据丢失
在现有服务器中,当新zk服务器数量超过zk服务中已存在的数量时数据会丢失。 同时,向zk服务发出Start命令,新服务器可能形成仲裁
02.不能迁移
在没有用户干预的情况下,zk服务器无法从版本3.4迁移到3.3,然后再迁移到3.4。
03.节点数
只允许3或5个这样奇数个zk节点(要求奇数是为了保证选举的正常进行因为leader选举要求 可用节点数量 > 总节点数/2,防止脑裂造成集群不可用。同时在容错能力相同的情况下,奇数个节点更节省资源)
04.机架感知复制
目前,它不支持机架放置和感知
05.缩容
不支持减少pod的数量,以防止意外数据丢失
06.磁盘变更
不支持在初始部署后更改volume要求,以防止重新分配意外丢失数据
07.虚拟网络
当服务部署在虚拟网络上时,如果没有完全重新安装,服务可能无法切换到主机网络。 另外,对于尝试从主机切换到虚拟网络,它们是相同的情况
08.Kerberos
在虚拟网络上,它目前不支持启用Kerberos
09.支持有限
对跨群集方案的支持非常有限。 但是,没有CP系统会一直支持跨集群。 虽然我们可以说consul似乎在这方面做得更好
10.复杂
它非常重,所以它需要我们维持一个相当大的堆栈
[译]Zookeeper的优点与局限性的更多相关文章
- [译]ZOOKEEPER RECIPES-Leader Election
选主 使用ZooKeeper选主的一个简单方法是,在创建znode时使用Sequence和Ephemeral标志.主要思想是,使用一个znode,比如"/election",每个客 ...
- [译]ZOOKEEPER RECIPES-Locks
锁 全局式分布式锁要求任何时刻没有两个客户端会获得同一个锁对象,这可以通过使用ZooKeeper实现.像优先级队列一样,首先需要定义一个锁节点. 在ZooKepeer的发布中src/recipes/l ...
- [译]ZOOKEEPER RECIPES-TWO PHASED COMMIT
两段式提交 两段式提交协议可以让所有分布式系统中的客户端达成协议同时提交或回滚事务. 在ZooKeeper中你可以通过协调者(coordinator)创建一个事务节点来实现两段式提交.例如" ...
- [译]ZOOKEEPER RECIPES-Queues
队列 分布式队列是一种常见的数据结构.为了在ZooKepeer中实现分布式队列,第一步是要使用一个znode代表队列本身.分布式客户端通过create()方法将内容放入一个名叫"queue- ...
- [译]ZOOKEEPER RECIPES-Barriers
Barrier 在分布式系统中常使用Barrier来阻塞进程,当满足一定条件后再恢复进行后续操作.Barrier在Zookeeper中可以通过设计一个Barrier节点来实现.Barrier 节点存在 ...
- [译]ZooKeeper recipes-引言
ZooKeeper高级应用 本系列将指导使用ZooKeeper来实现高级功能,所有功能都在客户端完成,不需要ZooKeeper的特殊支持.希望可以得到社区的支持将这些加入到一个标准的客户端类库中(Cu ...
- <译>Zookeeper官方文档
apache原文地址:http://zookeeper.apache.org/doc/trunk/zookeeperOver.html ZooKeeper ZooKeeper: A Distribut ...
- Zookeeper 1、Zookeeper 定义与工作原理
1.什么是Zookeeper » Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 » 它包含一个简单的原语集,分布式应用程序可以基于它实现同步 ...
- Hbase记录-ZooKeeper介绍
ZooKeeper是一个分布式协调服务来管理大量的主机.协调和管理在分布式环境的一个服务是一个复杂的过程.ZooKeeper 简单解决了其结构和API这个问题.ZooKeeper允许开发人员能够专注于 ...
随机推荐
- SpringCloud微服务(05):Zuul组件,实现路由网关控制
本文源码:GitHub·点这里 || GitEE·点这里 一.Zuul组件简介 1.基础概念 Zuul 网关主要提供动态路由,监控,弹性,安全管控等功能.在分布式的微服务系统中,系统被拆为了多个微服务 ...
- MarkDown富文本编辑器怎么加载模板文件
我们只需要一段加载代码就可以搞定MarkDown加载模板文件. $("#md-demo").bind('click', function () { $.get("/Lib ...
- Git - Git基本常用命令
Git基本常用命令 mkdir: XX (创建一个空目录 XX指目录名) pwd: 显示当前目录的路径. git init 把当前的目录变成可以管理 ...
- ASP.NET Core Web 应用程序系列(一)- 使用ASP.NET Core内置的IoC容器DI进行批量依赖注入(MVC当中应用)
在正式进入主题之前我们来看下几个概念: 一.依赖倒置 依赖倒置是编程五大原则之一,即: 1.上层模块不应该依赖于下层模块,它们共同依赖于一个抽象. 2.抽象不能依赖于具体,具体依赖于抽象. 其中上层就 ...
- Selenium(十二):操作Cookie、调用JavaScript、HTML5的视频播放
1. 操作Cookie 有时候我们想要验证浏览器中cookie是否正确,因为基于真实cookie的测试是无法通过白盒和集成测试的.WebDriver提供了操作Cookie的相关方法,可以读取.添加和删 ...
- 史诗级最强教科书式“NIO与Netty编程”
史诗级最强教科书式“NIO与Netty编程” 1.1 概述 1.2 文件IO 1.2.1 概述和核心API 1.2.2 案例 1.3 网络IO 1.3.1 概述和核心API 3.4 AIO编程 3.5 ...
- JVM从入门开始深入每一个底层细节
1 官网 1.1 寻找JDK文档过程 www.oracle.com -> 右下角Product Documentation -> 往下拉选择Java -> Java SE docum ...
- 【转】java中使用WebSocket
传统的请求,都是从客服端到服务端,表现在web应用上就是,消息都只能由浏览器发起请求,调用客户端的方法. webSocket可以从服务器端推送消息给浏览器. 使用场景: 当客户端发起缴费请求时,由服务 ...
- android binder 进程间通信机制1-binder 驱动程序
以下内容只大概列个提纲,若要明白其中细节,还请看源码: 申明:本人菜鸟,希望得到大神指点一二,余心足已 binder 设备:/dev/binder binder 进程间通信涉及的四个角色: Clien ...
- java8-13-默认方法 静态方法 重复注解 类型注解
java8增加默认方法 静态方法 重复注解 类型注解 1.默认方法 default修饰 为什么要有这个特性? 当修改接口时候,需要修改全部实现该接口的类.为了解决这个问题,所以引进默认方法 ...