001_ZooKeeper简介
1. ZooKeeper是一个高性能的分布式应用程序协调服务。它暴露了一些常用服务, 例如命名注册, 配置管理, 同步控制和群组服务。我们可以使用ZooKeeper来实现达成共识, 集群管理, 领导者选举和制定协议。您可以根据自己的特定需求在此基础上进行构建。
2. ZooKeeper的目标就是封装好复杂易出错的关键服务, 将简单易用的接口和性能高效、功能稳定的系统提供给用户。
3. ZooKeeper是以Fast Paxos算法为基础的, Paxos算法存在活锁的问题, 即当有多个proposer交错提交时, 有可能互相排斥导致没有一个proposer能提交成功, 而Fast Paxos做了一些优化, 通过选举产生一个leader(领导者), 只有leader才能提交proposer, 具体算法可见Fast Paxos。因此, 要想弄懂ZooKeeper首先得对Fast Paxos有所了解。
4. ZooKeeper数据结构
4.1. 在ZooKeeper中, znode是一个跟Unix文件系统路径相似的节点, 可以以key-value的形式往这个节点存储或获取数据。名称key是由斜线/分割的一系列路径元素, ZooKeeper 名称空间中的每个节点都是由一个路径标识的。
4.2. 如果在创建znode时Flag设置为EPHEMERAL, 那么当创建这个znode的节点的客户端和ZooKeeper失去连接后, 这个znode也将自动删除。ZooKeeper客户端和服务器采用长连接方式, 每个客户端和服务器通过心跳来保持连接, 这个连接状态称之为会话(Session), 如果znode是临时节点, 当Session结束的时候, znode也不存在了, 即临时节点是会话级别的。
4.3. znode可以有子节点目录, 被标记为EPHEMERAL的节点不能有子节点目录。
4.4. znode是有版本的, 每个znode中存储的数据可以有多个版本, 也就是一个访问路径可以存储多份数据。
4.5. ZooKeeper使用Watcher察觉事件信息。当客户端接收到事件信息, 比如连接超时、节点数据改变、子节点改变, 可以调用相应的行为来处理数据。
5. ZooKeeper组成
5.1. ZooKeeper Server根据其身份特性分成三种: Leader, Follower和Observer。
5.2. Leader: 负责客户端的Writer类型请求。
5.3. Follower: 负责客户端Reader类型请求, 参与Leader选举等。
5.4. Observer: 特殊的Follower, 其可以接受客户端Reader请求, 但不参与选举。
6. ZooKeeper应用场景
6.1. ZooKeeper从设计模式角度来看, 是一个基于观察者模式设计的分布式服务管理框架, 它负责存储和管理大家都关心的数据, 然后接受观察者的注册, 一旦这些数据的状态发生变化, ZooKeeper就将负责通知已经在ZooKeeper上注册的那些观察者做出相应的反应。
6.2. ZooKeeper是一个典型的分布式数据一致性的解决方案, 分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。
6.3. 配置管理: 在分布式应用环境中很常见, 比如我们平常的应用系统中, 经常会碰到这样的需求: 如机器的配置列表、运行时的开关配置、数据库配置信息等。这些全局配置信息通常具备以下三个特征:
- 数据量比较小。
- 数据内容在运行时动态发生变化。
- 集群中各个集群共享信息, 配置一致。
6.4. 集群管理: ZooKeeper不仅能够帮你维护当前的集群中机器的服务状态, 而且能够帮助你选出一个总管, 让这个总管来管理集群, 这就是ZooKeeper的另外一个功能Leader, 并实现集群容错功能。
- 希望知道当前集群中究竟有多少机器工作。
- 对集群中每天集群的运行时状态进行数据收集。
- 对集群中每台集群进行上下线操作。
7. CAP原则
7.1. 一致性(C): 在分布式系统中的所有数据备份, 在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
7.2. 可用性(A): 保证每个请求不管成功或者失败都有响应。
7.3. 分区容错性(P): 系统中任意信息的丢失或失败不会影响系统的继续运作。
7.4. 一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项。
7.5. 在这三个基本需求中, 最多只能同时满足其中的两项, P是必须的, 因此只能在CP和AP中选择。zookeeper保证的是CP, 对比spring cloud系统中的注册中心eruka实现的是AP。
8. BASE理论
8.1. BASE是Basically Available(基本可用)、Soft-state(软状态)和Eventually Consistent(最终一致性)三个短语的缩写。
8.2. 基本可用: 在分布式系统出现故障, 允许损失部分可用性(服务降级、页面降级)。
8.3. 软状态: 允许分布式系统出现中间状态。而且中间状态不影响系统的可用性。这里的中间状态是指不同的data replication(数据备份节点)之间的数据更新可以出现延时的最终一致性。
8.4. 最终一致性: data replications经过一段时间达到一致性。
8.5. BASE理论是对CAP中的一致性和可用性进行一个权衡的结果, 理论的核心思想就是: 我们无法做到强一致, 但每个应用都可以根据自身的业务特点, 采用适当的方式来使系统达到最终一致性
001_ZooKeeper简介相关推荐
- etcd 笔记(01)— etcd 简介、特点、应用场景、常用术语、分布式 CAP 理论、分布式原理
1. etcd 简介 etcd 官网定义: A highly-available key value store for shared configuration and service discov ...
- Docker学习(一)-----Docker简介与安装
一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...
- 【Spring】框架简介
[Spring]框架简介 Spring是什么 Spring是分层的Java SE/EE应用full-stack轻量级开源框架,以IOC(Inverse Of Control:反转控制)和AOP(Asp ...
- TensorRT简介
TensorRT 介绍 引用:https://arleyzhang.github.io/articles/7f4b25ce/ 1 简介 TensorRT是一个高性能的深度学习推理(Inference) ...
- 谷粒商城学习笔记——第一期:项目简介
一.项目简介 1. 项目背景 市面上有5种常见的电商模式 B2B.B2C.C2B.C2C.O2O B2B 模式(Business to Business),是指商家和商家建立的商业关系.如阿里巴巴 B ...
- 通俗易懂的Go协程的引入及GMP模型简介
本文根据Golang深入理解GPM模型加之自己的理解整理而来 Go协程的引入及GMP模型 一.协程的由来 1. 单进程操作系统 2. 多线程/多进程操作系统 3. 引入协程 二.golang对协程的处 ...
- Linux 交叉编译简介
Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...
- TVM Operator Inventory (TOPI)简介
TOPI简介 这是 TVM Operator Inventory (TOPI) 的介绍.TOPI 提供了比 TVM 具有更高抽象的 numpy 风格的,通用操作和调度.TOPI 如何在 TVM 中,编 ...
- 计算机视觉系列最新论文(附简介)
计算机视觉系列最新论文(附简介) 目标检测 1. 综述:深度域适应目标检测标题:Deep Domain Adaptive Object Detection: a Survey作者:Wanyi Li, ...
最新文章
- SAP MM UB类型的退货STO流程简述
- java中字符与字节的编码关系
- 【C 语言】内存四区原理 ( 栈内存属性增长方向 | 栈内存开口方向 | 代码示例 )
- 这个男人让你的爬虫开发效率提升8倍
- matlab连续信号离散化_MATLAB开发自动驾驶第八课-控制信号帧的回放以进行标签化处理...
- 运行时报错RuntimeError: expected device cpu but got device cuda:0
- 为什么技术最牛的码农当不了首席工程师?
- ffmpeg文档2:输出到屏幕
- 动态加载js文件以支持跨域脚本
- 使用mybatis-spring-boot-starter如何打印sql语句
- [Asp.net]Uploadify上传大文件,Http error 404 解决方案 - wolfy
- ubuntu重装用户root认证
- SOEM报文数据结构介绍
- Unity 3D | 在Unity3D中创建/执行C#脚本
- hello guass
- 推荐一个文献翻译软件--Deja Vu X
- 2021国产数据库领域最具商业合作价值企业盘点
- 借华为鸿蒙系统发布,谈谈操作系统的爱恨情仇发展史
- 在华为云 CCE 上部署 EMQX MQTT 服务器集群
- Java基础|一图总结Java File类(与IO密切相关)