gRPC 简介
标签(空格分隔): go,grpc
概述
在 gRPC 中,客户端应用程序可以直接调用不同计算机上的服务器应用程序上的方法,就像它是本地对象一样,从而使您更轻松地创建分布式应用程序和服务。与许多 RPC 系统一样,gRPC 基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。在服务器端,服务器实现此接口并运行 gRPC 服务器来处理客户端调用。在客户端,客户端有一个存根(在某些语言中称为客户端),它提供与服务器相同的方法
gRPC 客户端和服务器可以在各种环境中运行和通信 - 从 Google 内部的服务器到您自己的桌面 - 并且可以使用 gRPC 支持的任何语言编写。因此,例如,您可以使用 Go、Python 或 Ruby 中的客户端轻松地在 Java 中创建 gRPC 服务器。此外,最新的 Google API 将具有其接口的 gRPC 版本,让您可以轻松地将 Google 功能构建到您的应用程序中。
使用协议缓冲区 【Protocol Buffers】
默认情况下,gRPC 使用 Protocol Buffers,这是 Google 成熟的开源机制,用于序列化结构化数据(尽管它可以与其他数据格式(如 JSON)一起使用)。以下是其工作原理的快速介绍。如果您已经熟悉协议缓冲区,请随时跳到下一部分。
使用协议缓冲区的第一步是为要在 proto 文件中序列化的数据定义结构:这是一个扩展名为 .proto 的普通文本文件。协议缓冲区数据结构化为消息,其中每条消息都是包含一系列称为字段的名称-值对的信息的小型逻辑记录。这是一个简单的例子
message Person {
string name = 1;
int32 id = 2;
bool has_ponycopter = 3;
}
然后,指定数据结构后,使用协议缓冲区编译器 protoc 从原型定义中以首选语言生成数据访问类。它们为每个字段提供了简单的访问器,如 name() 和 set_name(),以及将整个结构序列化/解析为/从原始字节解析的方法。因此,例如,如果您选择的语言是C++,则在上面的示例中运行编译器将生成一个名为 Person 的类。然后,可以在应用程序中使用此类来填充、序列化和检索 Person 协议缓冲区消息
在普通原型文件中定义 gRPC 服务,并将 RPC 方法参数和返回类型指定为协议缓冲区消息
// The greeter service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
gRPC 使用带有特殊 gRPC 插件的 protoc 从原型文件生成代码:您将获得生成的 gRPC 客户端和服务器代码,以及用于填充、序列化和检索消息类型的常规协议缓冲区代码。若要了解有关协议缓冲区的详细信息,包括如何使用所选语言的 gRPC 插件安装 protoc,请参阅协议缓冲区文档
标签:gRPC,简介,缓冲区,服务器,message,序列化,客户端 From: https://www.cnblogs.com/yanweifeng/p/17462694.html