Spring Cloud 系列之 Gateway 服务网关(二)
本篇文章为系列文章,未读第一集的同学请猛戳这里:Spring Cloud 系列之 Gateway 服务网关(一)
本篇文章讲解 Gateway 网关的多种路由规则、动态路由规则(配合服务发现的路由规则)。
1|0路由规则
点击链接观看:路由规则视频(获取更多请关注公众号「哈喽沃德先生」)
Spring Cloud Gateway 创建 Route 对象时, 使用 RoutePredicateFactory 创建 Predicate 对象,Predicate 对象可以赋值给 Route。
- Spring Cloud Gateway 包含许多内置的 Route Predicate Factories。
- 所有这些断言都匹配 HTTP 请求的不同属性。
- 多个 Route Predicate Factories 可以通过逻辑与(and)结合起来一起使用。
路由断言工厂 RoutePredicateFactory 包含的主要实现类如图所示,包括 Datetime、 请求的远端地址、 路由权重、 请求头、 Host 地址、 请求方法、 请求路径和请求参数等类型的路由断言。
接下来我们举例说明其中一部分如何使用,其余等大家工作中需要应用时再查询资料学习或者咨询我也可以。
1|1Path
- 请求
http://localhost:9000/product/1
将会路由至http://localhost:7070/product/1
1|2Query
Query=token
:比如,http://localhost:9000/product/1?token=123Query=token, abc.
:比如,http://localhost:9000/product/1?token=abc1
1|3Method
1|4Datetime
1|5RemoteAddr
RemoteAddr=192.168.10.1/0
:比如,http://192.168.10.1:9000/product/1
2|0动态路由(服务发现的路由规则)
动态路由其实就是面向服务的路由,Spring Cloud Gateway 支持与 Eureka 整合开发,根据 serviceId 自动从注册中心获取服务地址并转发请求,这样做的好处不仅可以通过单个端点来访问应用的所有服务,而且在添加或移除服务实例时不用修改 Gateway 的路由配置。
2|1添加依赖
2|2动态获取 URI
点击链接观看:动态获取 URI视频(获取更多请关注公众号「哈喽沃德先生」)
配置文件
配置注册中心和动态路由规则。
启动类
访问
访问:http://localhost:9000/product/1 结果如下:
2|3服务名称转发
点击链接观看:服务名称转发视频(获取更多请关注公众号「哈喽沃德先生」)
即使配置了动态获取 URI 的方式,项目中微服务一旦过多几十上百个时,配置中仍然要写很多配置,这时候就可以使用服务名称转发,与服务发现组件进行结合,通过 serviceId
转发到具体服务实例。默认匹配URL /微服务名称/**
路由到具体微服务。
配置文件
配置注册中心和动态路由规则。
启动类
访问
配置文件中没有配置任何订单服务的信息,访问:http://localhost:9000/order-service/order/1 结果如下:
下一篇我们讲解 Gateway 网关过滤器和全局过滤器以及自定义过滤器的使用,记得关注噢~