zoukankan      html  css  js  c++  java
  • [zz]Katta如何使用Zookeeper-Client连接

    暂时不太明白,先转过来,转载自http://blog.sina.com.cn/s/blog_539d361e0100op7c.html

    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
  • 相关阅读:
    C# HttpWebRequest 发送SOAP XML
    浅谈HTTP中Get与Post的区别(转)
    WebService的helloworld,服务器端与客户端的Demo(转)----自己建立的Web Project , 而不是Web Service Project,利用WSDD 自己发布
    C#操作XML(转)
    要学习的知识
    Web service是什么?
    暖式切边线和冷式切变线
    python 形状区分市控国控,颜色表示aqi等级
    Linux常用指令---grep(搜索过滤)
    Axis通过wsdd部署Web Service
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2863373.html
Copyright © 2011-2022 走看看