【版本问题】fastjson版本不一致引发的问题

项目场景

某物联网系统A和系统B,两个系统fastjson版本为V1.1.37,该版本比较老,老版本的fastjson存在偶发性序列化数据异常等问题,因此打算升级A系统fastjson版本为V1.2.*以上版本解决异常报错问题。


问题描述

升级A系统fastjson版本为V1.2.*以上版本,系统B保持fastjson版本为V1.1.37,在A系统pom.xml文件中升级fastjson版本为V1.2.76后,发现系统A和系统B两个系统有些消息无法通讯,导致某些功能不可用。

	<com.alibaba.fastjson.verison>1.2.76</com.alibaba.fastjson.verison>

	<!-- 加入fastjson依赖包 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>${com.alibaba.fastjson.verison}</version>
		</dependency>

原因分析

查询日志排查相关问题,发现没有报错日志,最后在系统A和系统B测试环境进行debug发现,高版本系统的fastjson序列化的类,在低版本系统无法反序列化。


解决方案

回滚A系统fastjson版本为V1.1.37,该问题得到解决

	<com.alibaba.fastjson.verison>1.1.37</com.alibaba.fastjson.verison>

	<!-- 加入fastjson依赖包 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>${com.alibaba.fastjson.verison}</version>
		</dependency>

最后总结

经过查询fastjson相关资料,V1.2.以下版本确实会存在一些偶发性序列化报错误问题、序列化丢失数据问题,不过高版本修复了一些问题在使用过程中几乎不会报异常,V1.2. 以上版本为较为稳定的版本。通过该问题的排查可以举一反三,在两个及以上系统中使用开源产品,例如:RabbitMQ、Fastjson、Kafka等,要考虑不同系统之间的版本不一致,会不会导致不同系统间数据传输异常,在使用时最好在测试环境进行验证。

你可能感兴趣的:(java)