Google远程过程调用是一个框架,允许服务有效,快速地相互通信。通过使用GRPC,开发人员可以更轻松地构建分布式应用程序。
什么是GRPC?
GRPC是基于HTTP/2的RPC(远程过程调用)协议,允许客户和服务器通过Protibuffers中定义的方法进行通信。
GRPC是一个开源框架,旨在使建筑微服务更加容易,更高效。使用GRPC,开发人员可以在其他服务器上调用远程方法,就好像它们在同一台计算机上运行一样。这有助于优化应用程序开发过程,尤其是在跨平台环境中。
GRPC的起源
在2000年之前,远程过程调用(RPC)是服务请求的首选方法。 RPC呼叫效率很高,但复杂。他们与特定的实现紧密结合,可能是不安全的,因为他们可能会将其内部细节过多地暴露于外界。
代表性状态转移(REST)旨在解决这些问题。它为客户服务器通信提供了一组通用方法。大多数Web开发人员将熟悉获取和发布。休息很容易使用,但效率不高。其请求响应模型存在局限性,其数据需要序列化以进行传输,从而增加了性能开销。
什么是GRPC(Google远程过程调用)?图片1
为了改善这种情况,Google开发了GRPC。 GRPC建立在SPDY的顶部,SPDY是由Google开发的HTTP兼容协议。但是,在SPDY被标准化为HTTP/2之后,GRPC切换为使用HTTP/2作为其主要传输协议。
2016年8月,GRPC被正式发布给开源社区。
GRPC使用协议缓冲区(ProtoBuf)作为其接口定义语言(IDL)和序列化引擎。与以前的技术相比,这使GRPC能够实现更高的性能和更好的可扩展性。
为什么使用GRPC?
GRPC为当今的应用程序开发带来了许多好处。以下是程序员经常为其项目选择GRPC的一些重要原因。
进行性能
性能是开发分布式应用程序的极其重要的因素。由于使用HTTP/2,GRPC提供了快速有效的通信。
每个GRPC连接都可以包含多个请求和响应,从而减少开销并保存带宽。此外,GRPC使用二进制协议进行数据传输,与JSON等文本协议相比,这会提高速度。
增长率
通过使用.proto文件来定义方法和数据类型,程序员可以轻松地自动为许多不同的编程语言生成代码。
其他可能性
GRPC不仅提供了有效的通信协议。它还支持各种其他功能,例如身份验证,错误检查和会话管理。这些功能有助于减少程序员的工作量并提高应用程序可靠性。
什么是GRPC(Google远程过程调用)?图片2
GRPC的好处
GRPC为应用程序开发项目提供了许多好处。这是GRPC提供的一些重要好处。
速度和效率
GRPC最大的好处之一是其出色的数据传输速度。由于使用了HTTP/2和二进制协议,GRPC可以每秒处理数百万请求而不会放慢速度。
双向流
GRPC允许客户端和服务器连续通信,而无需为每个请求创建新的连接。这在需要不断更新的应用程序中很有用,例如聊天应用程序或在线游戏。
http/2
HTTP/2的使用是有助于GRPC实现高性能的关键因素之一。 HTTP/2允许通过相同连接同时发送多个请求,这有助于降低延迟并提高应用程序的可扩展性。
此外,HTTP/2支持多路复用,允许同时发送多个请求和响应,而不必等待每个请求和响应完成。
GRPC的工作原理
为了更好地了解GRPC,我们需要了解其工作原理。 GRPC基于客户端服务器模型,在该模型中,客户端将请求发送到服务器并接收响应。
请求提交过程
当客户端要调用服务器上的方法时,它将发送包含有关该方法和所需参数的信息的请求。然后,GRPC使用Protobuf编码此请求,然后将其通过HTTP/2传输到服务器。
服务器将接收请求,解码并执行相应的方法。完成后,服务器将按照相同的过程将响应发送给客户端。
处理反馈
服务器的响应还将使用Protobuf编码,并通过HTTP/2连接发送。客户将收到响应,解码并按照编程方式处理。
特殊的是,GRPC支持请求和响应的流媒体流,使客户和服务器不必彼此等待,允许客户和服务器连续发送和接收数据。
连接和交流
GRPC保持客户端和服务器之间的持久连接,与每次通信发生新连接相比,保存资源。该连接可以持续到应用程序的整个生命周期,最大程度地减少延迟并优化传输速度。
GRPC的优势和劣势
GRPC提供了许多好处,但也有一些程序员需要考虑的弱点。
优势
GRPC最大的优势之一是其高性能。 HTTP/2和二进制协议的使用增加了数据传输速度并降低了带宽要求。
GRPC还支持许多不同的编程语言,并提供自动代码生成工具,有助于加快开发过程。
弱点
尽管具有许多优势,但GRPC也有一些局限性。其中之一是,它需要对Protobuf的了解以及如何使用随附的工具,从而使新手程序员很难。
GRPC不太适合需要在公共互联网上进行通信的应用程序,在该应用程序可能会干扰HTTP/2连接的情况下。
语言不可知论
GRPC如此受欢迎的原因之一是它与许多不同的编程语言的兼容性。
代码生成
GRPC允许从.proto定义文件中自动生成不同语言的代码。这不仅节省了时间,还可以确保服务之间的沟通统一性。
程序员只需在.proto文件中定义方法和数据类型,而GRPC自动为所需的语言生成代码。
什么是GRPC(Google远程过程调用)?图3
安全
GRPC还提供了强大的安全功能。它支持TLS(传输层安全性)在传输过程中加密数据,有助于保护客户端和服务器之间的敏感信息。
GRPC还通过令牌或证书支持用户身份验证,有助于确保只有有效的用户才能访问该服务。
正式规格
GRPC具有任何人都可以参考的官方规范。这使得开发和实施GRPC变得更加容易,并围绕它创建一个强大的社区。
有了明确的规格,开发人员可以轻松遵循并更新新功能。他们还可以为该项目做出贡献,并与社区分享他们的经验。
最后期限
GRPC允许开发人员为请求设定截止日期,帮助控制响应时间并有效地处理错误。如果在指定的时间内未完成请求,则GRPC会自动中止请求,保存资源并优化应用程序性能。
总结
GRPC(Google Remote Procedure Call)是一种用于开发分布式应用程序的强大而灵活的技术。具有许多出色的功能,GRPC在编程社区的心中得分。
但是,像任何技术一样,GRPC也有其自身的局限性。因此,在决定将GRPC用于其项目之前,程序员需要仔细考虑相关因素,以确保他们为需求选择最合适的解决方案。