理解Zookeeper

为什么需要Zookeeper?

用一句话概括就是:用起来像单机但是又比单机更可靠

1、集群、可靠
2、当信息还没同步完成时,不对外提供服务
3、同步的时间压缩的更短
主要解决了两个问题:
(1)、避免了单机的不可靠
(2)、在多节点的情况下,尽可能的压缩同步的时间。

Zookeeper诞生历史:

ZooKeeper最早诞生在雅虎研究院的一个研究小组,最开始研究人员发现,在雅虎内部很多大型系统,都需要一个类似的系统,来进行分布式的协调,而这些系统往往都存在单点问题,也就是说一个写在内存里的keyvalue的形式,用它做分布式协调器。一旦荡机,整个系统就挂了,所以雅虎的开发人员就希望开发出这样一种东西:无单点问题的分布式协调框架,精力集中在处理业务逻辑。

Zookeeper对于自己比较官方的定义:

A Distributed Coordination Service for Distributed Applications

通俗的说就是:

Zookeeper是开源的共性能的分布式应用协调系统,一个高性能的分布式数据一致性解决方案。

Zookeeper背后是依赖Java运行的,所以会依赖我们的jdk,众所周知协调服务是比较难做的,因为我们去协调的时候设计到多个节点的配合,就容易出现通信和并发的问题,可能会出现死锁的问题,而Zookeeper背后的动机就是减轻程序员在这部分开发时候的负担。

1、Zookeeper

5大特点(使Zookeeper脱颖而出,和Zookeeper相同或者类似功能的软件也是存在的但是他们没有这5大特点,或者说使没有我们的ZooKeeper高效,这样以来使得我们的Zookeeper在竞争中胜出了)

1、顺序一致性(Zookeeper是分为客户端的和服务端的,我们作为客户端而言,我们有一些消息发给服务端。我们发出去是什么顺序,他就会以顺序一条一条的执行。
2、原子性(有一个请求过来更新内容,这个内容会被立刻同步到所有的节点上去,这个同步是一致的。要么全部同步成功,要么全部都不成功)
3、单一视图(无论我们客户端连接的是哪个Zookeeper,看到的内容都是一致的)
4、可靠性(给节点写一个数据,那么这个数据会一直保留,直到有另外的操作把这个数据写掉,才可能发成变化)
5、及时性(Zookeeper能保证在一定时间段内,而且这个时间段不会很长,一定能保证客户端在这个时间段内能从服务器上读到最新的数据状态)

正是有了这5大特点后,使得Zookeeper简单易用性能卓越

2、集群架构

3、Zookeeper和CAP关系

CP:一致性+分区容错性

能得到一致的数据结果,同时系统对网络具备容错性
但是它不能保证每次服务请求的可用性

Zookeeper为什么选择CP而不选择AP,就是和它的作用是息息相关的,Zookeeper它本身最大的作用就是分布式协调服务,它的职责就是保证数据,在所有服务之间保持同步和一致,所以c出于它的目的而言,就成了必选项。如果说Zookeeper选择AP而放弃C的话,那就使得它的各各节点可能不一致,这会造成非常恐怖的后果,因为本身就是对外提供一些非常重要的一致的信息的,但是现在一旦发生一些小问题,就会导致不同的人找我请求,我会返给它不同的结果。

4、zookeeper的作用(五种)(Zookeeper是一个中间件,主要是用于分布式系统的)

1、分布式服务注册与订阅
2、统一配置文件
3、生成分布式唯一id
4、Master节点选举
5、分布式锁

带你快速理解Zookeeper相关推荐

  1. 一篇文章带你快速理解JVM运行时数据区 、程序计数器详解 (手画详图)值得收藏!!!

    受多种情况的影响,又开始看JVM 方面的知识. 1.Java 实在过于内卷,没法不往深了学. 2.面试题问的多,被迫学习. 3.纯粹的好奇. 很喜欢一句话:"八小时内谋生活,八小时外谋发展. ...

  2. 两个相邻盒子的边框怎么只显示一个_一篇文章带你快速理解盒子模型「经典案例」...

    今天带大家快速理解盒子模型,直接上代码: css盒子 我的css盒子测试模型 上面代码没有任何难度,只是写了一个div标签,大家已经知道,div标签是块级元素,所以会占满一行: 但是我们也注意到了图片 ...

  3. ZooKeeper只完美解决Unable to read additional data from server sessionid 0x0报错问题,并带你深度理解ZooKeeper内部机制之选举机制

    ZooKeeper只完美解决Unable to read additional data from server sessionid 0x0报错问题,并带你深度理解ZooKeeper内部机制之选举机制 ...

  4. 01背包问题:图表法带你快速理解动态规划解决01背包问题 附C++源码

    0-1背包问题 所谓0-1背包问题,也就是给你一个重量为M的背包和n种物品,每种物品有一定的重量和价值,在每种物品均可装入背包1次或不装入(不能仅装入物品的一部分)且不超过背包载重量的前提下,问你怎样 ...

  5. 一篇文章带你快速理解微服务架构,由浅入深带你走进微服务架构的核心

    戳蓝字"CSDN云计算"关注我们哦! 文章来自:Java和Android架构 什么是微服务 首先微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应 ...

  6. 一文助你快速理解ZooKeeper

    来源 | 编程新说 责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 边界的产生与突破 不觉间孩子已经上小学了,前段时间还参加了一次家长会,那就以学校和开会来说吧,这大家都很 ...

  7. 带你轻松理解Zookeeper的选举机制

    一,Zookeeper选举过程中服务器的状态. LOOKING:寻找leader状态,该状态下,服务器认为当前集群没有leader,会发起leader选举.在选举过程中,所有服务器的状态都是LOOKI ...

  8. 【RTOS的最通俗理解】行业大佬用一篇文章带你快速理解RTOS

    资料下载&百问网技术交流群,百万嵌入式工程师聚集地: https://www.100ask.net/page/2248041 文章目录 单片机\_RTOS\_架构 1. RTOS的概念 1.1 ...

  9. 代码的c++实现_一文带你快速理解FreeRTOS代码规范~

    [导读] 遇到些朋友感觉FreeRTOS内核代码看起来很不习惯,不习惯其编码风格,本文就来梳理一下其代码规范,便于提高阅读其代码的效率.代码基于FreeRTOS V10.4.3. FreeRTOS代码 ...

最新文章

  1. 王炸不断,半导体巨头们到底在打什么牌?
  2. Winform 绘制圆形的图片
  3. Java Socket实战之三:传输对象
  4. 在线实时大数据平台Storm版本兼容的问题
  5. Android自定义控件前导基础知识学习(一)——Canvas
  6. 分布式离线计算—Spark—SparkStreaming
  7. A*算法及其matlab实现
  8. VS2003项目转VS2008项目
  9. Linux的打开文件表:打开文件表、文件描述符、打开的文件句柄以及i-node之间的关系
  10. 升降机用三级液压缸的设计与仿真
  11. PMP到底有没有什么用?同学有话说
  12. linux查看任务计划结果,Linux 计划任务
  13. Proximal Algorithms
  14. 读书百客:《圆圆曲》评赏
  15. vue动态设置背景图片
  16. html方框打勾字段,HTML+CSS入门 如何设置 checkbox复选框控件的对勾√样式
  17. Keystore was tampered with, or password was incorr
  18. sign-file: certs/signing_key.pem: 解决方法
  19. 搬砖的成长之路——VMWare网络原理
  20. 根据GEOHASH,查找附近的人,判断距离远

热门文章

  1. mos管的rc吸收电路计算_RC吸收计算应用.doc
  2. 所有获奖的英文名称——英文简历必备
  3. db2数据库(db2数据库安装)
  4. Unity - Timeline 之 Panning and zooming the Clips view(移动与缩放Clip剪辑视图)
  5. Execution和ProcessInstance的分别
  6. 预测学习应用于机器人之Unsupervised Learning for Physical Interaction through Video Prediction
  7. Vue项目使用富文本之tinymce-vue
  8. pytorch 计算 kl散度 F.kl_div()
  9. mysql数据库文件损坏的原因_MySQL数据库文件损坏如何解决
  10. Python办公自动化之Word文档自动化:全网最全,看这一篇就够了!