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()
返回结果如下
文章图片
如果是
service := grpc.NewService()
文章图片
总结
因为go-micro也是基于Protobuf 来构建服务的数据结构,所以和grpc的集成几乎是无需变更的。
只需要将代码里NewService的对象由默认的micro的地方更换成grpc即可。