使用分布式发现服务 - 负载均衡策略
CloudLoadStrategy,分布式负载均衡策略接口。可以,为负载均衡(或服务发现)提供不同的策略(比如作灰度发布)
1、内置的策略实现
策略 | 备注 |
---|---|
CloudLoadStrategyDefault | 默认(轮询策略) |
CloudLoadStrategyIpHash | Ip哈希策略 |
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);
}
}