博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下golang gRPC配置详解
阅读量:5298 次
发布时间:2019-06-14

本文共 2144 字,大约阅读时间需要 7 分钟。

1.安装gRPC运行环境

go get google.golang.org/grpc

这里的grpc通俗来说就说用在代码里的一个类库,后面的例子可以看到。比较坑的是这里可能需要FQ.....

2.安装protoc

这里需要安装proto buffer的编译器。首先在下载,如c++版本的,解压后进行编译:

./configure         make && make install

3.安装protoc-gen-go

go get -a github.com/golang/protobuf/protoc-gen-go

4.编写proto文件

基于protobuf的跨语言的特性,不难想到它自己实现了一套数据类型。这里有一个简单的例子

//testHello.protosyntax = "proto3";package protos;// The service definition.service Devops {    // 定义服务    rpc SayHello (HelloRequest) returns (Response) {}}// The request message containing the user's name.message HelloRequest {    string name = 1;}// The response messagemessage HelloReply {    string message = 1;}message Response {    enum StatusCode {        UNDEFINED = 0;        SUCCESS = 200;        FAILURE = 500;    }    StatusCode status = 1;    HelloReply msg = 2;}

然后在终端自动生成pb.go:

protoc --go_out=plugins=grpc:. testHello.proto

5.编写服务端

package mainconst (    port = ":50051")type myserver struct{}//这里myserver实现了SayHellofunc (s *myserver) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.Response, error) {    fmt.Print("receive " + in.Name)    return &pb.Response{        Status:pb.Response_SUCCESS,        Msg:&pb.HelloReply{Message:"receive " + in.Name},    }, nil}func main() {    //绑定端口    lis, err := net.Listen("tcp", port)    if err != nil{        log.Fatal("fail to listen")    }    s := grpc.NewServer()    pb.RegisterDevopsServer(s, &myserver{})    s.Serve(lis)}

6.编写客户端

package mainconst (    address = "localhost:50051")func main()  {   //grpc.WithInsecure()指定后才不会报错    conn, err := grpc.Dial(address, grpc.WithInsecure())    if err != nil{        log.Fatal("error....", err)    }    c := pb.NewDevopsClient(conn)    res, _ := c.SayHello(context.Background(), &pb.HelloRequest{"eeee"})    fmt.Print(res)}

WithInsecure returns a DialOption which disables transport security for this ClientConn.

Note that transport security is required unless WithInsecure is set.

WithInsecure返回一个DialOption,它在传输过程中不保证安全。除非设置WithInsecure,否则grpc.Dial必须指定安全选项。

参考:

1.https://github.com/google/protobuf/releases

2.http://www.cnblogs.com/YaoDD/p/5504881.html

转载于:https://www.cnblogs.com/xiaodeshan/p/7794874.html

你可能感兴趣的文章
返回结果数据帮助类
查看>>
SVN部署和使用
查看>>
Build Tools
查看>>
Mysql的基础使用之MariaDB安装
查看>>
单链表操作B 分类: 链表 2015-06-0...
查看>>
周赛-Heros and Swords 分类: 比赛 ...
查看>>
Error:No suitable device found: no device found for connection "System eth0"
查看>>
Go beego框架使用笔记(一)
查看>>
jQuery各种效果举例
查看>>
Day47:HTML(简介及常用标签)
查看>>
Redis.md
查看>>
软件工程课堂小测01
查看>>
大道至简阅读笔记02
查看>>
自定义日志工具LogUtil
查看>>
Linux下安装PHP遇到的各种问题
查看>>
transition
查看>>
shell脚本自动备份数据库(精简版)
查看>>
充分发挥FPGA优势 Altera首推新颖OpenCL工具
查看>>
ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序
查看>>
ORACLE手工删除数据库
查看>>