迁移指南
本页介绍从 JDK 序列化迁移以及在 Fory 版本之间升级的策略。
JDK 序列化迁移
如果你之前使用 JDK 序列化,并且无法同时升级客户端和服务器(这对于在线应用程序很常见),Fory 提供了一个实用方法 org.apache.fory.serializer.JavaSerializer.serializedByJDK 来检查二进制是否由 JDK 序列化生成。
你可以使用以下模式使现有序列化协议感知,然后以异步滚动方式升级序列化到 Fory:
if (JavaSerializer.serializedByJDK(bytes)) {
ObjectInputStream objectInputStream = xxx;
return objectInputStream.readObject();
} else {
return fory.deserialize(bytes);
}
这允许你:
- 部署可以同时读取 JDK 和 Fory 序列化数据的新代码
- 逐步将序列 化迁移到 Fory
- 最终移除 JDK 序列化支持
升级 Fory
小版本升级
目前,仅为小版本提供二进制兼容性。例如,如果你使用 Fory v0.2.0,如果升级到 Fory v0.2.1,将提供二进制兼容性。
如果你按小版本升级,或者你不会有旧版 Fory 序列化的数据,你可以直接升级 Fory,无需任何特殊处理。
大版本升级
如果你从 v0.2.x 升级到 Fory v0.4.1,则不保证二进制兼容性。
大多数时候不需要升级 Fory 到更新的大版本——当前版本已经足够快速和紧凑,我们为最近的旧版本提供一些小修复。
为序列化数据添加版本
如果你确实想升级 Fory 以获得更好的性能和更小的大小,你需要将 Fory 版本作为头部写入序列化数据,使用如下代码来保持二进制兼容性: