负载均衡

引入依赖

  1. go get github.com/polarismesh/polaris-go@latest

初始化 polaris.yaml

你需要在项目的根路径下创建一个 polaris.yaml 文件用于初始化 polaris-go SDK。polaris.yaml配置详细

SDK实例构建

  1. router, err := polaris.NewRouterAPI()

负载均衡请求

  1. // ProcessRoutersRequest 执行负载均衡请求结构体
  2. type ProcessLoadBalanceRequest struct {
  3. // 必选参数,待执行负载均衡的实例列表
  4. // 1. InstancesResponse, returned from ConsumerAPI.GetAllInstances.
  5. // 2. DefaultServiceInstances, for user to construct manually.
  6. DstInstances ServiceInstances
  7. // 可选参数,负载均衡策略
  8. // 当前支持的负载均衡策略如下
  9. // - 权重随机: weightedRandom
  10. // - 一致性hash环: ringHash
  11. // - maglev hash: maglev
  12. // - 普通hash: hash
  13. LbPolicy string
  14. // 可选参数,对于有状态的负载均衡方式,用户可以设置用于 hash 计算的 Key
  15. HashKey []byte
  16. }

执行负载均衡

你在你在使用 ConsumerAPI.getAllInstances 或者 ConsumerAPI.getInstances 获取到服务实例列表后,完成 ProcessLoadBalanceRequest 初始化,只需要调用 RouterAPI.ProcessLoadBalance 执行服务路由即可

  1. resp, err := router.ProcessLoadBalance(loadbalanceRequest)
  2. instance := resp.GetInstance()

如何基于 polaris-go 客户端完成一个负载均衡的程序