← 返回蜂巢洞察

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

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

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

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

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

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

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

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

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

目录

相关文章

技术实践

“从设计层面确保安全性”:在编写任何代码之前,如何将安全机制纳入系统架构之中

在大多数工程团队中,都会进行这样的对话——不过往往为时已晚。 想象一下:某个功能被部署到生产环境中之后,才会进行安全审查;或者在进行渗透测试时发现了问题;更糟糕的是,还会收到事故报告。 这些漏洞确实是存在的,修复它们也需要投入大量成本。而在这些讨论中,总会有人说:“我们需要为这个功能添加安全措施。” 但这个问题就出在这里:安全并不是事后才添加到软件中的东西,而应该从项目一开始就被纳入设计之中。一旦开始考虑为已经存在的东西添加安全功能,那就意味着你已经进入了“事故应对模式”。 “安全驱动设计”是一种完全不同的思维方式——在制定架构决策之前,就应该明确安全要求;在编写任何代码之前,就必须了解潜在的

阅读全文
技术实践

如何利用MCP让AI代理安全地访问内部API

我们的值班团队使用了一个小型内部笔记API。与之配套的网页应用可以显示当前谁正在负责处理紧急事务、哪些日期被安排为部署禁用期,以及运行脚本的位置。该团队中的一位开发人员希望能够在不打开网页应用的情况下,通过类似“Cursor”这样的工具进行搜索。 他们按照大多数人在周五下午会采取的方式设置了这个系统:将API的基本URL复制到助手设置中,将从共享操作库中获取的长期有效令牌粘贴到笔记本电脑的环境变量中,然后在助手的使用说明中添加了一条提示:“仅用于读取笔记内容,不得进行任何修改。” 在他们的机器上,这个系统确实能够正常工作。当他们询问下一次部署禁用期是什么时候时,助手会调用相应的搜索接口,从而返

阅读全文
技术实践

如何将结构化数据(JSON-LD)添加到Next.js网站中并进行验证

结构化数据对搜索引擎来说一直都非常重要。当搜索引擎读取你的页面时,它看到的是HTML代码:标题、段落、日期以及名称等等。 结构化数据能够直接告诉搜索引擎这些内容的含义。例如,这个页面是一篇文章,这是它的标题,这篇文章是由某个人撰写的,并且发布于某个特定的日期。 对我来说,搜索引擎优化并不是一个需要简单勾选的步骤。我希望自己创建的产品和网站能够被人们找到,并且在被找到之后也能被正确理解。 因此,只要合适,我就会在每一页中添加结构化数据。而且我认为,随着人工智能系统开始根据网页内容来回答问题,结构化数据的重要性只会越来越明显,而不会减弱。 在Next.js应用程序中,没有任何工具会自动为你生成这些

阅读全文
技术实践

掌握现代React路由技术:TanStack Router快速入门教程

在现代Web应用中,路由机制已经远远超越了仅仅根据URL路径来渲染组件的范畴。如今的开发者们渴望获得端到端的类型安全性、自动化的代码拆分功能、无缝的URL搜索参数管理机制,以及高效的数据获取方式,而无需被繁琐的`useEffect`钩子所困扰。 TanStack Router是一个功能强大的路由框架,它能够提供100%的TypeScript类型安全性,并确保在代码正式投入生产之前就能发现其中存在的错误。 我们最近在freeCodeCamp.org的YouTube频道上发布了一门全面的实践课程: TanStack Router课程——加载器、认证与类型安全的路由机制 ,该课程由Tapascrip

阅读全文