zookeeper学习笔记,zookeeper工作机制,选举机制,监听器原理,面试问答

zookeeper工作机制

zookeeper = 文件系统+通知机制
zookeeper从设计模式来看:是一个基于观察者模式设计的分布式服务管理框架。它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,zookeeper将负责通知已经在zookeeper上注册的观察者。
微服务重在解耦合,使每个模块都独立。分布式重在资源共享与加快计算机计算速度。
分布式:分散压力。微服务:分散能力。

zookeeper特点

zookeeper:一个领导者(Leader),多个跟随者(follower)组成的集群。
集群中只要有半数以上节点存活,zookeeper集群就能正常服务。(否则不能)
实时性,在一定时间范围内,client能读取到最新的数据
应用场景
统一命名服务、统一配置管理、统一集群管理、服务器动态上下线

配置参数解读

tickTime = 2000:通信心跳数,zookeeper服务器与客户端心跳时间,单位毫秒
initLimit = 10:LF初始通信时限
syncLimit = 5:LF同步通信时限
dataDir :数据文件目录 + 数据持久化路径,主要用于保存zookeeper中的数据
clientPort = 2181:客户端连接端口

zookeeper内部原理

选举机制

半数机制:集群中半数以上集群存活,集群可用,所以zookeeper适合安装奇数台服务器
即6台服务器挂掉3台不工作,5台服务器也是挂掉3台不工作,这样如果6台服务器,就有可能浪费一台服务器。
选举机制:顺序选举(id大的先选为leader),先入为主,开始选举时按照半数以上原则,选定就是leader,再加入的服务器也不能为leader
节点类型 :
持久(persistent) :客户端与服务器断开连接后,创建的节点不删除
短暂(ephemeral):客户端与服务器断开连接后,创建节点自己删除

监听器原理

1、监听原理详解
1)首先要有一个main()线程
2)在main线程中创建zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener)。
3)通过connect线程将注册的监听事件发送给zookeeper
4)在zookeeper的注册监听器列表中将注册的监听事件添加到列表中
5)zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程
6)listener线程内部调用了process()方法
常见的监听:
1)监听节点数据的变化
get path[watch]
2)监听子节点增减的变化
ls path[watch]
写数据流程:此截图尚硅谷
在这里插入图片描述
zookeeper的部署方式有哪几种? 单机模式和集群模式
集群中的角色有哪些?Leader和Follower
集群中最少需要几台机器? 3台
zookeeper的常用命令: ls create get delete set rmr …

参考文章:https://blog.csdn.net/java_66666/article/details/81015302

发布了31 篇原创文章 · 获赞 1 · 访问量 5674

猜你喜欢

转载自blog.csdn.net/wjs040/article/details/95060332