微服务SpringCloud之GateWay服务化和过滤器
Spring Cloud Gateway 提供了一种默认转发的能力,只要将 Spring Cloud Gateway 注册到服务中心,Spring Cloud Gateway 默认就会代理服务中心的所有服务。
一、服务网关注册到注册中心
这里服务和注册中心使用前面博客中的EurekaServer和EurekaClient。服务网关注册到注册中心只需引入依赖包和增加配置。
1.引入依赖包spring-cloud-starter-netflix-eureka-client
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
2.在application.yml中增加配置
server: port: 8081 eureka: client: service-url: defaultZone: http://localhost:8088/eureka/ logging: level: org.springframework.cloud.gateway: debug spring: application: name: SpringCloudGatewayDemo cloud: gateway: discovery: locator: enabled: true routes: # - id: method_route # uri: http://www.cnblogs.com # predicates: # - Method=GET # - Path=/5ishare/{segment} - id: query_route uri: http://www.cnblogs.com
spring.cloud.gateway.discovery.locator.enabled:是否与服务注册于发现组件进行结合,通过 serviceId 转发到具体的服务实例。默认为 false,设为 true 便开启通过服务中心的自动根据 serviceId 创建路由的功能。
eureka.client.service-url.defaultZone指定注册中心的地址,以便使用服务发现功能
logging.level.org.springframework.cloud.gateway 调整相 gateway 包的 log 级别,以便排查问题
3.测试
依次启动EurekaServer、EurekaClient、SpringCloudGatewayDemo。在浏览器输入http://localhost:8088/,如图一注册中心有SPRING-CLOUD-PRODUCER、SPRINGCLOUDGATEWAYDEMO两个应用。
server: port: 8081 eureka: client: service-url: defaultZone: http://localhost:8088/eureka/ logging: level: org.springframework.cloud.gateway: debug spring: application: name: SpringCloudGatewayDemo cloud: gateway: discovery: locator: enabled: true routes: - id: add_request_parameter_route uri: lb://spring-cloud-producer filters: - AddRequestParameter=name, cuiyw predicates: - Method=GET # - id: method_route # uri: http://www.cnblogs.com # predicates: # - Method=GET # - Path=/5ishare/{segment} - id: query_route uri: http://www.cnblogs.com predicates: - Query=name,cuiyw - RemoteAddr=192.168.0.1/16 # - id: cookie_route # uri: http://www.cnblogs.com # predicates: # - Cookie=name,cuiyw # - Header=X-Request-Id, \d+ # - id: time_route # uri: http://www.cnblogs.com # predicates: # -After=2019-11-03T10:20:06+08:00[Asia/Shanghai] # - Before=2019-11-03T10:55:06+08:00[Asia/Shanghai] # - Between=2019-11-03T11:01:06+08:00[Asia/Shanghai], 2019-11-03T11:05:06+08:00[Asia/Shanghai] # - id: neo_route # uri: http://www.cnblogs.com # predicates: # - Path=/5ishare # - id: header_route # uri: http://ityouknow.com # predicates: # - Header=X-Request-Id, \d+ # - id: host_route # uri: http://ityouknow.com # predicates: # - Host=**.ityouknow.com # - id: host_route # uri: http://ityouknow.com # predicates: # - Path=/foo/{segment} # - id: query_route # uri: http://ityouknow.com # predicates: # - Query=keep, pu. # - id: remoteaddr_route # uri: http://ityouknow.com # predicates: # - RemoteAddr=192.168.126.218/24View Code 上面配置文件增加了add_request_parameter_route路由,该路由作用是在spring-cloud-producer服务的get请求url增加参数,类似在url的问号后面增加key=value键值对name=cuiyw.
3.测试
重启EurekaClient和GateWay,在浏览器中输入http://localhost:8081/hello,则交替出现如下两个页面的结果,实现了服务化路由转发。
- 跟我学SpringCloud | 第十三篇:Spring Cloud Gateway服务化和过滤器
- 跟我学SpringCloud | 第十三篇:Spring Cloud Gateway服务化和过滤器
- Spring Cloud构建微服务架构—服务网关过滤器
- SpringCloud之网关服务(gateway)
- Spring Cloud gateway 网关服务 一
- springboot+spring cloud实现简单的gateway注册服务
- 【MS】springcloud-gateway 中实现服务之间鉴权,只能从网关访问,禁止直接访问服务
- SpringCloud-Zuul服务网关[自定义网关过滤器]
- Spring Cloud架构教程 (五)服务网关(过滤器)
- 微服务网关实战——Spring Cloud Gateway
- SpringCloud 服务网关(三)(过滤器)
- Spring Cloud架构教程 (五)服务网关(过滤器)
- Springcloud_ad-gateway微服务网关(zuul)方式restAPI,以及zuul网关配置
- SpringCloud之网关服务(gateway)
- 基于Spring cloud gateway定制的微服务网关
- springcloud(十五):Spring Cloud 终于按捺不住推出了自己的服务网关 Gateway
- spring cloud gateway 全局过滤器的实现
- Spring Cloud架构教程 (五)服务网关(过滤器)
- 详解SpringCloud Gateway之过滤器GatewayFilter
- 详解Spring Cloud Gateway基于服务发现的默认路由规则