Grow with AppMaster Grow with AppMaster.
Become our partner arrow ico

什么是gRPC?

什么是gRPC?

大多数软件应用程序需要能够连接到其他代码,有几个原因。这可以是任何东西,从整合到添加新功能。为了确保软件能够与其他应用程序连接,并确保其与其他程序的整合,开发人员使用API。这就是为什么应用程序编程接口对大多数软件来说是必要的。通过它们作为跨系统的桥梁作用,API使个人能够访问各种网络服务。因此,挑选适当的技术为你的项目提供API是很重要的。

任何想要与用户分享其应用或平台的组织都需要使用API。有许多开发和微调API的方法,以使它们完美地适合你的应用程序。程序员用来设计API的最新方法之一是gRPC。让我们看看什么是gRPC以及它的优点和缺点。

什么是gRPC?

gRPCGoogle Remote Procedure Call 。gRPC是一个开源的RPC框架,用于创建可扩展和快速的API。它使网络系统的开发以及gRPC客户端和服务器应用程序之间的开放通信成为可能。gRPC已经被一些顶级科技公司所接受,包括谷歌、IBM、Netflix等等。gRPC框架依赖于HTTP/2、协议缓冲区等尖端技术栈,以实现最佳的API保护、高性能远程过程调用和可扩展性。

grpc

什么是RPCs?

RPC 和REST-- --在历史上是构建API的两种独立方法。此外,像Representational State TransferSOAP和 协议也被用于此目的。远程过程调用让你编写软件,就像它将在本地运行一样,尽管它可能在不同的设备上运行。GraphQL

它们是设计API时最常规使用的框架。与典型的HTTP协议调用相反,RPC采用函数调用作为客户端与服务器交互的主要方法。RPC ,因为交换很简单,内容也很轻量级,所以是创建API的一种富有成效的技术。gRPC服务也模仿了这种通信架构。RPC ,采用IDL -Interface Definition Language ,对数据类型和将被调用的方法进行约定。从RPC中采用的gRPC服务在最近几年变得非常流行。

为什么要开发gRPC服务?

随着越来越多的企业开辟了整合的渠道,这种软件的链接越来越困难。RPC API在集成方面具有挑战性,而且分发起来有风险,因为它们可能会泄露内部的具体情况。它们是用许多编程语言开发的,与底层框架紧密相连。

这个问题得到了解决,当REST API在2000年推出时,API的可访问性得到了提高。具体来说,它给了用户一个一致的方式,通过使用标准的HTTP技术,如GETPUT POST 、等资产间接检索信息。RPCREST API 的主要区别在于,用RPC ,流程得到了解决,但要预测各种系统的流程可能是什么并不容易。

REST API 不能完全取代直接和轻量级的RPC ,因为它产生了大量的元数据,即使它为处理许多应用程序提供了一个增强的格式。这导致最终出现了Facebook的GraphQL 和谷歌的gRPC服务。

谷歌在2015年建立了gRPC,作为RPC框架的补充,以连接众多用各种技术制作的微服务架构。gRPC最初与谷歌的核心基础设施密切相关,但最终被开源并标准化,供大众使用。

gRPC概念概述

尖端技术的利用,比JSON和XML具有更高的性能,并提供了更大的API完整性,是gRPC的产生和普及的原因。你应该了解的一些gRPC概念是。

协议缓冲区

协议缓冲区,也被称为Protobuf ,是序列化或反序列化标准,使定义应用程序和自动执行客户端库的代码生成变得简单。最新的版本,proto3 ,使用起来更简单,并为gRPC提供了最新的功能。

.Proto 文件实现了gRPC服务和gRPC客户端和服务器信息之间的通信。.proto 文件在执行时由Protobuf 编译器加载到内存中 -protoc 。这个编译器建立了gRPC客户端和gRPC服务器应用程序,采用内存结构来序列化和反序列化二进制数据。在gRPC的代码生成之后,每个通信都在用户和远程服务之间发送和接收。

由于数据被翻译成二进制形式,而且加密信号较小,用Protobuf 进行解析时,gRPC使用的CPU 功率较小。因此,即使在CPU ,如手机等较弱的计算机上,用gRPC发送消息也更快。

HTTP/2

gRPC服务是建立在HTTP/2之上的,HTTP/1.1的版本有较少的限制。虽然它与旧的HTTP协议一起工作,但HTTP/2对gRPC有几个复杂的功能。这包括一个二进制框架层,它将每个HTTP/2查询和回复分为较小的消息,并以二进制格式进行框架,以改善消息的传递。此外,gRPC支持客户端和gRPC服务器在双向全双工流中的多个请求和响应。

HTTP/2有一个流量控制方法,可以精确控制飞行中数据包的缓冲所需的RAM 。它还为gRPC服务提供报头压缩。HTTP/2中的所有内容在传输前都是加密的,甚至包括头文件,它提供了高性能的远程过程调用。gRPC利用HTTP/2提供了异步和同步处理,使各种互动和流式RPC类型的执行成为可能。

在HTTP/2所有这些特性的帮助下,gRPC服务可以利用更少的资源,这使得基于云的应用程序和gRPC服务之间的响应时间更快,在移动设备上操作的gRPC客户端的电池寿命更长。

流媒体

gRPC支持的一个重要理念是流,它允许在一个请求中执行多个进程。gRPC通过HTTP/2的复用功能使之可行,它允许在一个TCP --Transmission Control Protocol --连接上同时发送或接收几个响应或请求。主要的流式格式是服务器流式RPC、客户端流式RPC,以及双向流式RPC

渠道

与HTTP/2流相反,它允许在一个请求连接上同时有许多流,gRPC的通道支持多个连续的流,跨越多个请求。它们被用来建立一个客户端存根,并提供一种机制来链接到一个特定IP和端口的gRPC服务器。

gRPC架构

gRPC架构由gRPC客户端和gRPC服务器组成。每个gRPC客户端服务都包含一个存根或一个自动生成的文件,这类似于一个包含活动的远程进程的接口。gRPC客户端向存根发起一个本地过程调用,其中包含要转发给gRPC服务器消息的参数。然后,gRPC客户端存根在使用Protobuf marshaling过程将参数序列化后,将查询发送到本地计算机上的本地客户端时间单元。

操作系统使用HTTP/2协议与远方的服务器计算机进行通信。服务器的操作系统接受消息并调用服务器存根进程,该进程使用Protobuf ,在对传入的参数进行解码后调用相应的操作。然后,客户端传输层从服务器存根接收加密的响应。在gRPC客户端存根收到响应消息并解开所提供的参数后,执行就会转回给调用者。

gRPC的优点

与其他API设计机制相比,gRPC有几个优点。gRPC还改进了RPC 结构。以下是gRPC服务的最突出的优点。

  • 高性能的远程过程调用

使用Protobuf 和HTTP/2,gRPC服务提供了高达10倍于REST+JSON交互的高性能和API保护。通过使用服务器推送、多路复用和报头压缩,HTTP/2为gRPC服务提供了高性能排名。虽然多路复用消除了线头延迟,但服务器推送使HTTP/2有可能在需要之前从服务器推送材料到客户端。使用HTTP/2,消息被更有效地压缩,从而使gRPC服务的加载速度更快。

  • 流媒体

流媒体gRPC服务的服务描述已经包括客户端或服务器端的流媒体原则。因此,构建gRPC客户端和流式服务变得非常容易。

  • 代码生成

gRPC客户端和gRPC服务器程序的代码生成是gRPC网络方法的关键组成部分。为了从.proto 文件中生成代码,gRPC模块采用了.protoc 编译器。Protobuf 格式是通过gRPC中的代码生成来控制的,它被用来定义数据格式和应用端点。它可以创建客户端的网络存根和服务器端的骨架,这减少了在gRPC服务中设计各种服务的程序所需的时间。

  • 互操作性

众多的系统和编程语言,如Java, Ruby, Go、C#等,都受到gRPC资源和库的支持。通过这些编程语言,开发人员可以创建高性能的应用程序,同时利用gRPC的完全跨平台兼容性。这要归功于Protobuf 二进制接线形式和几乎所有系统的有效代码生成。

  • 安全性

gRPC使用HTTP/2通过TLS端到端加密会话来确保API的安全性。gRPC提倡采用SSL/TLS在服务器和gRPC客户端之间进行数据加密和认证。

  • 生产力和可用性

由于gRPC是一个完整的RPC ,它可以在各种系统和语言上顺利运行。gRPC也有很好的工具,很多必要的模板代码都是手动生成的。由于gRPC大大节省了时间,工程师们现在可以更专注于核心功能。

gRPC的缺点

尽管我们希望gRPC的缺点最终会得到解决,但它们现在确实给它的使用带来了一些问题。你应该注意的gRPC的一些缺点是。

  • 缺少成熟度

一项技术的发展可能是采用的一个重要障碍。这一点在使用gRPC时也很明显。GraphQLgRPC的同行之一,在StackOverflow ,有超过14k的查询,而gRPC目前只有略低于4k。gRPC社区缺乏关于最佳实践、解决方案和成功的知识,因为在谷歌之外,没有太多的程序员协助HTTP/2以及协议缓冲区。然而,随着gRPC社区的扩大和吸引新的开发者,这将最终演变。

  • 有限的浏览器支持

由于目前没有一个gRPC网络浏览器可以处理HTTP/2框架,你不能有效地从浏览器调用gRPC服务,因为gRPC网络主要依赖于HTTP/2。因此,你必须利用gRPC的代理,这有几个弊端。

  • 人类无法阅读

与XML和JSON不同,Protobuf 文件不能被人类阅读,因为数据被压缩成二进制格式。开发人员必须使用额外的工具,如服务器反射协议和gRPC命令提示,以评估有效载荷,进行故障排除,并创建手动查询。

  • 陡峭的学习曲线

熟悉协议缓冲区和发现应对HTTP/2摩擦的方法需要一段时间,这与REST和GraphQL相反,两者大多采用JSON。

AppMaster有什么帮助?

AppMaster

无代码生成正在改变人们看待编程的方式。无代码生成使人们有可能通过代码生成更快地学习和创建软件。使用像AppMaster这样的无代码生成平台,你的应用程序的代码生成会更简单。也不存在所有权问题,因为代码生成是受保护的,你创建的代码将只属于你。使用AppMaster,你可以更快、更容易地创建客户端和服务器应用程序。

AppMaster的无代码生成平台让开发者使用gRPC协议在后端微服务架构之间发出请求。明年,我们将扩展对gRPC的支持,将API纳入gRPC Web和gRPC Mobile应用程序。

总结

尽管gRPC服务有几个好处,使其对企业和开发者有吸引力,但最后,决定使用gRPC服务而不是其他的如REST或SOAP,取决于你的应用。虽然有些软件使用gRPC会有高性能的好处,但其他软件可能更适合使用其替代品。你应该了解gRPC服务的缺点和优点,并决定它是否适用于你。

相关帖子

PWA 如何提升移动设备的性能和用户体验
PWA 如何提升移动设备的性能和用户体验
探索渐进式 Web 应用程序 (PWA) 如何改善移动性能和用户体验,将 Web 的覆盖范围与类似应用程序的功能相结合,实现无缝互动。
探索 PWAs 为您的企业带来的安全优势
探索 PWAs 为您的企业带来的安全优势
探索渐进式 Web 应用程序 (PWAs) 的安全优势,并了解它们如何增强您的业务运营、保护数据并提供无缝的用户体验。
受益于 PWA 的采用的五大行业
受益于 PWA 的采用的五大行业
了解采用渐进式 Web 应用后获得巨大收益的五大行业,探索 PWA 如何增强用户参与度和业务增长。
免费开始
有灵感自己尝试一下吗?

了解 AppMaster 强大功能的最佳方式是亲身体验。免费订阅,在几分钟内制作您自己的应用程序

将您的想法变为现实