zookeeper之序列化jute<十二>

本文探讨了ZooKeeper中Jute组件的序列化与反序列化过程,详细分析了Jute在ZooKeeper中的实现方式及其内部工作原理。文中还提到了Record接口、序列化器的具体实现及tag的作用。

前面介绍了zookeeper自带的api或者zkclient的对数据进行序列化的操作,在zookeeper中使用Jute这个组建来实现序列化和反序列化,据说这个jute是比较古老的序列化组建,zk估计也是觉得鸡肋,鸡肋,食之无味,弃之可惜!

百度查询Jute的信息,基本也都是一些关于zk怎么使用Jute序列化的信息,估计这是它最后的辉煌了吧,《从PAxos到Zookeeper分布式一致性原理与实践》书中讲序列化有段代码,就不临摹啦,拿过来学习学习吧

http://www.w2bc.com/article/206864 还有这个人写的zk序列化源码分析也贴了很多代码,把序列化器写的比较清晰,还画了类之间的关系图,NICE!

211755_jz4v_2277632.png

日志输出: 可以看到简单完成了序列化和反序列化

211931_e6mK_2277632.png

在zk中实现序列化的都是实现了Record接口

这里面有两个方法,序列化和反序列化,参数就是序列化器和tag

212136_S8NH_2277632.png

212759_fV8r_2277632.png

上面的MockReqHeader中的实现是这样的

212643_yaVm_2277632.png

在上面的目录结构中 可以看到好几个实现OutPutArchive与InputArchive的类

213019_T1PC_2277632.png

比如我们看看其中的binaryOutputArchive实现,这边用了DateOutPut写入数据,奇怪了,tag传进来,好像也没用到呀,结果我将上面的额代码去掉了 反序列化的时候传的tag,结果输出是一模一样的,好尴尬,tag!!!!感觉我写点东西,总在写想不通的东西

213418_QQ66_2277632.png

其中发现startRecod与endRecord并没有实现什么,奇怪,再看看

213522_J6lU_2277632.png

其中还有Index接口(迭代器),里面就只有done与incr接口,顾名思义,就是做事情,增加继续做事情。

214052_MbtZ_2277632.png

后面的两个包更是令人好奇,compiler不是编译的意思吗

215401_r1Co_2277632.png

然后zk源码中还有一个generated包,自动生成的,好神奇。

215709_Hh5j_2277632.png

看ant的build.xml这个文件也太长了吧,只能看看有没有jute的信息啦,完了,ant小白看了半天,看不懂哇

等我看的明白一点,再回来改改和补充内容

 

 

 

转载于:https://my.oschina.net/u/2277632/blog/1540809

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值