什么是gRPC

gRPC 已经成为实现需要大规模快速运行的分布式软件系统的一项重要技术。简而言之,gRPC 是一个 API 框架,它允许一个程序在互联网上的一个位置传递数据到另一个位置的另一个程序中的独特函数进行处理。

其他 API 框架(如 REST)通常使用基于文本的格式(如 JSON 或 XML)在客户机和服务器之间传递数据,而在 gRPC 下,数据是以二进制格式在客户机和服务器端目标函数之间传递的。

有效载荷具有二进制特性,这也是它比其他方法更快的名声的来源之一。使用 gRPC 的程序可以以纳秒为单位执行,而不是使用基于文本的数据时通常使用的毫秒。

数据共享是起点。公司需要将数据从一台计算机转移到另一台计算机,以便以每个系统特有的方式处理信息。

RPC 背后的基本思想是,在一台机器上运行的过程(也称为函数)可以由网络上不同位置的其他机器共享。RPC 的好处是减少了系统冗余。当需要升级过程时,所有更改都发生在单个位置




grpc 学习 grpc原理_编程语言


为什么要gRPC

  • HTMLXML 一样是基于文本的。这些都是庞大的格式,因为它们需要开始和结束标签
  • JSON 是另一种流行的基于文本的数据格式,它甚至比 XML 更简洁,
  • gRPC 中,所有数据都以二进制格式传输。信息被序列化为一个紧凑的位集合,然后通过网络发送。然后,当位到达目标目的地时,它们被反序列化为文本。在 gRPC 中使用的二进制格式是协议缓冲。使用协议缓冲可以使数据快速传输,但是它也带来了成本,而这些成本是由于描述数据带来的开销而产生的。用空间换时间

gRPC 背后的基本概念。请注意,客户机和服务器通过 HTTP/2进行通信,信息可以作为单个请求/响应事件或连续流进行交换。


grpc 学习 grpc原理_编程语言_02


在 gRPC 模式中, .proto文件包含由服务器发布的函数签名。根据已发布的函数声明,客户机将使用此信息将消息传递给特定函数。定义的函数声明的示例如下 .proto文件中。
格式如下:

rpc Add (Request) returns (Response) {}
  • rpc 是一个保留的协议缓冲关键字,表示该函数是一个远程过程调用
  • Add 是函数的名称
  • (Request) 表示该函数有一个自定义消息类型的参数 Request
  • returns 是一个保留的协议缓冲关键字,表示函数返回类型的前缀
  • (Response)表示该函数将返回一个自定义消息类型,Response

关于 protobuf可以参考

关于协议缓冲编码的深入解释

需要了解哪些知识点

  • 如何使用协议缓冲文件将信息序列化和反序列化为二进制数据
  • 还需要熟悉处理流。流是gRPC的一个强大特性

readmore

https://developers.google.com/protocol-buffers/docs/reference/proto3-spechttps://developers.google.com/protocol-buffers/docs/encodinghttps://www.programmableweb.com/news/what-grpc-api-and-how-does-it-work/analysis/2020/10/08