Grpc+protocol buffer使用学习

An introduction to gRPC and protocol buffers.

GRPC和协议缓冲区:

gRPC可以使用协议缓冲区作为它的接口定义语言(IDL)和它的底层消息交换格式。
个人理解:一种交互协议,主要实现数据的传输,体积小,更加便捷,高效,由google公司开发的proto协议缓冲区,支持多种语言开发和生成。

一, GRPC概述
在gRPC中,客户机应用程序可以直接调用另一台机器上的服务器应用程序上的方法,就好像它是本地对象一样,这使您更容易创建分布式应用程序和服务。
正如在许多RPC系统中一样(如springcloud自带的rpc交互),gRPC基于定义服务的思想,指定可以通过其参数和返回类型远程调用的方法。

在服务器端,服务器实现此接口并运行gRPC服务器来处理客户机调用。
在客户端,客户端有一个存根(在某些语言中仅称为客户端),它提供相同的方法。

gRPC客户端和服务器可以在各种环境中运行并相互通信——从谷歌中的服务器到您自己的桌面——并且可以用gRPC支持的任何语言编写。因此,例如,您可以轻松地用Java创建gRPC服务器,用Go、Python或Ruby创建客户机。此外,最新的谷歌api将拥有其接口的gRPC版本,使您可以轻松地在应用程序中构建谷歌功能。

二, GRPC效果实现
默认情况下,gRPC使用协议缓冲区,这是谷歌用于序列化结构化数据的成熟开源机制(尽管它也可以用于JSON等其他数据格式)。下面是它如何工作的一个快速介绍。如果您已经熟悉协议缓冲区,可以忽略。

使用协议缓冲区的第一步是定义要在原型文件中序列化的数据的结构:
用一个扩展名为.proto的普通文本文件。(一般的请求协议需要接口,请求体,该处使用文件)
协议缓冲区数据结构为消息,其中每个消息都是一个小的信息逻辑记录,其中包含一系列名为字段的名-值对。这里有一个简单的例子:

message Person {
  string name = 1;
  int32 id = 2;
  bool has_ponycopter = 3;
}

然后,一旦指定了数据结构,就可以使用协议缓冲区编译器protoc从原始定义中以首选语言生成数据访问类。它们为每个字段提供了简单的访问器,如name()和set_name(),以及将整个结构序列化/解析为原始字节的方法。因此,例如,如果您选择的语言是c++,在上述示例上运行编译器将生成一个名为Person的类。然后可以在应用程序中使用这个类来填充、序列化和检索Person协议缓冲区消息。
您在普通的proto文件中定义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 

你可能感兴趣的:(grpc,grpc,protocol)