Zookeeper基本教程讲解
时间:2018-09-20
本文章向大家介绍Zookeeper基本教程讲解,需要的朋友可以参考一下
Zookeeper是一个分布式协调服务
Zookeeper服务器的角色
- Leader: 所有的写操作必须要经过Leader完成,在广播给其它服务器。心跳检测。集群中只有一个Leader。
- Follower: 接收客户端连接,处理客户端的读请求,并将写请求转发给Leader处理。参与投票。
- Observer: 与Follower类似,但不参与投票。
Zookeeper服务器的状态
- Looking: 竞选状态。该状态下服务器认为集群中没有Leader,会发起Leader选举。
- Following: 跟随者状态。表明当前服务器角色是Follwer。
- Leading: 领导者状态。表明当前服务器角色是Leader。
- Observing: 表明当前服务器角色是Observer。
术语介绍
myid
myid就是服务器的id。在配置文件中“server.id=host:port:port”,其中“server.”后面的就是myid。例如:
tickTime=2000 dataDir=/var/lib/zookeeper/ clientPort=2181 initLimit=5 syncLimit=2 server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888
zxid
类似关系型数据库中的事务ID,用于标识一次更新操作。zxid是单调递增的。zxid越大,代表Server对Znode的操作越新。
逻辑时钟
每个服务器会维护一个自增的整数,名为逻辑时钟(又叫投票次数),它表示这是该服务器发起的第多少轮投票。同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加,然后与接收到的其它服务器返回的投票信息中的数值相比,根据不同的值做出不同的判断。
两种情况需要进行Leader选举
- 服务器初始化启动
- 服务器运行期间无法和Leader保持连接,Leader节点崩溃,逻辑时钟崩溃
一般建议选取奇数个节点进行搭建分布式服务器集群
选举
https://zookeeper.apache.org/doc/current/recipes.html#sc_leaderElection
https://www.cnblogs.com/ASPNET2008/p/6421571.html
http://www.jasongj.com/zookeeper/fastleaderelection/
https://blog.csdn.net/weixin_40083942/article/details/78484099
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Activiti7入门Demo
- mybatis 中#与$的区别
- Spring中的FactoryBean和BeanFactory
- MybatisPlus分页插件无效解决方案
- springboot+mybatis打印sql
- jquery插件与扩展
- CNN一定需要池化层吗?
- RabbitMQ入门Demo,基于springboot
- 收藏|Pandas缺失值处理看这一篇就够了!
- Spring Boot项目页面报错 OTS parsing error: Failed to convert WOFF 2.0
- Spring Boot开启JSP页面热部署
- Springboot thymeleaf热部署
- Java初始化List的6种方式
- Java遍历Map对象的四种方式
- 【SpringBoot源码解析】第三章:SpringBoot通过打成war包的方式是如何启动的