Grpc 手动模式的服务发现及轮询负载均衡demo

说明

对于单个服务来说,手动指定服务的 ip 端口就可以直接调用了,当服务启动多个实例的时候我们就无法具体指定了,一般服务发现与负载均衡是分不开的,在微服务架构下这些都是必须的组件。本 demo 只是手动情况下的服务发现,后续会实现与注册中心结合的自动服务发现。

准备工作

Mac 安装 protoc

下载 demo

1git clone https://github.com/grpc-example/resolver.git
2cd resolver
3go mod tidy

启动两个服务端

1go run server.go --port=50001
2go run server.go --port=50002

启动客户端

1go run client.go
2curl http://localhost:8081/hello

多次 curl 调用,可以看到 client 的请求轮询发送到服务端

说明

client 上启动了一个 http 服务,做为流量入口,然后通过 grpcClient 去请求 grpc 服务。

  • 这里使用了 grpc 的 manual(手动模式)包,自定义 ds 的 scheme
  • m.InitialState 时定义了两个服务的地址
  • m.UpdateState 10s 后更新成不存在的地址,所以后面请求就失败了

项目地址

https://github.com/grpc-example/resolver

发布日期:2023-05-18 20:02 字数:63 用时 1分钟