spring cloud gateway 路由uri怎么配多个?
routes: - id: 1 uri: http://10.10.11.42:8000/module/abc,http://10.10.11.42:8001/module/abc1 predicates: - Before=2020-01-01T00:00:00+08:00[Asia/Shanghai] - Path=/module/abc
类似于这样的一个路由, URI有多个实例的话, 这地儿怎么给它配置多个IP? 试了试上面的这种配置, 路由的时候只会路由第一个IP, 源码里发现只会取第一个, 咋玩?
public RouteDefinition(String text) {
int eqIdx = text.indexOf(61);
if (eqIdx <= 0) {
throw new ValidationException("Unable to parse RouteDefinition text '" + text + "', must be of the form name=value");
} else {
this.setId(text.substring(0, eqIdx));
String[] args = StringUtils.tokenizeToStringArray(text.substring(eqIdx + 1), ",");
this.setUri(URI.create(args[0]));
for(int i = 1; i < args.length; ++i) {
this.predicates.add(new PredicateDefinition(args[i]));
}
}
}
回答
开启动态路由,把这个网关也注册进注册中心里,然后抓取微服务提供者的集群即可
网关和服务不在同一个eureka,只能ip调用,然后服务有多个实例,如何配置多个uri哇
参考 https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.3.RELEASE/reference/html/#the-weight-route-predicate-factory
引用来自“听声”的评论
网关和服务不在同一个eureka,只能ip调用,然后服务有多个实例,如何配置多个uri哇
没法再uri中配置多个地址,换个思路 多个uri做权重 如下:
id: id1
uri: http://127.0.0.1:8888
predicates:
Weight=gruop1, 10
path=/pgw/**
id: id2
uri: http://127.0.0.1:9999
predicates:
Weight=group1, 10
path=/pgw/**