kyro序列化踩坑记——提供方DTO新增字段,依赖方则报错

背景

A服务通过dubbo调用B服务,序列化方式选择的是kryo,A服务和B服务同时依赖C工程的一个DTO。
C工程的DTO新增了一个字段,deploy了,B服务引了最新的依赖。但是A服务并没有。
此字段,A服务并使用不上,也不关心。
此时,A服务调用B服务,则会出现如下序列化报错
在这里插入图片描述

排查

这个mDTO就是有变化的

解决方案一

通过让C的DTO使用release包,打包,不使用snapshot版本,这样,我们改变频率慢,而且很主动。
不然,每次deploy我们发布线上都会很头痛。

解决方案二

更改B服务和A服务之间的dubbo version,然后发布线上时候,先发一半的B服务,然后把A服务的发完,然后再把B服务发完。
这样做的好处是,可以让线上的A服务兼容发布,否则就会报一堆序列化错误。

解决方案三

切换序列化方式为protobuf

最终,第一个方案pass掉,属于治标不治本,属于规范层面问题。
第二个方案,可以维持一小段时间。
第三个方案,关联方比较多,耗时,但是利好千秋万代。

实际行动:临时先做第二个方案,长期推动第三个方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章