版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013705066/article/details/89188659
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 main
import (
"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
测试
如果我的客户端代码里使用的是service := micro.NewService()
返回结果如下
如果是service := grpc.NewService()
总结
因为go-micro也是基于Protobuf 来构建服务的数据结构,所以和grpc的集成几乎是无需变更的。
只需要将代码里NewService的对象由默认的micro的地方更换成grpc即可。