A9c778c20e9cb6c04fc407616b913376
go微服务之rpc:hprose前奏protobuf操作

HPROSE 是 High Performance Remote Object Service Engine 的缩写,翻译成中文就是“高性能远程对象服务引擎”。它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功能强大。你只需要稍许的时间去学习,就能用它轻松构建跨语言跨平台的分布式应用系统了。Hprose 支持众多流行的编程语言,通过 Hprose,你就可以在这些语言之间方便高效的实现互通了。
跟Json相比protobuf性能更高,更加规范编解码速度快,数据体积小使用统一的规范,不用再担心大小写不同导致解析失败等蛋疼的问题了。hprose集成protobuf,作为服务端和客户端通信协议。

1、安装protoc

首先去https://github.com/protocolbuffers/protobuf/releases 上下载protobuf的编译器protoc,windows上可以直接下到exe文件(linux则需要编译),最后将下载好的可执行文件拷贝到$GOPATH的bin目录下( $GOPATH/bin目录最好添加到系统环境变量里)

linux:

wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz
tar zxvf protobuf-2.6.1.tar.gz
cd protobuf-2.6.1
./configure
make
make install
protoc   -h

2、安装protoc-gen-go

设置好gopath,获取 goprotobuf 提供的 Protobuf 编译器插件 protoc-gen-go(被放置于$GOPATH/bin 下,$GOPATH/bin 应该被加入 PATH 环境变量,以便 protoc 能够找到 protoc-gen-go),此插件被 protoc 使用,用于编译 .proto 文件为 Golang 源文件,通过此源文件可以使用定义在 .proto 文件中的消息。

export GOPATH="/Users/clvaluedq/workspace/go:/Users/longmore/go"//换成自己的
go get github.com/golang/protobuf/protoc-gen-go
cd github.com/golang/protobuf/protoc-gen-go
go build
go install
vi /etc/profile 将$GOPATH/bin 加入环境变量
source profile

临时加入 方案:

export PATH="$PATH:$GOPATH/bin" 

3、安装 github.com/golang/protobuf/proto

获取 goprotobuf 提供的支持库,包含诸如编码(marshaling)、解码(unmarshaling)等功能

go get github.com/golang/protobuf/proto
cd github.com/golang/protobuf/proto
go build
go install

4、生成go文件

建立我们的proto文件, token.proto
```
syntax = "proto3";
package protos;
option php_generic_services = true;
option php_namespace = "Passport\\Tokens";
//option php_metadata_namespace = "Passport\\Tokens";
enum ErrorCode{
Success = 0;
Invaild_Params = 40000; //参数错误
System_Fail = 50000; // 系统错误
User_Block_Status = 40001; // 用户被禁用
Token_Error = 40002; //token 错误
UserToken_Not_Found = 40003;// token 不存在
}
message CreateTokenRequest{
string MemberId = 1;
string DeviceCode = 2;
string Tk = 3;
string Version = 4;
string Os = 5;
}

top Created with Sketch.