比 Protocol Buffers 快无限倍,开源十年后 Cap'n Proto 1.0 终发布

2023-08-01 16:00:59    来源:OSCHINA

Cap"n Proto 是一种速度极快的数据交换格式和 capability-based RPC 系统,于 2013 年 4 月开源发布。时至今日,Cap"n Proto 1.0 终于发布,这是一个长期支持版本。

Cap"n Proto 项目作者是Kenton Varda —— Protocol Buffers version 2 的主要开发者。他表示,Cap"n Proto 是其多年来开发 Protobufs、听取用户反馈并汲取经验思考反思后的成果结晶。


(资料图)

目前他已离开谷歌,因此“Cap"n Proto 不隶属于谷歌,也从未隶属于谷歌”。基准测试结果表明,Cap"n Proto 比 Protocol Buffers 快无限倍。

自上一个版本 v0.10 以来,新版本的一些亮点内容包括:

针对 Cap"n Proto RPC 性能的一系列优化。其中包括减少 RPC 实现和 KJ I/O 框架的内存分配量,增加从 RPC 协议中省略某些信息以减少流量的功能,以及更好地缓冲一起发送和接收的小信息以减少系统调用。 Breaking change:在此之前,服务器可在调用完成后调用 context.allowCancellation(),选择允许取消 RPC。在 1.0 版中,选择取消 RPC 可通过模式注解(c++.capnp 中定义的 allowCancellation 注解)来实现;模式级注解可以一次对整个文件进行设置。此外,动态选择加入需要大量的簿记工作,在实际使用中会对性能产生明显影响;而改用注释则能提高性能。对于从未使用 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 版本发布后,2.0 版本的工作也开始提上日程。根据规划,v2.0 旨在对 Cap"n Proto 的 C++ API 及其配套的 KJ C++ 工具包库做出一些改变;以及做一些全面的向后兼容改动以修复一些问题,并改善团队中开发人员的体验。目前的一些想法包括:

需要一个支持 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 信号是通过销毁流来发出的。取而代之的是将添加一个返回 Promise 的显式 end() 方法。在不调用 end() 的情况下销毁数据流将发出错误的断开信号。(还想对 KJ 流 API 进行其他一些美观改进)。

重新设计几个核心 I/O API,以便更好地适应 Linux 新的 io_uring 事件通知范式。

RPC 实现可能会改为默认允许取消。

值得注意的是,目前还没有计划对序列化格式或 RPC 协议进行任何向后不兼容的更改。所讨论的更改仅影响 C++ API。用其他语言编写的应用程序完全不受这一切的影响。

正式的 2.0 版本短时间内不会推出发布,或许也要等上几年。

更多详情可查看官方公告。

关键词:

相关新闻
相关新闻
v 比 Protocol Buffers 快无限倍,开源十年后 Cap'n Proto 1.0 终发布 2023-08-01
v “中国一直是非洲农业现代化发展的有力支持者” 2023-08-01
v 【收评】豆油日内上涨0.52% 机构称BMD棕榈油下跌 因马币走强及其他油脂疲软 2023-08-01
v 银行也拼了!存款、理财“拼团购”重现,合规风险能否避免? 2023-08-01
v 艺术体操小花绽放十六届山西省运会 2023-08-01
v 黑龙江伊春市南岔县一楼房坍塌 4人死亡4人轻伤 2023-08-01
v 河北张家口市:汇聚多元力量 提升治理能效 2023-08-01
v 湘桂同心齐奏和谐曲——广西贺州市富川县构建“五联三通”治理机制维护省际边界稳定 2023-08-01
v 黑龙江省“乡村著名行动”正式启动 2023-08-01
v 聚焦智慧山地农业 重庆“农业硅谷”蹚出新路 2023-08-01
v 8月1日:"农产品批发价格200指数"比昨天上升0.08个点 2023-08-01
v 金花股份(600080)8月1日主力资金净卖出899.53万元 2023-08-01
v 这城有良田退星 这城有良田回退星级的方法 2023-08-01
v 焕发新活力 国风再“破圈” 2023-08-01
v 快讯!北京移动5G应急通信车开通,门头沟潭柘寺镇南辛房村周边移动通信恢复 2023-08-01
v 首破900亿!创历史新高 2023-08-01
v 2023第30周昆明楼市:行业新政效果初现 市场成交企稳趋势明显 2023-08-01
v 注意安全!怀柔水库水位超汛限,开始向怀河泄洪 2023-08-01
v 三花控股集团投资新设工业自动化公司 注册资本1亿元 2023-08-01
v 北大荒农业股份青龙山分公司科技助力农机升级提效 2023-08-01
v 广西靖西:建好“零工市场”促进灵活就业 2023-08-01
v 河南:中原农谷“四梁八柱”基本成型 2023-08-01
v 为江苏乡村振兴及高质量发展打造坚实的数字底座 2023-08-01
v 领科教育北京校区在海淀区国际高中学校中的排名如何? 2023-08-01
v 宇信科技董秘回复:公司在通用大模型布局中,着重在场景和应用的落地,发挥我们24年银行业的能力优势 2023-08-01
v 腾势N7正式开启交付,超55%用户来自BBA 2023-08-01
v 苗头性倾向性问题 苗头 2023-08-01
v 四川省内江市发布暴雨黄色预警 2023-08-01
v 工业富联再辟谣 2023-08-01
v Steam情侣必玩游戏推荐!How 2 Escape双人合作密室逃脱游戏 2023-08-01

种植基地网 版权所有©未经书面授权禁止复制或建立镜像
京ICP备2022022245号-33
联系我们: 435 226 40@qq.com