zookeeper的异常处理(Disconnected, SyncConnected, Expired)
来源:互联网 发布:天刀捏脸数据网盘 编辑:程序博客网 时间:2024/06/18 04:53
最近系统中使用zookeeper支持三个功能:全量/增量索引的消息通知;搜索活跃节点检查;分布式锁做索引切换同步。
线上服务对稳定性要求较高,包括各种异常情况,如网络中断导致连接断开,系统load过高导致zk 超时等。从使用角度,做了几个测试,总结如下:
1. zk内部两个后台线程:心跳线程(SendThread),时间处理线程(EventThread),均为单线程,且互相独立。所以eventthread堵塞,不会导致心跳超时;另外由于event thread单线程,如果在process过程中堵塞,其他事件即使发生了,也只会放到本地队列中,暂时不会执行。
2. 如果client与zkserver链接中断,client的sendthread会使用原来的sessionid一直尝试连接,连上后server判断该sessionid是否已经过期,如果未过期,则SyncConnected会通知给client,同时期间的watcher事件也会通知给client;如果已过期,则client会受到Expired,sendthread, eventthread都退出,当前client失效。
3. session是否过期,是由server判断的;然后等client使用原来的sessionid连接进来时,会受到expired事件。server判断session失效然后再通知client,主要是因为server需要清理该session相关的emphemeral节点;如果client判断再通知server,client被直接kill掉,这些临时节点就清理不掉了;如果client和server各自判断,会有同步问题。
4. session1新建了一个临时节点,然后被kill掉;重新起一个session,老的临时节点会被清理掉。
- zookeeper的异常处理(Disconnected, SyncConnected, Expired)
- zookeeper异常处理
- HBase的long GC与 Zookeeper lease expired的权衡
- Debug certificate expired on ***错误的处理
- oracle用户密码过期以及解雇(expired)的处理
- ASP.NET连接 MS SQL Timeout expired. 问题的处理
- zookeeper异常ConnectionLossException的解决办法
- channel disconnected问题的解决
- asp.net连接池和SqlConnection对象的释放& "Timeout expired"异常
- asp.net连接池和SqlConnection对象的释放& "Timeout expired"异常
- MySql 长时间读数据发生超时的异常 Mysql Reader Exception TimeOut expired
- HDFS中zookeeper的异常分析
- C++ 异常处理:类的异常处理--异常处理类
- C++ 异常处理:类的异常处理
- [译]连接池和 "Timeout expired"异常
- 连接池和 "Timeout expired"异常
- 连接池和 "Timeout expired"异常
- 连接池和 "Timeout expired"异常
- 【Android游戏开发二十七】讲解游戏开发与项目下的hdpi 、mdpi与ldpi资源文件夹以及游戏高清版本的设置
- REST介绍
- Racket 语言编写的一个简单记事本程序
- UVA 592 逻辑之岛(暴力枚举)
- 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService
- zookeeper的异常处理(Disconnected, SyncConnected, Expired)
- Android精美登录界面设计
- django框架搭建
- 树型dp Zoj3201 tree of tree
- 转载:Complex DML queries and clause push-down in Postgres-XC
- 登录FTP之C++实现
- JSP的属性
- [小说]魔王冢(23)道士
- 十进制转换为二进制的小程序