负载均衡

引入依赖

修改应用根目录下的pom.xml,为 polaris-java 添加 dependencyManagement:

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>com.tencent.polaris</groupId>
  5. <artifactId>polaris-dependencies</artifactId>
  6. <version>${version}</version>
  7. <type>pom</type>
  8. <scope>import</scope>
  9. </dependency>
  10. </dependencies>
  11. </dependencyManagement>

然后只需要在 标签中在添加 polaris-all 即可

  1. <dependencies>
  2. <dependency>
  3. <groupId>com.tencent.polaris</groupId>
  4. <artifactId>polaris-all</artifactId>
  5. </dependency>
  6. </dependencies>

初始化 polaris.yaml

你需要在项目的 main/resources 下创建一个 polaris.yaml 文件用于初始化 polaris-java SDK。polaris.yaml配置详细

服务注册

SDK实例构建

当初始化好 polaris.yaml 文件之后,你可以直接 import com.tencent.polaris.factory.api.RouterAPIFactory, 使用 RouterAPIFactory 中的方法进行构造一个 RouterAPI SDK 实例

  1. import com.tencent.polaris.factory.api.RouterAPIFactory;
  2. public static void main(String[] args) throws Exception {
  3. RouterAPI routerAPI = RouterAPIFactory.createRouterAPI();
  4. }

负载均衡

  1. public class Criteria {
  2. // 一致性hash的key
  3. private String hashKey;
  4. }
  5. ProcessLoadBalanceRequest request = new ProcessLoadBalanceRequest();
  6. // 设置需要参与负载均衡的服务实例
  7. request.setDstInstances(ServiceInstances dstInstances);
  8. // 设置负载均衡策略
  9. // 当前支持的负载均衡策略如下
  10. // - 权重随机负载均衡: weightedRandom
  11. // - 权重一致性负载均衡: ringHash
  12. request.setLbPolicy(String lbPolicy);
  13. // 如果需要走 Hash 负载均衡的话,需要设置
  14. Criteria criteria = new Criteria();
  15. request.setCriteria(criteria);

执行服务负载均衡

你在使用 ConsumerAPI.getAllInstances 或者 ConsumerAPI.getInstances 获取到服务实例列表后,完成 ProcessLoadBalanceRequest 初始化,只需要调用 RouterAPI.processLoadBalance 方法即可完成负载均衡

  1. ProcessLoadBalanceResponse resp = routerAPI.processLoadBalance(request)

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