micro 使用grpc协议

gRPC
grpc 是谷歌开源的rpc框架,基于http2实现,并支持跨语言。
高性能,跨语言。go-micro和grpc无缝集成。
go-micro里默认使用的通讯协议是MUCP https://github.com/micro/protocol
如果想要在go-micro里使用grpc协议,可以使用官方的grpc插件go-grpc
https://github.com/micro/go-grpc/blob/master/README_cn.md
在go-micro里使用grpc协议
我们接着上一节的例子来做。
1.修改main.go文件

import里增加 github.com/micro/go-grpc 的包依赖 修改micro.NewService为grpc.NewService

2.创建go-micro的客户端
//在项目根目录创建cli目录。并在cli目录下创建main.go,将以下代码拷贝进去 package mainimport ( "fmt" "github.com/micro/go-grpc" hello "greeter/proto/example" "context" )func main(){ service := grpc.NewService() service.Init() cl := hello.NewExampleService("go.micro.srv.greeter" , service.Client()) rsp, err := cl.Call(context.TODO() , &hello.Request{Name:"mr qin"}) if err != nil{ fmt.Println(err) return } fmt.Println(rsp.Msg) }

3.启动服务端
go run main.go
4.启动客户端
go run cli/main.go
测试
【micro 使用grpc协议】如果我的客户端代码里使用的是service := micro.NewService()
返回结果如下
micro 使用grpc协议
文章图片

如果是service := grpc.NewService()
micro 使用grpc协议
文章图片

总结
因为go-micro也是基于Protobuf 来构建服务的数据结构,所以和grpc的集成几乎是无需变更的。
只需要将代码里NewService的对象由默认的micro的地方更换成grpc即可。

    推荐阅读