前言
我们熟知的 REST通常只是用来进行数据的CRUD操作,可惜现实中,需要远程通信的应用场景远不止CRUD,很多场景还需要双向通信,或者要求高实时性,REST根本无法应付;用socket低阶函数方式编程难度大而且后期维护扩展困难。gRPC是适用于网络通信、接口编程的1个非常好的选项。
第1步学习目标:
- gRPC工作原理
- gRPC有哪些值得了解的优点
- 基本用法代码实现
gRPC工作原理
在介绍gRPC工作原理之前,先回顾一下什么是Remote Procedure Calls(RPC) 远程过程调用?
RPC令是客户机-服务器通信形式的一种,使得客户机通过远程调用1个服务器提供函数,它使用IDL(Interface Definition Language)来定义函数接口及参数形式。

gRPC仍然支持上述工作原理,但又做了重要改进,已越来越多的项目所采用。
gRPC有主要优点
gRPC是搭建分布式应用接口和客户端的框架。在 gRPC 中,客户端应用程序可以直接调用不同机器上的服务器应用程序上的方法,就像它是本地对象一样,可以更容易创建分布式应用程序和服务。与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以远程调用的方法及其参数和返回类型。在服务端,服务端实现这个接口并运行一个 gRPC 服务器来处理客户端调用。在客户端有一个stub,负责参数序列化及发起调用请求
gRPC有许多优点,令采用这项技术的团队受益:
1)gRPC 在消息发送端,按protobuf 协议定义消息内容格式并进行序列化,接收侧收到消息后,采用protobuf协议反序列化读取内容。protobuf 非常节省资源,因此速度比json快了8倍,xml都60%以上。

2)gRPC 基于HTTP/2协议,支持multiplexing多路复用,而HTTP/1.1只能顺序处理。 并且gRPC采用了包头压缩来进一步减少网络开销。

3)Streaming流式处理,gRPC 的核心概念之一,也就是客户机发送多个请求,服务机可以在1个响应中回复。 还支持双向流式处理RPC, 客户端和服务器同时相互发送消息,而无需等待响应。

4) gRPC 客户端和服务器不必采用同一种语言编写, 如C++, Java, Go、Python 或 Ruby 中的客户端可以轻松地调用在 Java 创建 gRPC 服务器。
对于快速实现简单RPC编程,也可以选择 Python内置的 xmlrpc 模块,具体可以参考本人另一篇博文( 点击阅读 )
gRPC的基本用法
还是用实例代码来学习用法,
下面的例子要实现的目标: 服务器提供1个greet 函数,客户机通过gRPC调用。

本文详细介绍了gRPC的工作原理,包括其基于RPC的改进,优点如protobuf协议的高效通信、HTTP/2的多路复用和流式处理。通过实例展示了如何使用gRPC进行服务器端和客户端编程,突出了其跨语言支持和在快速开发中的优势。
最低0.47元/天 解锁文章
2181

被折叠的 条评论
为什么被折叠?



