1. 安装(此处比较简单)

dep 包管理
配置环境变量
GOPATH/bin
GO/bin
protoc 下载并配置环境变量

2. xservice 安装

a. 预备(一些需要的依赖)
mkdir -p $GOPATH/src/golang.org/x
git clone https://github.com/golang/tools.git
go get github.com/gogo/protobuf/proto
go get github.com/golang/protobuf/protoc-gen-go/
go get github.com/pkg/errors
go install -v ./...
3. 简单代码
备注:项目使用的go package 为 github.com/rongfengliang/grpcapp
下面的目录在对应的子目录 a. 项目结构
├── grpcappdemo
├── grpcdemoclient
└── grpcdemoserver b. grpcappdemo/app.proto syntax = "proto3";
package donutloop.xservice.example.helloworld;
option go_package = "helloworld"; service HelloWorld {
rpc Hello(HelloReq) returns (HelloResp);
} message HelloReq {
string subject = 1;
} message HelloResp {
string text = 1;
} c. generate code
protoc -I . app.proto --xservice_out=. --go_out=. d. grpcdemoclient/main.go package main import (
"context"
"fmt"
"net/http" pb "github.com/rongfengliang/grpcapp/grpcappdemo"
) func main() {
client := pb.NewHelloWorldJSONClient("http://localhost:8080", &http.Client{})
for i := 1; i < 100000; i++ {
resp, err := client.Hello(context.Background(), &pb.HelloReq{Subject: "World"})
if err == nil {
fmt.Println(resp.Text) // prints "Hello World"
} e. server package main import (
"context"
"net/http" pb "github.com/rongfengliang/grpcapp/grpcappdemo"
) // HelloWorldServer HelloWorldServer
type HelloWorldServer struct{} // Hello Hello
func (s *HelloWorldServer) Hello(ctx context.Context, req *pb.HelloReq) (*pb.HelloResp, error) {
return &pb.HelloResp{Text: "Hello from rongfengliang " + req.Subject}, nil
} // Run the implementation in a local server
func main() {
handler := pb.NewHelloWorldServer(&HelloWorldServer{}, nil)
// You can use any mux you like - NewHelloWorldServer gives you an http.Handler.
mux := http.NewServeMux()
// The generated code includes a const, <ServiceName>PathPrefix, which
// can be used to mount your service on a mux.
mux.Handle(pb.HelloWorldPathPrefix, handler)
http.ListenAndServe(":8080", mux)
}
4. 运行
cd grpcdemoserver
go run main.go
cd grpcdemoclient
go run main.go
5. 扩展(docker 构建集成)
参考项目对应的Dockerfile && docker-compose.yml
https://github.com/rongfengliang/grpcapp
5. 参考资料
https://github.com/google/protobuf/releases/tag/v3.5.1
https://github.com/donutloop/xservice
https://github.com/rongfengliang/grpcapp
https://github.com/golang/dep
 
 
 
 

最新文章

  1. git clone google代码库
  2. js检测浏览器是否支持某属性
  3. GIT 如何删除某个本地的提交
  4. C语言杂谈(二)自增运算符++与间接访问运算符*的结合关系和应用模式
  5. GPL协议的MySQL数据库
  6. UC打通高德POI数据,用大数据描绘周边热点地图
  7. HDU1557权利选举
  8. R与数据分析旧笔记(一)基本数学函数的使用
  9. HDU 4544 湫湫系列故事――消灭兔子
  10. Xssf配合metaspolit使用
  11. STM32的LED驱动程序
  12. delphi 10.1 Berlin 中使用自带的 Base64 编码
  13. Java Swing 之JTable及其简单的用法
  14. 跟我一起写Makefile(转)
  15. python 冒泡、二分查找
  16. Python面向对象 三大特性 综合案例+1(视频里的作业)
  17. pl-svo代码解读
  18. 下载以及安装VMware Player Pro 64位
  19. 面向对象javascript编程
  20. 监听home键+模拟home键

热门文章

  1. vim 的寄存器
  2. 大小堆C++实现
  3. 原生javascript-Tab选项卡-面向对象
  4. CentOS6.6系统中安装配置Samba的教程
  5. JavaScript数字和字符串转换示例
  6. 【51nod-1315】合法整数集(数位)
  7. CF911B
  8. LaTex中插入大括号的多行公式
  9. 【dlbook】优化
  10. Java反射-初步入门