zookeeper的会话
zookeeper 会话
事务:能改变zookeeper一致性的操作都是事务,比如添加节点、删除节点和更新数据等。
zk为每个事务分配一个唯一的zxid,用于标记事务的顺序。对于竞争,zk使用乐观锁的保证高效性。过程如下:
- 获取znode的版本
- 执行操作
- 更新数据时,重新获取版本,并比对版本的序号,如果一致则执行更新
一个客户端会话包含4个核心的数据:
- sessionId:会话唯一的ID
- TimeOut:会话过期的时间
- TickTime:下次检查客户端活性的时间
- isClosing:客户端是否关闭的标记
会话管理
SessionTicker是管理会话的类,有3个核心的成员,分别是:
- sessionById:HashMap<Long, SessionImpl> 管理会话的实体
- sessionWithTimeOut:ConcurrentHashMap<Long, Integer> 包含了对话的过期时间,与内存数据库相通,与持久化快照文件有关
- sessionSets: HashMap<Long, SessionSet> 根据下次的超时时间,利用分桶策略管理会话的过期情况
会话的分桶管理策略:
- 每个会话都有下一次需要检测活性的时间
- zk把相同时间需要检测活性的会话,放到一个桶中,如上图。
- 到时间后,zk会统一检测一个桶中的会话活性
- 如果会话未关闭,则重新计算新的时间,并把对应的会话转移进入新的桶。t/3是计算的活性时间
检测会话活性由Leader节点来处理
会话关闭
会话关闭发生在超时或者节点主动请求关闭的时候。
会话主要分成7个步骤,分别介绍:
- 设置状态isClosing为True,不在接收该会话的任何新的请求
- 集群发起关闭会话请求,其他服务同时也收到关闭的请求
- 收集与该会话相关的临时节点,内存数据库中由对应的信息,但是会有两种特殊情况
- 有删除节点请求:先执行删除,在统一删除其它的关联节点
- 有临时创建节点的请求,创建,然后删除
- 添加节点变更事务
- 删除临时节点
- 删除会话
- NIOServerCxn删除对应的数据
会话重连
会话重连发生在客户端与服务器断开连接的时候,此时客户端会重连服务器。
重连有以下4个场景:
- 超时时间内重连:服务器接受重连的客户端
- 过期:不接受重连,需要建立新的会话
- 失效:重连的时间太久了,比如网络慢的情况
- 会话转移。
会话转移:假设集群有s1, s2, s3服务器,c1客户端发送请求r1到s1,但是网络太慢,导致客户端以为s1已经失去了连接,此时c1向s2发送请求r2,而且s2正常地执行了r2,此时发生了会话转移。
请求覆盖: r1最终到达了s1,导致集群执行r1,此时r1就覆盖了r2。
处理方案:每个服务求,都认为会话有自己的Owner,比如上面的c1的owner是s1。当s2收到r2时,判断owner不是自己,此时不执行请求。
想让s2执行r2,则需要c1与s1之间取消链接,集群同步后,方可与s2发送请求。此时,由上面说的删除过程保证,不会发生会话转移。
zookeeper的会话相关推荐
- zookeeper系列(九)zookeeper的会话详解
作者:leesf 掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6103870.html尊重原创,大家共同学习: 一.前言 ...
- 限制会话id服务端不共享_不懂 Zookeeper?看完不懂你打我
高并发分布式开发技术体系已然非常的庞大,从国内互联网企业使用情况,可发现RPC.Dubbo.ZK是最基础的技能要求.关于Zookeeper你是不是还停留在Dubbo注册中心的印象中呢?还有它的工作原理 ...
- 深入浅出 ZooKeeper
ZooKeeper 是一个分布式协调服务 ,由 Apache 进行维护. ZooKeeper 可以视为一个高可用的文件系统. ZooKeeper 可以用于发布/订阅.负载均衡.命令服务.分布式协调/通 ...
- 不懂 Zookeeper?没关系,看这篇就够了!
前言 话不多说进入正题 1. 并发环境下面临的挑战 2. Zookeeper的介绍 3.zookeeper的理论 finally 前言 前面几篇以spring作为主题也是有些时日了,高并发分布式这个主 ...
- Zookeeper知识汇总
文章目录 一.简介 二.CAP定理 三.Zookeeper的特性 四.Zookeeper基本原理 4.1 Zookeeper系统架构 4.2 Zookeeper Server的状态与角色 4.2.1 ...
- 不懂 Zookeeper?没关系,看这篇就够了
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | 说出你的愿望吧 来源 | juejin.i ...
- Apache ZooKeeper - 使用原生的API操作ZK
文章目录 概述 maven依赖 验证 测试基类 ZK构造函数参数 connectString:ZooKeeper服务器列表 sessionTimeout:会话的超时时间, "毫秒" ...
- 很遗憾,没有一篇文章能讲清楚ZooKeeper
作为分布式系统解决方案的 ZooKeeper,被广泛应用于多个分布式场景.例如:数据发布/订阅,负载均衡,命名服务,集群管理等等. 因此,ZooKeeper 在分布式系统中扮演着重要的角色,今天通过一 ...
- 《从Paxos到ZooKeeper 分布式一致性原理与实践》读书笔记
一.分布式架构 1.分布式特点 分布性 对等性.分布式系统中的所有计算机节点都是对等的 并发性.多个节点并发的操作一些共享的资源 缺乏全局时钟.节点之间通过消息传递进行通信和协调,因为缺乏全局时钟,很 ...
最新文章
- SM4密码算法(附源码)
- 什么是堆和栈以及区别详解
- ASP.NET Web Pages 的冲突版本问题
- java.util.ListIterator
- 【转载】可复用的FS
- wamp2.2c集成环境搭建网站问题总结
- 并行程序设计---cuda memory
- 关于jvm的OutOfMemory:PermGen space异常的解决
- OCX控件的创建与调用
- 浅析R语言单因素方差分析中的多重比较
- CDN月95计费方式
- Alpha Fold 2
- 关于{高级语言和低级语言}的。谬论!思想误区!解释。author:盗墓者是个丑奴儿
- 激光雷达移动状态下的数据矫正
- U盘装系统教程,一键安装和U盘安装的区别
- 如何利用网站优化给网站引流做营销
- 云原生Java架构实战 K8s+Docker+KubeSphere+DevOps(上)
- [读书笔记] 图解HTTP
- Core Audio I/O File Recording
- ExcelReport(Excel报表系统)
热门文章
- spring小实验 用spring的方式管理JDBC
- AcWing1074. 二叉苹果树(树形DP)题解
- pip安装包时报错:The repository located at pypi.doubanio.com is not a trusted or secure host
- 【CSP考前复习】关于考试时的注意事项
- 【CVPR 2020】Learning RoI Transformer for Oriented Object Detection in Aerial Images
- SRL——无人机区域定位系统
- ROS2——Windows上的安装笔记
- Linux查看GPU使用情况
- 【算法设计】最大子段和问题解析(对应算法第三题)
- Programming in the Mid-Future(转)