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掉,屬於治標不治本,屬於規範層面問題。
第二個方案,可以維持一小段時間。
第三個方案,關聯方比較多,耗時,但是利好千秋萬代。

實際行動:臨時先做第二個方案,長期推動第三個方案。

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