比 Protocol Buffers 快無限倍,開源十年后 Cap'n Proto 1.0 終發(fā)布
2023-08-02 04:01:30 來源:OSCHINA
Cap"n Proto 是一種速度極快的數據交換格式和 capability-based RPC 系統,于 2013 年 4 月開源發(fā)布。時至今日,Cap"n Proto 1.0 終于發(fā)布,這是一個長期支持版本。
【資料圖】
Cap"n Proto 項目作者是Kenton Varda —— Protocol Buffers version 2 的主要開發(fā)者。他表示,Cap"n Proto 是其多年來開發(fā) Protobufs、聽取用戶反饋并汲取經驗思考反思后的成果結晶。
目前他已離開谷歌,因此“Cap"n Proto 不隸屬于谷歌,也從未隸屬于谷歌”?;鶞蕼y試結果表明,Cap"n Proto 比 Protocol Buffers 快無限倍。
自上一個版本 v0.10 以來,新版本的一些亮點內容包括:
針對 Cap"n Proto RPC 性能的一系列優(yōu)化。其中包括減少 RPC 實現和 KJ I/O 框架的內存分配量,增加從 RPC 協議中省略某些信息以減少流量的功能,以及更好地緩沖一起發(fā)送和接收的小信息以減少系統調用。 Breaking change:在此之前,服務器可在調用完成后調用 context.allowCancellation(),選擇允許取消 RPC。在 1.0 版中,選擇取消 RPC 可通過模式注解(c++.capnp 中定義的 allowCancellation 注解)來實現;模式級注解可以一次對整個文件進行設置。此外,動態(tài)選擇加入需要大量的簿記工作,在實際使用中會對性能產生明顯影響;而改用注釋則能提高性能。對于從未使用 context.allowCancellation() 的用戶來說,升級到 1.0 版時無需做任何更改,默認情況下仍不允許取消。(如果受到影響,你將看到編譯錯誤。如果沒有編譯錯誤,則無需擔心)。 KJ 現在在有 kqueue() 的系統(MacOS 和 BSD 衍生版本)上使用它來處理異步 I/O。在 Linux 上,KJ 一直使用 epoll,但在其他類 Unix 平臺上,KJ 一直使用較慢的 poll()-based 方法。 KJ 的 HTTP 客戶端和服務器實現現在支持 CONNECT 方法。 引入了一個新類 capnp::RevocableServer,以幫助在生命周期不受包裝器控制的對象周圍導出 RPC 包裝器。 以及一些更小的 bug 修復和改進。詳情可參閱 PR 歷史記錄。在 1.0 版本發(fā)布后,2.0 版本的工作也開始提上日程。根據規(guī)劃,v2.0 旨在對 Cap"n Proto 的 C++ API 及其配套的 KJ C++ 工具包庫做出一些改變;以及做一些全面的向后兼容改動以修復一些問題,并改善團隊中開發(fā)人員的體驗。目前的一些想法包括:
需要一個支持 C++20 甚至 C++23 的編譯器。Cap"n Proto 1.0 僅需要 C++14。
需要一個支持 C++20 協程的編譯器。
Cap"n Proto 的 RPC 應用程序接口、KJ 的 HTTP 應用程序接口和其他程序接口很可能會進行修改,使其更加的coroutine-friendly。
kj::Maybe 將變得更符合人體工學。它將不再重載 nullptr 來表示值的缺失,將引入 kj::none 來代替。KJ_IF_MAYBE 將不再生成指針,而是一個引用(這是利用 C++17 特性實現的一種技巧)。
將放棄對禁用異常情況下的編譯的支持。
將放棄對no-RTTI 模式和其他會造成維護負擔的特殊模式的支持。
可能會修改 KJ 的引用計數方法,因為目前的設計已被證明對許多用戶來說并不直觀。
將修復 kj::AsyncOutputStream 中一個長期存在的設計缺陷,目前 EOF 信號是通過銷毀流來發(fā)出的。取而代之的是將添加一個返回 Promise 的顯式 end() 方法。在不調用 end() 的情況下銷毀數據流將發(fā)出錯誤的斷開信號。(還想對 KJ 流 API 進行其他一些美觀改進)。
重新設計幾個核心 I/O API,以便更好地適應 Linux 新的 io_uring 事件通知范式。
RPC 實現可能會改為默認允許取消。
值得注意的是,目前還沒有計劃對序列化格式或 RPC 協議進行任何向后不兼容的更改。所討論的更改僅影響 C++ API。用其他語言編寫的應用程序完全不受這一切的影響。
正式的 2.0 版本短時間內不會推出發(fā)布,或許也要等上幾年。
更多詳情可查看官方公告。
關鍵詞:
推薦內容
- 比 Protocol Buffers 快無限倍,開源十年后 C
- 電子處方流轉“提速”還需“擴圍”
- 北京暴雨已致11人遇難、27人失聯
- 336家廠商參展!哈爾濱國際車展即將啟幕
- 借新能源東風,武漢經開區(qū)從制造之城向智造之城進
- “缺斤短兩”掛黃牌30天,警示商家也提醒了消費者
- 凱旋!濟南歷城二中女足載譽返濟
- 暑運過半全國鐵路發(fā)送旅客4.06億人次,客貨運輸高
- 海底撈人均消費多少上海普陀
- 共建大運之城 共享賽事榮光
- 公司問答丨蘋果應用商店下架訊飛星火APP 科大訊
- 中國鐵建(01186):陳大洋辭任執(zhí)行董事及提名委員
- 山海異聞錄七星辟邪怎么打 山海異聞錄七星辟邪打
- 凌銳藍信加入國際數據空間協會(IDSA),共同推動全
- 林芝中院召開信訪案件聽證會 以公開促公正樹公信
- 多個AIGC應用在蘋果應用商店下架,接近監(jiān)管人士:
- 產生逾期提前還完記錄能消除嗎-產生逾期提前還完
- 交通事故責任如何劃分依據是什么
- 河南3名金融機構高管任職資格獲批
- 《紙牌屋》男主史派西勝訴后復出:新電影獻聲不露
- 江蘇航信是干什么的 江蘇航信
- 80是幾寸管 80是
- 《驚隊2》無緣IMAX放映引漫威粉絲不滿!因沙丘2獨占
- 送裝備的魔獄私服版本下載 最新版魔域奇跡手機版
- 記者:1-6像0-8、2-8那樣刻骨,希望中國女足走上
- 安德烈·巴爾迪尼(關于安德烈·巴爾迪尼簡述)
- 安慶祥通汽車銷售服務有限公司(關于安慶祥通汽車
- 江蘇海門:家紡業(yè)職工技能大比武
- 食品加工制造板塊跌0.71% 惠發(fā)食品漲10.03%居首
- 冰河時代題材電影 從冰河世界到里約大冒險)
- 廣州康鷺改造勢在必行 百家企業(yè)代表:迫切找到可
- 菲律賓呂宋島北部發(fā)生5.5級地震
- 第32次觸發(fā),游族網絡BOLL值階段新低,開口收窄是
- 奧園健康(03662)8月2日起復牌
- 技炫青春能創(chuàng)未來,全國職業(yè)院校技能大賽“司法技
- 人民銀行:貨幣信貸和融資總量保持合理增長
- 悅普集團IPO終止,2022年上半年應收款項余額占營
- 生活樂趣是什么意思_生活樂趣
- 赤峰有哪些職業(yè)技術學院
- 08.01 恒指、HHI、黃金、YM、NQ期貨實戰(zhàn)技術