参考文章
注意本例使用的代码基于62.gokit-lorem-consul-client, 使用了其中的C/S架构, 但是没有使用consul. 因为本例所要展现的不是服务发现, 而是负载均衡机制.
由于单独的负载均衡基本上没有实例意义(你可以选择使用kong/nginx来做), 对实际场景应该没有太大用处, 所以这里只是加深对go-kit的理解, 仅供参考.
本文最关键操作就是如果通过已知服务地址构造endpointer
对象 - gokit的sd.FixedEndpointer
.
本例列举出了两种方法, 都有效.
首先启动两个 server 服务, 通过--port
选项指定不同的端口.
server 1
$ go run cmd/server/main.go --port 8080
Starting server
server 2
$ go run cmd/server/main.go --port 8081
Starting server
然后启动 client 服务.
go run cmd/client/main.go --port 8090 --serveraddr localhost:8080,localhost:8081
使用docker-compose启动后, 访问客户端, 可得到如下输出.
$ curl -XPOST -d '{"requestType":"sentence", "min":5, "max":20}' http://localhost:8090/sd-lorem
{"message":"Re cavernis tot ipsa qui at os me indicabo, te tuetur audi pati sim da ita."}
而在服务端, 两个节点将分别处理请求, 可见负载均衡器有效.