先上代码
1 spring: 2 application: 3 name: gateway-app 4 cloud: 5 gateway: 6 discovery: 7 locator: 8 enabled: true 9 lower-case-service-id: true 10 routes: 11 - id: sharding-app 12 uri: lb://sharding-app 13 predicates: 14 - Path=/sharding/** 15 filters: 16 - StripPrefix=1 17 - AddRequestHeader=APP-NAME, sharding-app 18 - name: CircuitBreaker 19 args: 20 name: backendA 21 fallbackuri: forward:/breaker/fallback
uri可以是url比如http://,也可以是lb:// ,lb会去注册发现中心找对应的服务
predicates是一个路由断言:常见的就是
1.Path,我理解的就是一个字符串匹配,比如/sharding/** 会把请求路径是/sharding/开头的都匹配到,然后转发到sharding-app服务
这里有个坑,如果sharding改成和lb一样的,如- Path=/sharding-app/**,会导致下面的filters失效,这个害我搞了几天,起初一直以为是filters有问题
2.Header,报头名称和正则表达
filters是个过滤器
1.AddRequestHeader 会在转发时在包头中增加一组报头
2.StripPrefix会去掉对应的层数,1就是会去掉sharding这层。
CircuitBreaker是个熔断,日后再说