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)  api网关(1)  async(1)  await(1)  centos(4)  cli(1)  client-go(1)  debug(1)  docker(10) docker-compose(1)  dockerfile(1)  embed(1)  es6(1)  etcd(1)  etcdctl(1)  freemesh(2)  git(6)  go(5) go-zeus(5)  goland(2)  golang(7)  grafana(2)  grpc(5)  grpcurl(1)  homebrew(1)  homedir(1)  http(2) hugo(1)  java(2)  javascript(3)  job(1)  js(1)  json(1)  k8s(16)  k8s部署指南(1)  kubebuilder(1) kubectl(4)  kubernetes(1)  linux(2)  localecompare(1)  lombok(1)  metrics(2)  mock(1)  mysql(1)  npm(1) nsenter(1)  nvm(1)  pnpm(2)  pprof(1)  prettier(1)  prometheus(2)  protobuf3(1)  protoc(1)  qiankun(1) request(1)  scss(1)  servicemesh(1)  spring(1)  springcloud->freemesh(1)  ssh(2)  systemctl(1)  tcpdump(1)  typescript(2) vite(2)  vscode(2)  vue(8)  vue-admin(2)  vue3(1)  webssh(1)  xtermjs(1)  xxl-job(1)  yarn(1) zookeeper(1)  云原生(4)  云原生框架(1)  介绍(1)  单体架构->freemesh(1)  单元化(1)  博客(1)  压缩(1)  可观测(1) 后台管理系统(1)  命名规范(1)  多云多活(1)  如水网(1)  安全(1)  安装(1)  容器(2)  开发联调神器(1)  微前端(1) 微服务(2)  微服务架构->freemesh(1)  微服务框架(1)  快速开始(1)  控制面(1)  数据面(1)  文集(2)  服务发现(1)  服务网格(1) 流量泳道(1)  流量管理(1)  监控告警(1)  端口映射(1)  证书(1)  负载均衡(1)  配置(1)