grpc 概述
gRPC 可以将协议缓冲区用作其接口定义语言和底层消息交换格式。在 gRPC 中,客户端应用程序可以直接调用不同机器上的服务器应用程序上的方法,就像它是本地对象一样,使得创建分布式应用程序和服务更加容易。与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以远程调用的方法及其参数和返回类型。在服务端,服务端实现这个接口并运行一个 gRPC 服务器来处理客户端调用。在客户端,客户端有一个存根(在某些语言中仅称为客户端),它提供与服务器相同的方法。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cOlG5hrY-1651396101220)(.grpc_images/07ce4396.png)]
gRPC 客户端和服务器可以在各种环境中运行和相互通信,并且可以用任何 gRPC 支持的语言编写,如 C++、Go、Python 、Ruby 、Java等。此外,最新的 Google API 中提供了接口的 gRPC 版本,可以让开发者轻松地将 Google 功能构建到自己的应用程序中。
使用协议缓冲区
默认情况下,gRPC 使用协议缓冲区作为其数据结构序列化的格式。使用协议缓冲区的第一步是在 proto 数据原型定义:这是一个带有.proto扩展名的普通文本文件。协议缓冲区数据被构造为 message,其中每条消息都是一个小的信息逻辑记录,定义格式为:属性-类型-字段名-序号。proto 格式的数据结构定义好后,gRPC 使用protoc特殊的 gRPC 插件从您的 proto 文件生成 gRPC 客户端和服务器代码, 以及用于填充、序列化和检索消息类型的常规协议缓冲区代码。与许多 RPC 系统一样,