micro 使用grpc协议

版权声明:本文为博主原创文章,未经博主允许不得转载。 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即可。

猜你喜欢

转载自blog.csdn.net/u013705066/article/details/89188659