Fury快速多语言序列化框架
Fury 是一个由 jit(即时编译)和零拷贝驱动的快速多语言序列化框架,可提供高达 170 倍的性能和极致的易用性。
特性:
- 多种语言:Java/Python/C++/Golang/Javascript。
- 零拷贝:受 pickle5 和 off-heap read/write 启发的跨语言带外序列化。
- 高性能:高度可扩展的 JIT 框架,可在运行时以异步多线程方式生成序列化器代码以加速序列化,通过以下方式提供 20-170 倍的加速:
- 通过生成代码中的内联变量减少内存访问。
- 通过生成代码中的内联调用减少虚拟方法调用。
- 减少条件分支。
- 减少哈希查找。
- 多种二进制协议:对象图、行格式等。
除了跨语言序列化之外,Fury 还具有以下功能:
- 直接替换 JDK/Kryo/Hessian 等 Java 序列化框架,无需修改任何代码,但速度提高 100 倍。它可以极大地提高高性能RPC调用、数据传输和对象持久化的效率。
- JDK 序列化 100% 兼容,原生支持 Java 自定义序列化
writeObject/readObject/writeReplace/readResolve/readObjectNoData
。 - 支持 golang 的共享和循环引用对象序列化。
- 支持 golang 自动对象序列化。
协议
不同的场景有不同的序列化要求。Fury 为这些要求设计并实现了多个二进制协议:
- 跨语言对象图协议:
- 跨语言自动序列化任何对象,无需 IDL 定义、模式编译以及对象与协议之间的转换。
- 支持共享引用和循环引用,无重复数据或递归错误。
- 支持对象多态性。
- 原生 java/python 对象图协议:基于语言的类型系统进行高度优化。
- 行格式协议:一种缓存友好的二进制随机访问格式,支持跳过序列化和部分序列化,并且可以自动转换为列格式。
可以基于现有的缓冲区、编码、元、代码生成和其他功能轻松添加新协议。所有这些都共享相同的代码库,并且一种协议的优化可以由另一种协议重用。
评论
Adata多语言的序列化库
AData是一个多语言的序列化库,和protocolbuffer类似。目前支持C++/Lua(5.1,5.2,5.3,jit)/C#,非常适合游戏的通讯协议和数据存储Adata的优势,生成的代码量少,
Adata多语言的序列化库
0
KryoCocoaObjective-C 序列化框架
KryoCocoa是Kryo高性能Java序列化框架的Objective-C移植版本,兼容Java版本的序列化格式。示例代码:Kryo *kryo = [Kryo new];// ...NSOutpu
KryoCocoaObjective-C 序列化框架
0
laser-javaJava 序列化框架
laser是Java序列化框架,主要特性是速度快,序列化的字节码更小。序列化170ms长度14919028反序列化143ms
laser-javaJava 序列化框架
0
febirdC++序列化框架
功能类似于boost.serializaiton或google.protocolbuffer,可以用在协议解析,大/小数据的序列化,有极高的性能(比boost.binary_archive快30~10
febirdC++序列化框架
0