Fury快速多語言序列化框架
Fury 是一個(gè)由 jit(即時(shí)編譯)和零拷貝驅(qū)動(dòng)的快速多語言序列化框架,可提供高達(dá) 170 倍的性能和極致的易用性。
特性:
- 多種語言:Java/Python/C++/Golang/Javascript。
- 零拷貝:受 pickle5 和 off-heap read/write 啟發(fā)的跨語言帶外序列化。
- 高性能:高度可擴(kuò)展的 JIT 框架,可在運(yùn)行時(shí)以異步多線程方式生成序列化器代碼以加速序列化,通過以下方式提供 20-170 倍的加速:
- 通過生成代碼中的內(nèi)聯(lián)變量減少內(nèi)存訪問。
- 通過生成代碼中的內(nèi)聯(lián)調(diào)用減少虛擬方法調(diào)用。
- 減少條件分支。
- 減少哈希查找。
- 多種二進(jìn)制協(xié)議:對(duì)象圖、行格式等。
除了跨語言序列化之外,F(xiàn)ury 還具有以下功能:
- 直接替換 JDK/Kryo/Hessian 等 Java 序列化框架,無需修改任何代碼,但速度提高 100 倍。它可以極大地提高高性能RPC調(diào)用、數(shù)據(jù)傳輸和對(duì)象持久化的效率。
- JDK 序列化 100% 兼容,原生支持 Java 自定義序列化
writeObject/readObject/writeReplace/readResolve/readObjectNoData。 - 支持 golang 的共享和循環(huán)引用對(duì)象序列化。
- 支持 golang 自動(dòng)對(duì)象序列化。
協(xié)議
不同的場(chǎng)景有不同的序列化要求。Fury 為這些要求設(shè)計(jì)并實(shí)現(xiàn)了多個(gè)二進(jìn)制協(xié)議:
- 跨語言對(duì)象圖協(xié)議:
- 跨語言自動(dòng)序列化任何對(duì)象,無需 IDL 定義、模式編譯以及對(duì)象與協(xié)議之間的轉(zhuǎn)換。
- 支持共享引用和循環(huán)引用,無重復(fù)數(shù)據(jù)或遞歸錯(cuò)誤。
- 支持對(duì)象多態(tài)性。
- 原生 java/python 對(duì)象圖協(xié)議:基于語言的類型系統(tǒng)進(jìn)行高度優(yōu)化。
- 行格式協(xié)議:一種緩存友好的二進(jìn)制隨機(jī)訪問格式,支持跳過序列化和部分序列化,并且可以自動(dòng)轉(zhuǎn)換為列格式。
可以基于現(xiàn)有的緩沖區(qū)、編碼、元、代碼生成和其他功能輕松添加新協(xié)議。所有這些都共享相同的代碼庫,并且一種協(xié)議的優(yōu)化可以由另一種協(xié)議重用。
評(píng)論
圖片
表情
