1)底层通信数据封装与操作

         

BinaryInputArchive& BinaryOutputArchive底层通信数据封装与操作

    BinaryInputArchive是对于DataInput的封装,用于处理基于zookeeper协议的底层数据,其实是从DataInputStream输入中读取数据。

BinaryOutputArchive是对于DataOutput的封装,根据zookeeper协议将数据写入到DataOutputStream中去。

  

1.  读取int, boolean基本数据类型直接代理给DataInput执行

 

写入int, boolean基本数据类型直接代理给DataOutput执行

2.   读取String和Buffer是,BinaryInputArchive根据Zookeeper协议做了处理

1) 读取四个字节int值表示读取数据内容的大小

2) 根据数据大小构建一个byte数组

3) 将DataInput的数据读取到字节数组中


写入String和Buffer是,BinaryOutputArchive根据Zookeeper协议做了处理

1) 写入四个字节int值表示写入数据内容的大小, 如果写入数据为null,值为-1


2)将数据转为字节数组,写入DataOutput中

3. 读取复杂的数据对象,Zookeeper底层传输的对象都需要实现Record接口,readRecord方法,会代理给Record进行反序列化

写入复杂的数据对象,Zookeeper底层传输的对象都需要实现Record接口writeRecord方法,会代理给Record进行序列化

4.   对于Record对象中持有集合对象(当然能够序列化与反序列化,集合中的元素必须也实现Record):

BinaryInputArchive提供startVector

1)  读取四个字节的int数,表示集合的大小

2)  构建一个BinaryIndex对象返回

BinaryOutputArchive提供startVector

向DataOutput数据流中写入集合大小,如果为null值为-1

5.  BinaryInputArchive对象的内部类BinaryIndex作用,主要是用来计数集合对象的反序列话的

Record是zookeepr底层通信数据序列化与反序列化统一接口,

2)Record接口

Record是zookeepr底层通信数据序列化与反序列化统一接口

1. 继承结构

子类以Request结尾的是Client向Server发起请求

子类以Response结尾的是Server向Client发起响应

子类以Txn结尾是Server向Server发起事务请求的

子类以Packet结尾是…???

其他如Id, ACL往往被其他对象持有,不会单独在网络传输

2. 举例

1)CreateRequest: 用于在客户端创建一个节点时向服务器端发送的请求

序列化CreateRequest,

archive对象是对DataOutput封装,顺序的将数据写入到DataOutputStream输出流中去

反序列化CreateRequest,

archive对象是对DataInput封装,顺序的从DataInputStream输入流中中读取数据

      

zookeeper原理解析-序列化的更多相关文章

  1. zookeeper原理解析-数据存储

    Zookeeper内存结构 Zookeeper是怎么存储数据的,什么机制保证集群中数据是一致性,在网络异常,当机以及停电等异常情况下恢复数据的,我们知道数据库给我们提供了这些功能,其实zookeepe ...

  2. zookeeper原理解析-客户端与服务器端交互

    Zookeeper集群中server数量总是确定的,所以集群中的server交互采用比较可靠的bio长连接模型:不同于集群中sever间交互zookeeper客户端其实数量是未知的,为了提高zooke ...

  3. zookeeper原理解析-选举

    1)QuorumPeerMain加载 Zookeeper集群启动的入口类是QuorumPeerMain来加载配置启动QuorumPeer线程.首先我们来看下QuorumPeer, 谷歌翻译quorum ...

  4. zookeeper原理解析-服务器端处理流程

    1)处理器链 这部分内容我们主要讲解zookeeper请求在zookeeper server端的处理流程,对于不同角色的zookeeper具有不同的处理流程, ZookeepeerServer的sta ...

  5. ZooKeeper学习之路 (八)ZooKeeper原理解析

    ZooKeeper中的各种角色 ZooKeeper与客户端 每个Server在工作过程中有三种状态: LOOKING:当前Server不知道leader是谁,正在搜寻 LEADING:当前Server ...

  6. 1.zookeeper原理解析-数据存储之Zookeeper内存结构

    Zookeeper是怎么存储数据的,什么机制保证集群中数据是一致性,在网络异常,当机以及停电等异常情况下恢复数据的,我们知道数据库给我们提供了这些功能,其实zookeeper也实现了类似数据库的功能. ...

  7. ZooKeeper原理解析

    目录 ZooKeeper中的各种角色 ZooKeeper与客户端 Zookeeper节点数据操作流程 Paxos 算法概述(ZAB 协议) ZooKeeper 的选主机制 选择机制中的概念 选举消息内 ...

  8. Zookeeper(三) Zookeeper原理与应用

    一.zookeeper原理解析 1.进群角色描述 2.Paxos 算法概述( ZAB 协议)    分布式一致性算法 3.Zookeeper 的选主(恢复模式) 以一个简单的例子来说明整个选举的过程. ...

  9. RPC原理解析

    1.RPC原理解析 1.1 什么是RPC RPC(Remote Procedure Call Protocol) --远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络 ...

随机推荐

  1. Linux下安装Oracle11g服务器

    1.安装环境 Linux服务器:CentOS  64位 Oracle服务器:Oracle11gR2 64位 2.系统要求 Linux安装Oracle系统要求 系统要求 说明 内存 必须高于1G的物理内 ...

  2. couchDB视图

    视图是设计文档的一部分. 视图函数 map函数 Map方法的参数只有一个,就是当前的文档对象.Map方法的实现需要根据文档对象的内容,确定是否要输出结果. 如果需要输出的话,可以通过emit来完成. ...

  3. j2ee项目服务器怎样部署?

    1.右击项目  >>  点击如图1中❶  >>  Project(选择项目)  >>  Add  如图1: 图1 2.点击Add  >>  Server ...

  4. ab

     ab is a tool for benchmarking your Apache Hypertext Transfer Protocol (HTTP) server. It is designed ...

  5. Jsoup问题---获取http协议请求失败 org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml.

    Jsoup问题---获取http协议请求失败 1.问题:用Jsoup在获取一些网站的数据时,起初获取很顺利,但是在访问某浪的数据是Jsoup报错,应该是请求头里面的请求类型(ContextType)不 ...

  6. shell脚本实现算术运算且输入的不能为非数字的值

    #!/bin/bash c= ] do echo "请输入第一个数" read a echo "请输入第二个数" read b ]* ]] && ...

  7. linux命令-文件命令

    1.解压.tar文件 tar -vxf *.tar 2.把一个文件夹下的内容复制到另一个文件夹 将aaa内所有内容复制到bbb cp -a aaa/* /bbb/  * 3.复制文件时不改变文件的时间 ...

  8. 【转】 XenServer架构之HA概述

    一.XenServer HA概述 XenServer HA是一套全自动功能设计,规划,安全地恢复出现问题的XenServe 主机上的虚拟机的功能组件. 启用 HA 后,XenServer 将持续监视池 ...

  9. 当我们在谈论kmeans(2)

        本稿为初稿,后续可能还会修改:如果转载,请务必保留源地址,非常感谢! 博客园:http://www.cnblogs.com/data-miner/ 其他:建设中- 当我们在谈论kmeans(2 ...

  10. js小技巧

    js判断字符长度 直接使用String对象的属性,空格亦算一个字符 myString = "Hello world"; length = myString.length js比较字 ...