Redian新闻
>
LinkedIn 解释为什么选择用 gRPC+Protobuf 替代 Rest.li+JSON

LinkedIn 解释为什么选择用 gRPC+Protobuf 替代 Rest.li+JSON

科技

作者 | Rafal Gancarz
译者 | 明知山
策划 | 丁晓昀

LinkedIn 宣布将转向使用 gRPC 和 Protocol Buffers 作为其微服务平台的服务间通信,之前主要使用开源的 Rest.li 框架,以 JSON 作为主要的序列化格式。

InfoQ 采访了 LinkedIn 杰出工程师 Karthik Ramgopal 和首席工程师 Min Chen ,了解了这一决定背后的主要原因和动机。

InfoQ:放弃 REST 和 JSON 转而选择 gRPC 和 Protocol Buffers 的主要原因是什么?

Karthik Ramgopal/Min Chen: 我们选择使用 gRPC 替换当前的 REST 框架 Rest.li, 主要基于以下原因:

  • 优越的功能——gRPC 是一个功能强大的框架,支持一些高级功能,如双向流、流量控制和截止时间,而这些是 Rest.li 不支持的。

  • 效率——gRPC 也是一个高效的框架,其实现中融入了性能优化,比如完全异步非阻塞绑定和先进的线程模型。我们通过合成基准测试以及并行运行 gRPC 和 Rest.li 服务验证了这一点。

  • 多语言支持——Rest.li 主要用 Java 实现,对其他编程语言支持不全或者根本不支持。gRPC 对多种编程语言提供了高质量的支持,考虑到 LinkedIn 的底层支持需求,这一点很重要。

除了这些原因,gRPC 背后还有一个庞大而活跃的开源社区,并在行业中得到了广泛应用。Rest.li 虽然是开源的,但主要由 LinkedIn 参与贡献,主要使用者也是 LinkedIn。

InfoQ:你们之前在 Rest.li 框架中采用 Protocol Buffers 作为序列化格式。你们从中学到了什么?还评估了哪些其他的序列化格式?

Karthik Ramgopal: 我们已经在博文中详细介绍了这些,我们的主要收获是了解到,从 JSON 转换为 Protobuf 可以在大规模场景下显著降低延迟并提高吞吐量。除了 Protobuf 外,我们还评估了 CBOR、MessagePack、SMILE)、Avro、Kryo、Flatbuffers 和 Cap’n’Proto 等其他序列化格式。最终我们选择了 Protobuf,因为它在运行时性能(延迟、数据量大小、吞吐量)、开发者体验(IDE 编写、模式验证、注解支持等)、以及多语言 / 环境支持方面提供了最佳的平衡。

InfoQ:你们在 Rest.li GitHub 页面** 宣布该框架将不再继续开发并将被弃用。你们对当前框架的用户有什么建议?

Karthik Ramgopal/Min Chen: 考虑迁移到 gRPC。如果需要迁移指南,请通过 LinkedIn 联系我们。

InfoQ:你们在博文中提到一些服务的延迟改善达到了 60%。你们能否提供更详尽的细节?

Karthik Ramgopal: 延迟的改善主要来自于更小的数据载荷和序列化 / 反序列减少对 CPU 时间的占用。60% 这个数字是针对具有非常大且复杂数据载荷的服务,在这些服务中,这些成本是导致延迟的主要因素。我们还注意到使用 Protobuf 时,许多服务的尾部延迟(p95/p99)也有了显著改善,主要是因为减少了垃圾回收。

InfoQ:你们也提到 LinkedIn 目前在生产环境中有超过 50000 个 Rest.li 端点。这是一个惊人的数字,你么能解释一下为设么有这么多端点吗?

Karthik Ramgopal: 作为最大的专业人脉网络之一,我们有着复杂的“经济图谱”实体。其中,我们的企业业务(如 Recruiter、LinkedIn Learning、Sales Navigator 等)拥有各自的实体。另外,我们还有内部应用程序、工具系统等。此外,我们通常采用三层架构,包括 BFF(Backend For Frontend)、中间层和后端。我们鼓励采用基于 CRUD 的建模方式,使用规范化实体进行标准化建模。在过去的 10 年中,所有这些用例都是通过 Rest.li 进行建模的,这解释了为什么会有那么多端点。

InfoQ:采用 gRPC+Protobuf 的主要目标 / 原因是什么?LinkedIn 是否正在进行或计划开展其他支持类似目标的项目?

Karthik Ramgopal/Min Chen: 采用 gRPC+Protobuf  的原因与我们选择 gRPC+Protobuf 而不是 REST+JSON 的目标保持一致。

我们正在将所有有状态存储和流式处理系统从 Avro 迁移到 Protobuf。我们也在将一些通用基础设施功能(如授权、调用追踪、日志记录等)从 Java 库移至 Sidecar,并通过 UDS(Unix Domain Socket)提供 gRPC API,以降低多语言支持的成本。我们还在改进我们的内部服务发现和负载均衡器,采用工业标准的 xDS 协议,以适配 gRPC xDS SDK 和 Envoy Sidecar。

查看英文原文

https://www.infoq.com/news/2023/12/linkedin-grpc-protobuf-rest-json/

声明:本文由 InfoQ 翻译,未经许可禁止转载。

今日好文推荐

发布 Vue3 让尤雨溪吃尽苦头:犯了3个错,每一个都需开发者警惕

阿里被判向京东赔偿10亿;要求销毁 ChatGPT,微软和 OpenAI被起诉;阿里云大调整:混合云部分团队裁员30%|Q资讯

80 岁 Postgres 创始人、数据库领域“祖师爷”想颠覆数据库设计:不推翻下当前技术,不足以谈人生

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
「think step by step」还不够,让模型「think more steps」更有用这就是我依旧选择用SU建模的理由!The lessons from Microsoft’s startling comeback | 商论双语Timescale 推出无服务器数据库的替代方案,Dynamic PostgreSQL葡萄牙之路:风雨飘摇中的记忆SoftBank’s struggles point to a tech investing hangoverBeyond the State: China's Private Medical Groups Go Global150刀Intel Core i5 11500 6 Core LGA 1200 2.7Ghz CPU Processor鸿发超市「2000 万美元」买下82街前Walmart超市!开设第4家Hông Phát分店!坎昆全包式度假酒店新选择?非传统酒店七字区 全包酒店入住体验 - Dreams Vista Cancun ResortChina’s Top Court Takes Aim at Owners of Aggressive Dogs红色日记 批判运动 4.1-15【医学英语】27-3:How Likely Lifestyle Choices Affect Stroke RiskPCIe重磅公布:用CopprLink 取代 OCuLink?收割人类 III 之第十八章 宇宙养老计划(2)Redis实战 | 使用Redis 的有序集合(Sorted Set)实现排行榜功能,和Spring Boot集成前端技术探秘 - Nodejs的CommonJS规范实现原理China’s Priciest Cities Push to Build — and Sell — Cheap HomesTUM、LMU食堂纷纷罢工!泼天的富贵这次轮到Döner店了?加拿大Scotiabank开启2024 Woman Program,只要女留学生!亚马逊14亿美元收购iRobot计划被搅黄!iRobot宣布裁员350人精选DS岗位 | Lucid Software、Kodiak Robotics、Ust Globa岗位发布!年底美股行情----先把血窟窿堵上今年最爽加国女留学生:Scotiabank开启2024 Woman Program,女生0门槛投!650刀Xiaomi pad 5 pro 8gram 128g storage with keyboard and pen SpringBoot 采用 JsonSerializer 和 Aop 实现可控制的数据脱敏“The rest of our life” 一首不错的乡村歌曲XM boosted by 175 overseas investment projects last year大模型RAG问答技术架构及核心模块回顾:从Embedding、prompt-embedding到Reranker内网穿透工具 FRP(Fast Reverse Proxy) 真的非常好用北美专属,GPA3.3可投!Bank of America新开2024 Analyst Programdaycare、preschool、kindergarten、pre-k傻傻分不清楚?一篇文章带你了解美国的教育体制鲨疯了!Rona大促NESPRESSO咖啡机$88(原$169)圣诞树$53!最后一批!Salesforce (US) 开放2024 Graduate ProgramChina Clamps Down on Drug Price Differences Across Provinces曲终人散,人见人爱的他离开了
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。