负载均衡
引入依赖
go get github.com/polarismesh/polaris-go@latest
初始化 polaris.yaml
你需要在项目的根路径下创建一个 polaris.yaml 文件用于初始化 polaris-go SDK。polaris.yaml配置详细
SDK实例构建
router, err := polaris.NewRouterAPI()
负载均衡请求
// ProcessRoutersRequest 执行负载均衡请求结构体
type ProcessLoadBalanceRequest struct {
// 必选参数,待执行负载均衡的实例列表
// 1. InstancesResponse, returned from ConsumerAPI.GetAllInstances.
// 2. DefaultServiceInstances, for user to construct manually.
DstInstances ServiceInstances
// 可选参数,负载均衡策略
// 当前支持的负载均衡策略如下
// - 权重随机: weightedRandom
// - 一致性hash环: ringHash
// - maglev hash: maglev
// - 普通hash: hash
LbPolicy string
// 可选参数,对于有状态的负载均衡方式,用户可以设置用于 hash 计算的 Key
HashKey []byte
}
执行负载均衡
你在你在使用 ConsumerAPI.getAllInstances 或者 ConsumerAPI.getInstances 获取到服务实例列表后,完成 ProcessLoadBalanceRequest 初始化,只需要调用 RouterAPI.ProcessLoadBalance 执行服务路由即可
resp, err := router.ProcessLoadBalance(loadbalanceRequest)
instance := resp.GetInstance()