Grpc 手动模式的服务发现及轮询负载均衡demo
说明
对于单个服务来说,手动指定服务的 ip 端口就可以直接调用了,当服务启动多个实例的时候我们就无法具体指定了,一般服务发现与负载均衡是分不开的,在微服务架构下这些都是必须的组件。本 demo 只是手动情况下的服务发现,后续会实现与注册中心结合的自动服务发现。
准备工作
下载 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 用时
相关文章
标签云
alpine(1) centos(3) debug(1) docker(7) docker-compose(1) freemesh(1) git(6) go(3) go-zeus(1) goland(2) golang(6) grafana(2) grpc(3) homebrew(1) homedir(1) http(1) hugo(1) java(1) job(1) json(1) k8s(9) kubebuilder(1) kubectl(4) metrics(2) mock(1) mysql(1) npm(1) nsenter(1) pnpm(1) pprof(1) prettier(1) prometheus(1) protoc(1) request(1) scss(1) servicemesh(1) spring(1) ssh(2) tcpdump(1) typescript(1) vite(2) vscode(1) vue(6) vue-admin(2) vue3(1) webssh(1) xtermjs(1) xxl-job(1) yarn(1) 云原生(4) 介绍(1) 博客(1) 后台管理系统(1) 如水网(1) 容器(2) 开发联调神器(1) 微服务(2) 微服务框架(1) 文集(2) 服务发现(1) 服务网格(1) 监控告警(1) 端口映射(1) 证书(1) 负载均衡(1)