ZooKeeper源码分析七之通信协议_solayang的博客-CSDN博客

      最后更新:2021-12-25 21:23:17 手机定位技术交流文章

      一. 顺序顺序和倒序顺序

      在动物园维护者中,序列化和反序列化是通过记录完成的,接口有两种方法。

      这个界面使动物园维护者能够要求将数据反序以及文件和日志的快照和日志的顺序本地化,这些文件和日志有若干实现分类,如下文所示:
      在这里插入图片描述
      每个实现类别为现有数据,必须以相关数据格式排列顺序和反顺序,其底部通过数据输出Stream完成。

      二、通信协议

      从源码的角度来看,本条将审查动物园维护者的通信议定书,通信基本法将分为请求和答复。

      1、请求协议

      返回 NioserverCnxn 的 doio 函数时,调用插座的读法如下:

      缓冲器是缓冲器的对象, 我们从中读取数据。 让我们来看看它是如何设置的 :

      所以,默认情况下, 接收缓冲首先读取 4 字节 。在此点, 我们将引用读Length( k) 函数 。这一程序读取现有缓冲区的数据。它碰巧是内型(有四个字节)。此数字显示下一个要读取的数据集的大小 。获得数据大小后,根据阅读长度重新分配输入的缓冲容量。在这一点上,我们可以推断,请求的前四个字节(一英寸)被用来减少随后请求必须提供的数据数量。

      然后从内存读取其余数据。此时分为两步走,一个是建立连接,呼叫阅读 Connect 请求 (), 然后创建并保存会话进程 。Thmarks 是当前会话的开始 。接下来就是建立请求调用readRequest()->processPacket():
      目前,请求信头是记录接口的变异级,将由请求信头处理。

      换句话说,请求将包括两个整数值,即xid值和类型值。希德表示本届会议请求的顺序值。使用现有的执行样式( 创建时等) 类型来表示某些种类的请求,如创建=1等,可以在动物园的OpCode中看到。剩下的就是请求体,每个请求人都是实现记录的一种类型。

      因此,请求如下:

      数据长度 请求头 请求体
      四个字节 类型: 4 字节, xid: 4 字节 n个字节

      每种请求都将由对应方密封, 我们用建造节点的例子来展示:

      PrepRequestProcessor p请求助手方法中将生成“创意请求”对象,请求书的解答将在 present2TxnCreate 函数中调用:

      Create Request is now doing a record. 让我们看看它的反顺序策略:

      如果请求是严格按照这一现实提交的,客户此时会生成匹配的节点。

      三、响应协议

      服务提供方处理完请求后,将立即作出答复,本节将简要研究服务结束答复的数据结构。

      最终将在最后请求处理程序中处理所有请求,一旦服务供应商处理完请求,将形成反应结束时的响应数据对象(记录),或通过建造节点,例如:

      服务器处理请求后, 将使用一个新的 Create2Response (rc. come on, rc.stat) 。 然后他们通过援引 NiosterCnxn 示例的发送回复方法返回 :

      本阶段的先后顺序战略是达成具体的反应协议,具体内容如下:

      也就是说,发送到当前答复数据的头四个字节的总和,然后是答复的负责人和答复者。
      回复标题:

      响应体:

      因此,就整个答复商定如下:

      数据长度 响应头 响应体
      四个字节 Xid为 4 字节, zxid 为 8 字节, 错误为 4 字节 。 n个字节

      四、总结

      ZooDefer的录音接口用于进行数据排序和反排序活动。执行《记录》将满足每一项商业要求。并取得了预期的反应。这两种认识大多是请求和答复处理。在了解了所有关于这个顿悟的知识之后您可以创建您的客户端 API, 连接到动物园维护者, 然后进行操作 。

      如果某事不正确,请写一个信息,显示正确性。请接受我的请求。

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/15279.html

          热门文章

          文章分类