Katta如何使用Zookeeper-Client连接
2011-09-22 13:36
225 查看
Katta使用ZkClient和ZKServer通讯,调用顺序一般是:Katta->ZKClient->ClientCnxn->NIOServerCnxn->ZKServer,具体结构如下:
1. 连接:
a)ZkClient、ClientCnxn和Katta处于同一个实例中,和ZkServer通过Socket通讯;
b)ClientCnxn发起socket连接后,ZkServer的Factory实例化一个NIOServerCnxn,持有一个socket保持和Client的连接;
c)连接是一个NIO Socket,非阻塞,通过Selector来操作Socket
2. 请求:
a)Client端请求的发送,通过异步队列的方式来保持顺序的
b)ZkClient和ClientCnxn之间主要有两条通讯路径:主动请求和事件触发
i)主动请求:向ZkServer发送获取数据的请求,或者发送更新数据的请求
ii)事件触发:ClientCnxn和NIOServerCnxn之间通讯的中断和重新连接通知,以便Client更新状态
c)ClientCnxn持有两个队列:待发请求队列和待处理事件队列
i)待发请求队列:所有的请求,包含Client要发送的ping请求,都放入该队列;当发送线程可以发送时,从该队列取出一个请求,发送给NIOServerCnxn
ii)待处理事件队列:存放发送线程从服务端获取的通知消息,比如session 过期,以及Client连接中断等消息。由事件处理线程处理该队列
3. 处理:
a)Server端请求的处理,通过异步队列的方式来保持顺序的
b)ZkServer代表一个ZkNode实例
c)NIOServerCnxn代表一个Client连接
d)Server端持有两类队列:待处理请求队列和待发送响应队列
i)待处理请求队列:接收到的请求,由请求处理链表处理,通过该队列保持顺序和池化
ii)待发送响应队列:存放处理结束后的响应,然后由NIOServerCnxn发送给Client
1. 连接:
a)ZkClient、ClientCnxn和Katta处于同一个实例中,和ZkServer通过Socket通讯;
b)ClientCnxn发起socket连接后,ZkServer的Factory实例化一个NIOServerCnxn,持有一个socket保持和Client的连接;
c)连接是一个NIO Socket,非阻塞,通过Selector来操作Socket
2. 请求:
a)Client端请求的发送,通过异步队列的方式来保持顺序的
b)ZkClient和ClientCnxn之间主要有两条通讯路径:主动请求和事件触发
i)主动请求:向ZkServer发送获取数据的请求,或者发送更新数据的请求
ii)事件触发:ClientCnxn和NIOServerCnxn之间通讯的中断和重新连接通知,以便Client更新状态
c)ClientCnxn持有两个队列:待发请求队列和待处理事件队列
i)待发请求队列:所有的请求,包含Client要发送的ping请求,都放入该队列;当发送线程可以发送时,从该队列取出一个请求,发送给NIOServerCnxn
ii)待处理事件队列:存放发送线程从服务端获取的通知消息,比如session 过期,以及Client连接中断等消息。由事件处理线程处理该队列
3. 处理:
a)Server端请求的处理,通过异步队列的方式来保持顺序的
b)ZkServer代表一个ZkNode实例
c)NIOServerCnxn代表一个Client连接
d)Server端持有两类队列:待处理请求队列和待发送响应队列
i)待处理请求队列:接收到的请求,由请求处理链表处理,通过该队列保持顺序和池化
ii)待发送响应队列:存放处理结束后的响应,然后由NIOServerCnxn发送给Client
相关文章推荐
- Katta如何使用Zookeeper-Client连接
- [zz]Katta如何使用Zookeeper-Client连接
- 如何使用 SPICE client (virt-viewer) 来连接远程虚拟机桌面?
- Katta如何使用Zookeeper-ZkServer的节点
- Katta如何使用Zookeeper-Server节点的通讯
- Katta如何使用Zookeeper-数据更新
- Katta如何使用Zookeeper-数据更新2
- Katta如何使用Zookeeper-数据更新3
- 如何不用oracle client直接使用plsql远程连接oracle数据库以及需要注意的事项
- 解决32位工具如何连接64位DB---Oracle Instant Client 使用 说明
- ZooKeeper源码解析(四):client如何和server连接
- 使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库
- 使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库(转)
- 如何使用JSON连接Android和PHP Mysql数据库
- 使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库
- [转]C#中HttpClient使用注意:预热与长连接
- 如何在不安装Oracle客户端的情况下,使用PL/SQL Developer连接数据库
- 如何使用SQL2005专用管理员连接(DAC)
- 使用VS连接SQLServe时提示未能加载文件或程序集“System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKey
- 如何使用SecureCRT连接vmware下ubuntu