特性
核心能力
高性能序列化
Apache Fory™ 通过先进的优化技术提供卓越性能:
- JIT 编译:Java 运行时代码生成可消除虚方法调用并内联热点路径
- 静态代码生成:Rust、C++ 和 Go 的编译时代码生成可在无运行时开销的情况下实现峰值性能
- 零拷贝操作:直接访问内存,无需中间缓冲区复制;行格式支持随机访问和部分序列化
- 智能编码:对整数和字符串采用变长压缩;对数组提供 SIMD 加速(Java 16+)
- 元数据共享:类元数据打包可减少多次序列化中的冗余类型信息
跨语言序列化
xlang 序列化格式 支持不同编程语言之间的无缝数据交换:
- 自动类型映射:在语言特定类型之间进行智能转换(类型映射)
- 引用保持:共享引用和循环引用在跨语言场景下也能正确工作
- 多态:对象会按其真实运行时类型进行序列化和反序列化
- Schema 演进:可选的向前和向后兼容能力,支持 Schema 演进
- 自动序列化:无需 IDL 或 Schema 定义;无需代码生成即可直接序列化任意对象
行格式
面向分析类工作负载优化、对缓存友好的 行格式:
- 零拷贝随机访问:无需反序列化整个对象即可读取单个字段
- 部分操作:按需序列化和反序列化部分字段以提升效率
- Apache Arrow 集成:可无缝转换为列式格式,适用于分析流水线
- 多语言支持:支持 Java、Python、Rust 和 C++
安全性与生产就绪
企业级安全性与兼容性:
- 类注册:基于白名单的反序列化控制机制(默认启用)
- 深度限制:防止递归对象图攻击
- 可配置策略:支持自定义类检查器和反序列化策略
- 平台支持:支持 Java 8-24、GraalVM 原生镜像及多种操作系统平台
Java 特性
高性能
- JIT 代码生成:高度可扩展的 JIT 框架可通过异步多线程编译在运行时生成序列化器代码,并通过以下方式带来 20-170 倍加速:
- 内联变量以减少内存访问
- 内联方法调用以消除虚分发开 销
- 尽量减少条件分支
- 消除哈希查找
- 零拷贝:直接访问内存,无需中间缓冲区复制;行格式支持随机访问和部分序列化
- 变长编码:对整数和长整数进行优化压缩
- 元数据共享:缓存类元数据以减少冗余类型信息
- SIMD 加速:支持 Java Vector API 进行数组操作(Java 16+)
直接替换
- 100% 兼容 JDK 序列化:支持
writeObject/readObject/writeReplace/readResolve/readObjectNoData/Externalizable - 支持 Java 8-24:兼容所有现代 Java 版本,包括 Java 17+ 的 record
- GraalVM 原生镜像:支持 AOT 编译,无需反射配置
高级特性
- 引用跟踪:自动处理共享引用和循环引用
- Schema 演进:支持类 Schema 的向前和向后兼容
- 多态:完整支持继承层次结构和接口
- 深拷贝:高效深拷贝复杂对象图并保留引用关系
- 安全性:支持类注册和可配置的反序列化策略