grpc-go的hello_world
1. gRPC简介
gRPC是一个高性能、开源和通用的RPC框架,面向移动和HTTP/2设计。目前提供C、Java和Go语言版本,分别是grpc、grpc-java、grpc-go。gRPC基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。gRPC由google开发,是一款语言中立、平台中立、开源的远程过程调用系统。
2. gRPC是什么
在gRPC里客户端应用可以像调用本地对象一样直接调用另一台不同机器上服务端应用的方法,使得你能够更容易地创建分布式应用和服务。与许多RPC系统类似,gRPC也是基于这样的理念:
定义一个服务,指定其能够被远程调用的方法(包括参数和返回类型)。
在服务端实现这个接口,并运行一个gRPC服务器来处理客户端调用。
在客户端拥有一个存根能够像服务端一样的方法。
gRPC客户端和服务端可以在多种环境中运行和交互,从google内部的服务器到你的笔记本,并且可以使用任何gRPC支持的语言编写。
所以你可以很容易滴用Java创建一个gRPC服务端,用go、python、ruby来创建客户端。
此外,google最新api将有gRPC版本的接口,使你很容易地将Google的功能集成到你的应用中。
3. gRPC-go之环境搭建
- 事前要求:Go版本至少为1.6
- 安装gRPC:go get -u google.golang.org/grpc
- 安装Protocol Buffers v3:用于生产gRPC服务代码的protoc编译器,安装过程如下:
- 打开 https://github.com/google/protobuf/releases ,可下载最新版本的源码然后编译安装(目前最新:protobuf-cpp-3.6.1.zip)
- 解压已下载的文件,依次执行:./configure ==> make ==> make install
- 安装go的protoc插件:go get -u github.com/golang/protobuf/protoc-gen-go
- 下载Demo程序:安装gRPC的包中就包含了Demo程序了,按以下步骤执行Demo:
- cd $GOPATH/src/google.golang.org/grpc/examples/helloworld/helloworld
- go run greeter_server/main.go
- go run greeter_client/main.go
- 在客户端可输出:Greeting: Hello world
- 可基于 文档 自行更新该例子,可输出如下:
4. 小结
虽然之前没使用过gRPC,但是经过一小时的学习与实践,加之之前多年的开发经验(C、C++、Go),其实学一个新的知识点并不难。接下来可在实践中多体验及深入了解gRPC。
5. 参考资料
- https://grpc.io/docs/quickstart/go.html#install-protocol-buffers-v3
- https://github.com/Jergoo/go-grpc-example