gRPC的简单Go例子
来源:互联网 发布:视频旋转软件中文版 编辑:程序博客网 时间:2024/06/06 17:41
gRPC是一个高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的TCP链接次数、节省CPU使用、和电池寿命。
这次看到的例子来自: gRPC in 3 minutes (Go)
http://www.grpc.io/docs/installation/go.html
分别获得客户端和服务器端的代码如下:
$ go get -u github.com/grpc/grpc-common/go/greeter_client$ go get -u github.com/grpc/grpc-common/go/greeter_server
强大的IDL特征
gRPC使用ProtoBuf来定义服务,ProtoBuf是由Google开发的一种数据序列化协议(类似于XML、JSON、hessian)。ProtoBuf能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。
这里例子中IDL文件用的是这个:https://github.com/grpc/grpc-common/blob/master/protos/helloworld.proto
我们这里直接用已经基于这个proto文件生产的Go文件: https://github.com/grpc/grpc-common/blob/master/go/helloworld/helloworld.pb.go 这里我们没有用 protoc 工具。
由于墙的原因,我们一些依赖的包文件可以通过下面方式下载到:
在 github 可以找到源码,下载后复制到对应目录即可的:
google.golang.org/grpc 对应的代码地址在: https://github.com/grpc/grpc-go
google.golang.org/cloud/compute/metadata 对应的代码地址在: https://github.com/GoogleCloudPlatform/gcloud-golang
golang.org/x/oauth2 对应的代码地址在: https://github.com/golang/oauth2
golang.org/x/net/context 对应的代码地址在: https://github.com/golang/net
这些包的源码也可以通过 http://gopm.io/ 或者 http://golangtc.com/download/package 进行下载.
go get –a 这样的命令, –a 参数是go install的参数,不是go get的参数。
参考: https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/01.3.md
服务器端代码
注意我这里为了方便查看,增加每次请求打印一条信息:
客户端代码:
- gRPC的简单Go例子
- gRPC的Go语言使用例子
- go的grpc实现
- go语言使用grpc的步骤
- Go支持https协议的简单例子
- go-gprc简单例子
- 使用Go开发gRPC
- go版本gRPC入门
- gRPC-go 连接管理
- Android项目使用 protobuf和grpc简单例子
- Go(GoLang)配置Grpc+ProtoBuf所需的一些资源
- 一个简单的Delphi与go lang通讯的例子
- Go实现tls的通信的简单代码例子
- qt下使用grpc编程(2) —— 练手!自己改的一个简单小例子!1
- Grpc的一个简单的负载均衡类库
- grpc-简单的客户端服务端通信(1)
- 一个简单的例子阐述Go的对象复用思想
- grpc简易教程 go server+php client
- poj_1201_Intervals
- MT6582的KK版本,使用MTK_LCM_PHYSICAL_ROTATION旋转180度后,LK不会旋转
- swift ——~——~第三方网络请求封装
- 虚拟地址、线性地址和物理地址的转换
- 常用的cmd命令
- gRPC的简单Go例子
- 【51nod1060】【最复杂的数】【数论】【反素数】【搜索】【结论】
- HTML游戏开发实践之跨平台开发
- mui 开发知识积累-------打开页面的方式
- ndk环境搭建(HelloJNI开发)
- MAC笔记本 Safari,Chrome等浏览器无法打开网页
- tensorflow-000-Overview
- file_get_contents的post请求
- ffmpeg重采样中swr_convert和swr_get_out_samples的用法