您的位置:首页 > 编程语言 > Java开发

微服务SpringCloud之GateWay服务化和过滤器

2019-11-10 20:45 1616 查看

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/24
View Code 上面配置文件增加了add_request_parameter_route路由,该路由作用是在spring-cloud-producer服务的get请求url增加参数,类似在url的问号后面增加key=value键值对name=cuiyw.

3.测试

重启EurekaClient和GateWay,在浏览器中输入http://localhost:8081/hello,则交替出现如下两个页面的结果,实现了服务化路由转发。

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: