gPRC入门指南

本文是 https://grpc.io/docs/what-is-grpc/introduction/ 的摘译

一个 gRPC 和 protocol buffers 的入门指南

概述

gPRC功能是让你能像调用本地方法一样,调用定义在服务器上的方法。这对分布式服务很有用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DkP6Vwq9-1618537019688)(https://cdnimg-1254066503.cos.ap-beijing.myqcloud.com/fengrin.me/post/introduction-to-grpc1.png)]

gRPC 的客户端和服务端可在任何环境下运行,例如 Google 网站和你自己的笔记本电脑。他们可以用任何 gRPC 支持的语言实现(gRPC 支持 Java, Python, GO 等语言)。而且客户端的语言可以和服务端不一致,比如客户端可以用 Java 写,服务端则可以用 GO 写。

而且 Google 自身有很多对外的 API 开放,这些 API 有 gRPC 版本,你可以很容易集成到你自己的程序中。

Protocol Buffers

gPRC默认使用 Protocol Buffers, 这是 Google 的开源的成熟的序列化结构数据的机制(类似JSON)。

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

上面是一个普通的 .proto 文件。Protocol buffer 数据用 messages 的形式组织。每个 message 都是一个小的逻辑记录,包含了一系列的键值组合(这里称之为"fields"(字段))。

然后,一旦定义了数据结构,你可以用 protoc 编译器生成 proto 定义的调用类。比如 name(), set_name(),还有一些对 proto 结构进行序列化或 parse 以与原始字节进行转换。例如,如果你用 C++,把上面 Proto 文件编译成一个 Person 类。然后你可以用这个类来填充、序列化、获取 protocol buffer 的 Person 消息。

gRPC 服务是定义在普通的 proto 文件中,包含 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 代码一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值