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

news/2024/7/7 15:39:40
背景

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

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


http://www.niftyadmin.cn/n/925560.html

相关文章

显示特殊节日

<html> <head> <title>显示特殊节日脚本</title> </head> <body> <div align"center">显示特殊节日&#xff0c;如“五一”</div> <SCRIPT languagejavascript> <!-- calendar new Date(); d…

学会享受寂寞,才能享受爱情

每个人生下来就在和“与世隔绝”作斗争&#xff0c;所以我们害怕寂寞&#xff0c;需要同伴&#xff0c;甚至渴望爱情。 实际上&#xff0c;爱情的作用在于&#xff1a;把一个人牢牢的绑在身边&#xff0c;让Ta陪伴自己。在一时或一世间&#xff0c;忘记寂寞。 所以&#xff0c;…

网站的停留时间

<html> <head> <title>显示你的客户在你的站点逗留了多久</title> </head> <body> <form nameforms> <font size3> <CENTER> <div aligncenter> <p> …

window.open的所有参数

【1、最基本的弹出窗口代码】 <SCRIPT LANGUAGE"javascript"> <!-- window.open (page.html) --> </SCRIPT> 【2、经过设置后的弹出窗口】 下面再说一说弹出窗口的设置。只要再往上面的代码中加一点东西就可以了…

synchronized的 偏向锁、轻量级锁、重量级锁的优缺点对比以及其适应场景

锁优点缺点适用场景偏向锁加锁和解锁不需要额外的消耗&#xff0c;和执行非同步方法相比仅存在纳秒级的差距如果线程间存在锁竞争&#xff0c;会带来额外的所撤销的消耗适用于只有一个线程访问同步块场景轻量级锁竞争的线程不会阻塞&#xff0c;提高了程序的响应速度如果始终得…

TreeView小知识

得到所有选择的节点(根据target区分) string insertQXLB ""; foreach (TreeNode t in TreeView1.CheckedNodes) { if (t.Target.ToString() ! "1") { …

CAS的优缺点

CAS&#xff0c;在Java并发应用中通常指CompareAndSwap或CompareAndSet&#xff0c;即比较并交换。 CAS是一个原子操作&#xff0c;它比较一个内存位置的值并且只有相等时修改这个内存位置的值为新的值&#xff0c;保证了新的值总是基于最新的信息计算的&#xff0c;如果有其他…

asp.net2.0实现文件上传,控制上传文件大小,类型

1、建立Default.aspx文件和文件夹upLoad 2、Default.aspx代码如下&#xff1a; <% Page Language"C#" AutoEventWireup"true" CodeFile"Default.aspx.cs" Inherits"_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DT…