Zookeeper —— 初识
什么是 Zookeeper
Zookeeper 是一个开放源代码的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现;
Zookeeper 是典型的分布式数据一致性的解决方案,分布式应用程序可以基于它来实现:数据发布/订阅、负载均衡、命名服务、分布式锁等;
Zookeeper 基本概念
集群角色:
Zookeeper 中有 Leader、Follower 和 Observer 三种角色,Leader 为客户端提供读和写服务,Follower 和 Observer 只提供读服务;
其中 Observer 不参与 Leader 过程,也不参与写操作的“过半写成功”的策略,所以增加 Observer 机器可以在不影响写性能的情况下增加读性能;
Leader:
事务请求的唯一调度和处理者,保证集群事务处理的顺序性;
集群内部各服务器的调度者;
Follower:
Follower 服务器是 ZK 集群状态的跟随者。
处理客户端非事务请求,转发事务请求给 Leader 服务器;
参与事务请求 Proposal 的投票;
参与 Leader 选举投票;
Observer:
ZK 3.3.0 引入的全新服务器角色;
观察 ZK 集群的最新状态变化并将这些状态变更同步过来。
对于非事务请求可以独立处理,但事务请求会转发给 Leader 服务器;
也不参与任何形式的投票,包括事务请求 Proposal 和 Leader 选举投票;
Observer 只提供非事务服务;
作用:在不伤害写性能的情况下扩展 ZK;
数据模型
文件系统
Zookeeper 也使用文件系统组织系统中存储的资源,结构如下所示:
/
/app1/c1
/app1/c2
/app1/c3
/app2/...
其并没有文件和文件夹的概念,只有 Znode 概念,它既可以作为容器存储数据,也可以持有其他 Znode 形成父子关系;
ZNode(数据节点)
ZK 的视图结构和标准的 Unix 文件系统非常类似,如:/app1/c1
Znode 是 ZK 中数据的最小单元;
每个 ZNode 上都可以保存数据;
同时还可以挂载子节点,构成一个层次化的命名空间,称之为树;
ZXID(事务ID)
数据节点创建、删除、节点内容更新和客户端会话创建与失效等操作,都是事务操作;
每一个事务请求都会为其分配一个全局唯一的事务 ID,用 ZXID 表示,通常是 64 位数字;
ZNode 节点特性
节点类型
持久节点(persistent)
创建后一直存在于 ZK 服务器上,直到主动删除
持久顺序节点(persistent——sequential)
增加顺序的特性,每个父节点都会维护它的第一级子节点的顺序;
ZK 自动会给节点名加上一个数字后缀,后缀的上限是整型的最大值;
临时节点(ephemeral)
临时节点的生命周期和客户端的会话绑定,会话结束则节点消失;
临时节点不能有子节点,即临时节点只能作为叶子节点;
临时顺序节点(ephemeral_sequential)
增加了顺序特性;
节点状态
looking:
不确定 leader 状态(选主中);
对外不提供服务;
following:
跟随者状态;
作为系统的从节点,接收主节点的更新并写入本地日志;
leading:
领导者状态;
作为系统的主节点,接收客户端更新,写入本地日志,并通知从节点复制;
observing:
观察者状态;
表示当前角色是 Observer,与 Follower 不同是不参与投票和选举;
Zookeeper —— 初识的更多相关文章
- Dubbo+Zookeeper(一)Zookeeper初识
前面花了一段时间去学习SpringCloud的相关知识,主要是理解微服务的概念并使用SpringCloud的一系列组件实现微服务落地.学习这些组件本身是简单的,跟着操作一遍基本就会了,这也得益于Spr ...
- zookeeper初识之原理
ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. Zookeeper是hadoop的一个子项目 ...
- zookeeper初识
ZOOKEEPER是为分布式系统提供高性能的协调工具 角色: 1.领导者(leader):负责进行投票的发起和决议,更新系统状态2.学习者(learner):包括跟随者(follower)和观察者(o ...
- 什么是ZooKeeper?
前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上次写了一篇 什么是消息队列?以后,本来想入门一下K ...
- 答应我,不会这些概念,简历不要写 “熟悉” zookeeper
整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 一口气说出 9种 分布式ID生成方式,面试官有点懵了 面试总被问 ...
- 【分布式锁】06-Zookeeper实现分布式锁:可重入锁源码分析
前言 前面已经讲解了Redis的客户端Redission是怎么实现分布式锁的,大多都深入到源码级别. 在分布式系统中,常见的分布式锁实现方案还有Zookeeper,接下来会深入研究Zookeeper是 ...
- 初识zookeeper(1)之zookeeper的安装及配置
初识zookeeper(一)之zookeeper的安装及配置 1.简要介绍 zookeeper是一个分布式的应用程序协调服务,是Hadoop和Hbase的重要组件,是一个树型的目录服务,支持变更推送. ...
- 初识zookeeper以及安装和集群部署
初识zookeeper以及安装和集群部署 一.Zookeeper单体版安装 在安装zookeeper之前要先安装jdk环境,具体在linux环境安装jdk1.8请参照linux笔记. ...
- 初识ZooKeeper
最近在看Apache下的一个开源项目ZooKeeper(http://zookeeper.apache.org/doc/trunk/),用百度百科介绍的来说,Zookeeper是一个针对大型分布式系统 ...
随机推荐
- 【Excel】将IP按照IP地址(v4)增长序列排序
Background: Excel列中,有多个net-block, 将这些net-block按照IP地址(v4)自己的大小从小到大排序. Idea: IPv4地址的格式是点分十进制的,也就是说每一个点 ...
- Mysql You can change this value on the server by setting the max_allowed_packet' variable. 异常
MySQL根据配置文件会限制server接受的数据包大小. 有时候大的插入和更新会被max_allowed_packet 参数限制掉,导致失败. 查看目前配置, Windows 系统 配置文件为 my ...
- BZOJ.4199.[NOI2015]品酒大会(后缀数组 单调栈)
BZOJ 洛谷 后缀自动机做法. 洛谷上SAM比SA慢...BZOJ SAM却能快近一倍... 显然只需要考虑极长的相同子串的贡献,然后求后缀和/后缀\(\max\)就可以了. 对于相同子串,我们能想 ...
- Java并发编程(六)-- 同步块
上一节已经讲到,使用Synchronzied代码块可以解决共享对象的竞争问题,其实还有其他的方法也可以避免资源竞争问题,我统称他们为Java同步块.Java 同步块(synchronized bloc ...
- CallContext,ThreadStatic,AsyncLocal<T>,ThreadLocal<T>,学习笔记
1.CallContext 在当前调用上下文的线程数据槽里存储对象 2.ThreadStatic 是一个特性 3.AsyncLocal<T> 是一个类型,该字段应当为static,保证单例 ...
- ssm数据库异常问题
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflecti ...
- PAT Basic 1008
1008 数组元素循环右移问题 (20 分) 一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1⋯AN ...
- vivox23幻彩版手机怎么设置双击息屏
除了使用电源键来实现快速息屏方式外,我们还能通过双击屏幕的手势来息屏,下面小编就教大家vivox23幻彩版设置双击息屏的方法教程. vivox23幻彩版怎么设置双击息屏 第一步:打开vivox23幻彩 ...
- GMA Round 1 函数求值
传送门 函数求值 设函数$f(x)=x^{2018}+a_{2017}*x^{2017}+a_{2016}*x^{2016}+...+a_{2}*x^2+a_{1}*x+a_{0}$,其中$a_{0} ...
- Docker容器内部端口映射到外部宿主机端口的方法小结
转自:https://www.cnblogs.com/kevingrace/p/9453987.html Docker允许通过外部访问容器或者容器之间互联的方式来提供网络服务.容器启动之后,容器中可以 ...