grpc概述

overview

RPC(Remote Procedure Call), grpc中, 客户端可以像使用本地对象一样, 直接调用其他机器上面的服务端应用程序方法, 能够很容易的构建分布式的应用程序和服务, grpc基于服务, 指定能够调用远程方法的参数和返回值, 在服务端, 服务实现接口并运行grpc服务去处理客户端调用, 在客户端, 客户端有一个stub(客户机), 提供和服务端相同的方法

调用图

grpc客户端和服务端可以在各种环境中运行并支持各种语言, 举个例子, 你可以使用服务端语言为Java, 客户端语言为python

Protocol buffers

默认的, grpc使用Protocol buffers, Google成熟的开源序列结构化数据方式

第一步是在proto文件中定义你想序列化的结构化数据, 这是一个使用*proto*作为扩展名的文本文件, Protocol buffers数据结构为message;每一个message是一个小的包含一系列name-value组的可调用字段的逻辑记录,举个例子

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

接下来, 你需要指定你的数据结构, 你可以通过你的proto定义在你喜欢的语言中使用协议缓冲区编译proto文件去生成数据权限接口, 他提供了一个简单的存取访问, 例如 name(), set_name(), 以及一个从原始数据/序列化数据进行序列化/反序列化的方法, 你可以在你的应用中填充生成的class

你可以在普通文件中定义rpc服务, 并指定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使用protoc指定grpc插件从你的proto文件中去生成代码, 你可以生成客户端和服务端代码, 他提供常用的protocol buffer代码去填充, 系列化, 返回消息类型


文章作者: ajin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 ajin !
 上一篇
Protocol buffers Protocol buffers
什么是protocol buffers?protocol buffers是一个灵活的, 高性能的, 自动化的数据结构序列化机制, 就像xml, 但是更小, 更快, 更简单, 你可以定义你想要的数据结构, 然后使用特定的代码生成工具生成代码去
2020-04-03
下一篇 
装饰器学习 装饰器学习
写在开头, 昨天参加了一场面试, 可能是疏于使用, 面试官的一道装饰器题目没有写出来, 因此这次我们来翻译一篇python装饰器的文章并结合具体题目来学习装饰器, 原文链接 stackouverflow 题目 装饰器基础### pytho
2020-03-20
  目录