gRPC golang开发指南

主要基于官网介绍的文档总结而来。

需要先了解 protocol buffers

为什么使用gRPC

通过gPRC,我们可以仅仅定义一次service 到.proto文件中,然后使用gRPC支持的任何开发语言开发客户端或服务器。

样例代码和环境的建立

首先要确保golang开发环境的正确配置,go1.5+。

$ go get -u -v  google.golang.org/grpc

本人在测试中遇到报错,主要原因在于样例需要

    "golang.org/x/net"
    "golang.org/x/text"

的支持,本人的解决方法如下

 $GOPATH/src/golang.org/x/

目录下,如果golang.org/x/ 不存在则手动创建一个。
然后

git clone https://github.com/golang/net.git
git clone https://github.com/golang/text.git

样例测试

$ cd $GOPATH/src/google.golang.org/grpc/examples/route_guide
$ go run server/server.go
$ go run client/client.go

下面对样例的代码进行分析

服务定义

gRPC使用 protocol buffers定义服务。
要定义服务,需要在.proto文件中做service定义如下:

service RouteGuide {
   ...
}

然后可以在servie中定义rpc方法,指定对应的request和response类型。gPRC允许开发者定义4种service方法,这4种方法在样例RouteGuide 中都有用到。

  • 最简单的RPC方法,客户端通过调用该方法发送request到服务端,等待服务器的response,类似正常的函数调用。
// Obtains the feature at a given position.
rpc GetFeature(Point) returns (Feature) {}
  • 服务端单边stream的RPC( server-side streaming RPC):客户端调用该方法到服务端,服务器返回一个stream,客户端从这个stream中读取数据直到没有数据可读。从样例代码中可以看到该方法的主要特点是在response类型前加stream。
// Obtains the Features available within the given Rectangle.  Results are
// streamed rather than returned at once (e.g. in a response message with a
// repeated field), as the rectangle may cover a large area and contain a
// huge number of features.
rpc ListF
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值