Go Micro 使用 RPC

Go Micro 是一个插件化的 RPC 开发框架,用于使用 Go 语言快速构建微服务。

测试 Go Micro 服务可以使用 micro 工具,比如调用 hello RPC 服务:

$ micro call go.micro.srv.hello Hello.Call '{"name": "codebaoku"}'

输出结果:

{
"msg": "Hello codebaoku"
}

使用 Go Micro 客户端调用 hello 服务。以下为客户端程序 main.go:

package main

import (
	"context"
	"github.com/micro/go-micro/util/log"
	"github.com/micro/go-micro"

	hello "hello/proto/hello"
)

func main() {
	// Create a new service
	// 创建一个新的服务,服务名为 go.micro.srv.hello
	service := micro.NewService()

	// Parse command line flags
	// 通过命令行参数或者插件初始化服务
	service.Init()

	// Use the generated client stub
	// 通过客户端的桩创建 go.micro.srv.hello 服务客户端
	helloService := hello.NewHelloService("go.micro.srv.hello",service.Client())

	// Make request
	// 调用 RPC Call 方法
	response, err := helloService.Call(context.Background(), &hello.Request{
			Name: "codebaoku",
	})
	if err != nil {
		log.Error(err)
		return
	}

	// Print result
	// 打印 RPC Call 调用结果
	log.Info(response.Msg)
}

输出结果:

2022-01-13 03:31:59.797103 I | Hello codebaoku	

微服务在大多数场景下会部署为集群服务,为了使集群节点的访问能够均匀分布,就要求客户端使用负载均衡策略,能够均匀得访问每一台节点。Go Micro 提供了负载均衡插件 selector,为客户端提供了随机 Rand ...