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的优点与局限性的更多相关文章

  1. [译]ZOOKEEPER RECIPES-Leader Election

    选主 使用ZooKeeper选主的一个简单方法是,在创建znode时使用Sequence和Ephemeral标志.主要思想是,使用一个znode,比如"/election",每个客 ...

  2. [译]ZOOKEEPER RECIPES-Locks

    锁 全局式分布式锁要求任何时刻没有两个客户端会获得同一个锁对象,这可以通过使用ZooKeeper实现.像优先级队列一样,首先需要定义一个锁节点. 在ZooKepeer的发布中src/recipes/l ...

  3. [译]ZOOKEEPER RECIPES-TWO PHASED COMMIT

    两段式提交 两段式提交协议可以让所有分布式系统中的客户端达成协议同时提交或回滚事务. 在ZooKeeper中你可以通过协调者(coordinator)创建一个事务节点来实现两段式提交.例如" ...

  4. [译]ZOOKEEPER RECIPES-Queues

    队列 分布式队列是一种常见的数据结构.为了在ZooKepeer中实现分布式队列,第一步是要使用一个znode代表队列本身.分布式客户端通过create()方法将内容放入一个名叫"queue- ...

  5. [译]ZOOKEEPER RECIPES-Barriers

    Barrier 在分布式系统中常使用Barrier来阻塞进程,当满足一定条件后再恢复进行后续操作.Barrier在Zookeeper中可以通过设计一个Barrier节点来实现.Barrier 节点存在 ...

  6. [译]ZooKeeper recipes-引言

    ZooKeeper高级应用 本系列将指导使用ZooKeeper来实现高级功能,所有功能都在客户端完成,不需要ZooKeeper的特殊支持.希望可以得到社区的支持将这些加入到一个标准的客户端类库中(Cu ...

  7. <译>Zookeeper官方文档

    apache原文地址:http://zookeeper.apache.org/doc/trunk/zookeeperOver.html ZooKeeper ZooKeeper: A Distribut ...

  8. Zookeeper 1、Zookeeper 定义与工作原理

    1.什么是Zookeeper » Zookeeper 是 Google 的 Chubby一个开源的实现,是 Hadoop 的分布式协调服务 » 它包含一个简单的原语集,分布式应用程序可以基于它实现同步 ...

  9. Hbase记录-ZooKeeper介绍

    ZooKeeper是一个分布式协调服务来管理大量的主机.协调和管理在分布式环境的一个服务是一个复杂的过程.ZooKeeper 简单解决了其结构和API这个问题.ZooKeeper允许开发人员能够专注于 ...

随机推荐

  1. JavaScript -- 筑基

    本片博客记录了我JavaScript筑基阶段的学习内容,JavaScript不是Java,但是我下意识的把它和java对比学习,有些地方比较有趣,有些地方从java角度看,简直匪夷所思,不过现在总体感 ...

  2. Kubernetes的Job对象

    Deployment.StatefulSet及DaemonSet三个主要用来进行长时间业务,不会退出. 而有一些离线业务,或者叫Batch Job(计算业务),计算完成后就直接退出 了,如果用Depl ...

  3. 在nodejs中怎么使用redis缓存组件

    redis量个强大的缓存组件,可以部署在windows和linux环境之上,它有五大存储结构,其中有一种为列表list,它可以实现quene和stack的功能,即队列和堆栈的功能. 当然使用先安装py ...

  4. 利用Azure虚拟机安装Dynamics 365 Customer Engagement之四:组织单位服务安装账号设置

    我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...

  5. 基于opencv -python--银行卡识别

    import cv2 def sort_contours(cnts, method="left-to-right"): reverse = False i = 0 if metho ...

  6. 【Gradle】Android Gradle 高级自定义

    Android Gradle 高级自定义 使用共享库 Android的包,如android.app,android.content,android.view,android.widget等,是默认包含 ...

  7. 【Autoit】Autoit 使用

    一.Autoit 上传文件. 1.常用语法 - WinActivate("title")         聚焦到指定活动窗口 - ControlFocus ( "titl ...

  8. FastDFS--storage文件上传和下载问题

    使用FastDFS--storage文件上传出现如下bug: >>> ret = client.upload_by_filename('/home/python/Desktop/1. ...

  9. GAN网络原理介绍和代码

    GAN网络的整体公式: 公式各参数介绍如下: X是真实地图片,而对应的标签是1. G(Z)是通过给定的噪声Z,生成图片(实际上是通过给定的Z生成一个tensor),对应的标签是0. D是一个二分类网络 ...

  10. 05. Go 语言函数

    Go 语言函数 函数是组织好的.可重复使用的.用来实现单一或相关联功能的代码段,其可以提高应用的模块性和代码的重复利用率. Go 语言支持普通函数.匿名函数和闭包,从设计上对函数进行了优化和改进,让函 ...