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 ...