Solon v2.9.3

使用分布式发现服务 - 负载均衡策略

</> markdown

CloudLoadStrategy,分布式负载均衡策略接口。可以,为负载均衡(或服务发现)提供不同的策略(比如作灰度发布)

1、内置的策略实现

策略备注
CloudLoadStrategyDefault默认(轮询策略)
CloudLoadStrategyIpHashIp哈希策略

2、配置策略

  • 手动配置方式
CloudLoadBalance.setStrategy(new CloudLoadStrategyIpHash())
  • 注解配置方式
@Configuration
public class DemoConfig {
    @Bean
    public CloudLoadStrategy demo() {
        return CloudLoadStrategyIpHash();
    }
}

3、定制策略实现(示例)

注册时,使用增强应用元信息:

solon.app:
    name: demo-app
    meta:
        ver: "v1"

发现时,使用负载策略进行过滤:

@Component
public class CloudLoadStrategyImpl implements CloudLoadStrategy {
    private static CloudLoadStrategy def = new CloudLoadStrategyDefault();

    @Override
    public String getServer(Discovery discovery) {
        for (Instance i1 : discovery.cluster()) {
            //也可以通过 tags 过滤;
            //结合 ctx = Context.current(),可根据请求信息进行过滤
            if ("v1".equals(i1.metaGet("ver"))) { 
                return i1.uri();
            }
        }

        return def.getServer(discovery);
    }
}