Zkclient 是java zookeeper的进一步封装,但是在做获取数据的时候出现一些问题,readData()方法会获取到无效的流头(前置一些乱码),这个问题其实不是zk服务端的问题,是zkclient创建时 指定的序列化方式问题,有俩个序列化方式,默认的 new SerializableSerializer() 这个方法的序列化方式是:

看起来并没有太大的问题,

 

还有一个是new BytesPushThroughSerializer() 具体实现如下:

 

如上,使用第一种序列化方式,竟然报错了,反序列化的时候,出现了乱码,基于zk服务端只能存 byte文件,于是就自己定义了如何将byte 数组 转为string 没有去转为对象, newString(byte[],Charter.format(“utf-8”)); 发现没有出现乱码情况.具体出现乱码的原因应该是byte[]转object 时发生的.因为zk服务端存放的是一个json串,于是byte转object时发生了问题.


Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐