大多数软件应用程序需要能够连接到其他代码,有几个原因。这可以是任何东西,从整合到添加新功能。为了确保软件能够与其他应用程序连接,并确保其与其他程序的整合,开发人员使用API。这就是为什么应用程序编程接口对大多数软件来说是必要的。通过它们作为跨系统的桥梁作用,API使个人能够访问各种网络服务。因此,挑选适当的技术为你的项目提供API是很重要的。
任何想要与用户分享其应用或平台的组织都需要使用API。有许多开发和微调API的方法,以使它们完美地适合你的应用程序。程序员用来设计API的最新方法之一是gRPC。让我们看看什么是gRPC以及它的优点和缺点。
什么是gRPC?
gRPC是Google Remote Procedure Call 。gRPC是一个开源的RPC框架,用于创建可扩展和快速的API。它使网络系统的开发以及gRPC客户端和服务器应用程序之间的开放通信成为可能。gRPC已经被一些顶级科技公司所接受,包括谷歌、IBM、Netflix等等。gRPC框架依赖于HTTP/2、协议缓冲区等尖端技术栈,以实现最佳的API保护、高性能远程过程调用和可扩展性。
什么是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技术,如GET 、PUT 、 POST 、等资产间接检索信息。RPC 与REST 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的无代码生成平台让开发者使用gRPC协议在后端微服务架构之间发出请求。明年,我们将扩展对gRPC的支持,将API纳入gRPC Web和gRPC Mobile应用程序。
总结
尽管gRPC服务有几个好处,使其对企业和开发者有吸引力,但最后,决定使用gRPC服务而不是其他的如REST或SOAP,取决于你的应用。虽然有些软件使用gRPC会有高性能的好处,但其他软件可能更适合使用其替代品。你应该了解gRPC服务的缺点和优点,并决定它是否适用于你。