zookeeper自问自答
1 zk如何保证下面这些的?
ZooKeeper 非常快速且非常简单。但是,由于它的目标是成为构建更复杂服务(例如同步)的基础,因此它提供了一组保证。这些是:
顺序一致性 - 来自客户端的更新将按发送顺序应用--这个由zid(每个操作都会有个累加id)和队列保证
原子性 - 更新要么成功要么失败。没有部分结果。(主进行的更改操作,都需哟选举过半,如果不过半需要回滚)
单一系统映像 - 无论客户端连接到哪个服务器,它都会看到相同的服务视图。即,即使客户端故障转移到具有相同会话的不同服务器,客户端也永远不会看到系统的旧视图。(通过sync 同步实现,因为过半写的特点,所以从节点数据有可能不一致,读取的时候可以先执行sync 同步主的最新数据)
可靠性 - 应用更新后,它将从那时起持续存在,直到客户端覆盖更新。(主挂了可以选举,集群可以承受小于一半的机器挂掉还能正常跑)
及时性 - 系统的客户视图保证在特定时间范围内是最新的。
2 zk分布式锁如何实现的
3 zk选举过程
ZAB实现了选举和数据同步
4 zk如何实现每个session会话顺序执行的
队列,执行zid事务id累加的。
5 zk选举主节点会出现不可用吗?怎么是高可用?
选举-高可用
1 zk通过选举实现高可用,主挂了从通过选举选出主
2 zk选举会有不可用状态,会停止服务
3 zk选举很快,200毫秒内,没有出现坍塌(只不可用)
6当现有从节点挂掉,或者有新的从节点加入进来,集群是怎么运作的?
心跳
7 因为数据是最终一致,那如果master做了操作只同步了3个节点还有一个节点没同步到数据,这个时候别的客户端读到了老数据,不就不一致了吗?
查询
当会话(zk客户端)查询当前接入的从节点(follower)的时候 从节点会去主节点(leader)去同步最新的数据然后给zk客户端。
问题:那从节点每次都要问一下主节点要最近数据,那丛节点存数据干嘛?
从节点存数据是解决数据持久的问题,而每次询问是解决数据最新避免脏数据问题。
更新
当前会话(zk客户端)做更新操作提给从节点(follower),从节点会把这个操作提给主节点(leader),只有主节点才有权利变更数据,主节点会发送广播,通知所有节点变更,主节点收到过半通过后,然后发送成功的通知(两阶段提交),然后从节点就有了最新的数据。
问题:如果两阶段提交,最后同意一些从节点没收到怎么办?
因为第一阶段数据已经存了,数据已经持久了,再下次查这个数据的时候,从节点会询问主节点从而获得最新的数据。
leader挂了
会进行选举,选举期间,拒绝所有请求。
问题:那不就不可用了吗?
根据实际官网测试,选举会小于200毫秒,实际再5万左右并发的情况下,并没有造成不可用。
8 zk与dubbo如何运作的
zookeeper自问自答相关推荐
- 干货!JAVA容器-自问自答学HashMap
前言 这次我和大家一起学习HashMap,HashMap我们在工作中经常会使用,而且面试中也很频繁会问到,因为它里面蕴含着很多知识点,可以很好的考察个人基础.但一个这么重要的东西,我为什么没有在一开始 ...
- [python]自问自答:python -m参数? (转)
python -m xxx.py 作用是:把xxx.py文件当做模块启动 但是我一直不明白当做模块启动到底有什么用.python xxx.py和python -m xxx.py有什么区别! 自问自答: ...
- JAVA容器-自问自答学HashMap
前言 这次我和大家一起学习HashMap,HashMap我们在工作中经常会使用,而且面试中也很频繁会问到,因为它里面蕴含着很多知识点,可以很好的考察个人基础.但一个这么重要的东西,我为什么没有在一开始 ...
- 分享蔡澜老师的自问自答
蔡澜老师的个人网站上有个「访问自己」的板块,里面记录了很多蔡澜老师的「自问自答」,问题和回答都很有趣,从中挑选了一部分.喜欢这种洒脱率真的生活态度. 附上网址 http://blog.sina.com ...
- Golang 数组的一些自问自答
基于Go-1.17.一些研究Go数组的自问自答,可以考虑作为面试题 image-20211227100817481 所有代码基于Go-1.17.一些研究Go数组的自问自答,可以考虑作为面试题. 问题: ...
- Maven 自问自答
Maven 自问自答 Maven 自问自答 maven有什么用 POM 是一个什么东西 解读pom Build Lifecycle maven 三条指令运行web项目 maven常用指令 maven结 ...
- vue 源码自问自答-响应式原理
vue 源码自问自答-响应式原理 最近看了 Vue 源码和源码分析类的文章,感觉明白了很多,但是仔细想想却说不出个所以然. 所以打算把自己掌握的知识,试着组织成自己的语言表达出来 不打算平铺直叙的写清 ...
- RT_Thread自问自答
在看韦东山老师"RT-Thread内部机制"的视频,挺有意思的,有些概念的理解还是要深究一下,不然可能就是"我知道,这不就是那个....那个....那个",哪个 ...
- 自问自答:在VB中如何实现像C++一样printf的功能
问: 每个整型都转换成5位的字符串,不足的在前面补0.比如:1转换成"00001",10转换成"00010".怎么实现? 答: format(1,"0 ...
最新文章
- zz Expect的安装
- 程序设计分析(开篇)——混沌初开,顿悟设计
- Oracle 10g RAC修改IP/VIP地址示例
- php对帖子分类,php – MySQL:从类别中获取帖子
- python心理学实验程序_心理学实验程序编程(python)
- python 实现对地图的点击_python实现Pyecharts实现动态地图(Map、Geo)
- 【数据库实验】《小型MIS的开发》— JavaFx 开发 民航票务管理系统
- mex 1 hello,world
- 如何保存PPT的背景图片
- Pyrene-PEG-Biotin,芘丁酸聚乙二醇生物素,Biotin-PEG-Pyrene
- 2021周记16:父母和4平米的出租房
- 苹果系统和安卓系统的区别_又一款影视APP,这次支持苹果安卓双系统!
- 微服务通用的“用户角色权限”平台设计
- C语言农历天干地支,求思路。农历年月日时推天干地支
- 推荐几个 Go 圈子的高质量肝帝
- js引用本地json文件
- 密码主页jQuery插件的应用(注册时的验证)
- 阿里技术人才能力模型(深度解读系列之一)
- 桌面管理landesk太古案例
- 深度解析SQL和NoSQL数据库,掌握主流数据库【两万字解析】