第四章
Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。
本章节介绍nacos 与gateway 实现路由的动态刷新。
(1)新建项目gateway
(2)在nacos服务器配置列表uat中添加 gateway.properties 文件
(3)pom.xml文件
(3)启动gateway 项目。访问http://localhost:9000/actuator/gateway/routes,
(4)在gateway.properties 文件中加入
nacos.dataId=routes.json
nacos.group=DEFAULT_GROUP
(5)在uat 配置列表中加入 routes.json文件
(6)创建自定义路由,实现RouteDefinitionRepository类
(7)创建nacos 监听器,监听路由变化
nacos监听器文档:https://nacos.io/zh-cn/docs/nacos-spring.html
(8)再访问 http://localhost:9000/actuator/gateway/routes
发现只有一个nacosa 项目,访问http://localhost:9000/nacosa/ribbon/geta,返回成功,说明可以。
接着,到routes.json文件删除 nacos 配置。
访问:http://localhost:9000/nacosa/ribbon/geta 返回404,或者访问http://localhost:9000/actuator/gateway/routes 返回空路由
(9)关于gateway 日志打印
第一种如下
#logging.level.org.springframework.cloud.gateway=trace
#logging.level.org.springframework.http.server.reactive=debug
#logging.level.org.springframework.web.reactive=debug
#logging.level.reactor.ipc.netty=debug
第二种,在代码 /config/log 中,自定义过滤器打印log
(10)logging.level.com.alibaba.nacos.client.naming=info 是打印nacos 日志,且日志有些频繁可以不打印。
(11)项目地址:https://github.com/renzheyizhe/demo/tree/master/gateway
(12)也可以使用pring.cloud.gateway.discovery.locator.enabled=true 实现服务自动路由配置,但在实际开发中并不使用。