← 返回蜂巢洞察

从RPC到gRPC:了解远程过程调用、Protocol Buffers以及现代分布式系统的通信机制

任何应用程序在某些时候都需要与其他系统进行交互。移动应用会与后端服务进行通信;后端服务又会与支付网关对接;认证服务需要与用户服务进行交互;数据传输流程则要与存储系统相连。 问题不在于系统是否需要相互沟通,而在于应该如何实现这种沟通。 多年来,基于HTTP和JSON的REST架构一直是人们的首选方案。它运行稳定、使用简单,而且相关的开发工具也随处可见。然而,随着系统规模的扩大——无论是参与交互的服务数量增加、数据交换量增大,还是对实时通信的需求提高——REST架构逐渐暴露出了其局限性。 这时,远程过程调用、Protocol Buffers以及gRPC这些技术应运而生了。 通过这本手册,你将了解什

任何应用程序在某些时候都需要与其他系统进行交互。移动应用会与后端服务进行通信;后端服务又会与支付网关对接;认证服务需要与用户服务进行交互;数据传输流程则要与存储系统相连。

问题不在于系统是否需要相互沟通,而在于应该如何实现这种沟通。

多年来,基于HTTP和JSON的REST架构一直是人们的首选方案。它运行稳定、使用简单,而且相关的开发工具也随处可见。然而,随着系统规模的扩大——无论是参与交互的服务数量增加、数据交换量增大,还是对实时通信的需求提高——REST架构逐渐暴露出了其局限性。

这时,远程过程调用、Protocol Buffers以及gRPC这些技术应运而生了。

通过这本手册,你将了解什么是远程过程调用以及它被设计出来是为了解决什么问题;同时也会理解Protocol Buffers的含义、存在理由及其工作原理。

接下来,你会看到谷歌是如何将这些技术结合在一起,从而创造出gRPC的——这是现代分布式系统中最为强大的通信框架之一。你将学习gRPC的四种通信模式,会看到如何通过一个契约文件生成多种语言版本的代码,还会了解如何使用Flutter实现一个包含认证、错误处理和超时机制等生产级功能的完整系统。

读完这本书后,你不仅会知道gRPC是什么,还会明白在什么情况下应该使用它,在什么情况下不适合使用它,以及作为系统工程师应该如何思考服务之间的通信问题。

目录

相关文章

技术实践

OpenTelemetry的工作原理:一份全面的指南

如果你是一名软件开发人员或DevOps工程师,那么你很可能已经听说过OpenTelemetry。在讨论可观测性、监控或分布式系统的调试时,这个术语经常会被提及。 你可能也知道它的基本定义,但了解OpenTelemetry是什么与真正理解它的运作原理其实是两回事。 读完本指南后,你将能够明白OpenTelemetry是如何从端到端工作的——从请求进入你的应用程序的那一刻起,直到这些数据被显示在可观测性后端系统中。你还会了解到追踪信息、时间跨度、上下文传播机制以及数据导出工具是如何共同构成一个完整的处理流程的。 如果你完全不了解OpenTelemetry,也别担心:接下来的部分会帮助你快速掌握相关

阅读全文
技术实践

使用OpenTelemetry实现Claude Code的可观测性

像 Claude Code 、 OpenAI Codex 、 Google Antigravity 以及 Cursor 这样的代理编码工具,在日常软件开发中已经变得无处不在。 随着代理系统的不断发展,开发者让这些系统完成的大部分工作都是通过逐个分配子任务来实现的。许多团队也在探索并使用共享的、多租户式的代理基础设施,这种架构的成本不会与某个特定的所有者挂钩。在这种情况下,可观测性就成为了监控基础设施成本的关键因素。 在本指南中,您将了解可观测性的工作原理,然后学习如何启用Claude Code内置的遥测功能,运行后端程序来收集数据,并读取该系统生成的各类指标、日志及追踪信息。这些内容将帮助您更

阅读全文
技术实践

布隆过滤器解析:这种概率数据结构是如何为Instagram、谷歌以及各种大规模系统提供支持的

Instagram拥有超过5亿个注册用户名。当有新用户尝试注册时,平台几乎需要立即回答一个问题:这个用户名是否已经被别人使用了? 一种简单的解决方法是进行数据库查询——从用户表中查找该用户名,判断它是否存在。这种方法在数据量较小时效果不错,但当数据库记录数量达到5亿条,且每天要被查询数百万次时,就会成为一个严重的性能瓶颈。即使为数据库添加了索引,每次注册尝试时,数据库仍然需要执行复杂的操作。 幸运的是,还有更聪明的解决方法。在触碰数据库之前,可以先询问另一个系统来快速获取答案。这个系统会给出两种可能的回答: 肯定没有被占用: 这个结论是绝对可靠的,没有任何例外情况。这意味着该用户名是可以使用的

阅读全文
技术实践

Cloudflare Workers能够接收入站的TCP连接,而gRPC则是首批被支持使用的协议之一。

现在,Cloudflare Workers可以通过通过Spectrum路由的新connect(socket)处理程序来接收传入的TCP连接,从而结束了此前对HTTP使用的八年限制。使用任何语言编写的容器都可以使用全双工的gRPC协议进行通信;而Cloudflare Workers则可以通过自动进行的gRPC-to-web转换机制来实现单向通信或服务器端流式传输功能。目前所有这些功能都还处于私人测试阶段。 作者:Steef-Jan Wiggers

阅读全文