java中的序列化方式:
1. 自带序列化 ObjectInputSteam、 ObjectOutStream等
2. hession2
3. json ,xml等格式
4.kryo
5.FST
---
dubbo直接多种序列化方式,默认是hession2. 比较成熟,但是效率略低。
可以配置使用 kryo
<dubbo:protocol name="dubbo" serialization="kryo"/>
序列化集合类型的时候,在声明对象的时候,最好不要用接口来声明,要用具体类来声明,防止序列化后类型不匹配,或反序列化失败。
比如 HashSet set =new HashSet()。如果你写成 Set set= new HashSet()就可能反序列化出错。
要让Kryo和FST完全发挥出高性能,最好将那些需要被序列化的类注册到dubbo系统中,例如,我们可以实现如下回调接口:
public class SerializationOptimizerImpl implements SerializationOptimizer { public Collection
classes.add(BidRequest.class);
classes.add(BidResponse.class);
classes.add(Device.class);
classes.add(Geo.class);
classes.add(Impression.class);
classes.add(SeatBid.class); return classes;
}
}
然后在XML配置中添加:
<dubbo:protocol name="dubbo" serialization="kryo" optimizer="com.alibaba.dubbo.demo.SerializationOptimizerImpl"/>