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