cloud.spring.io/spring-clou…
如果让客户端直接与各个微服务通信,会有以下的问题:
so 我们需要一个网关能统一处理这些问题,包括授权、限流、日志、安全等系统常用功能。
gateway在微服务中扮演角色就是一个优秀的"皇宫护卫"吧
这边还是接着第二章的Demo开始 ,选中scloud项目,右击 New - Module - Spring Initializr
next
选择两个依赖包Gateway 和 Euraka Discovery Client
接着 我们还是和上一章创建服务消费者一样 修改pom.xml 和 application.yml(这边我把默认的.properties修改成.yml文件)
application.yml 内容如下
在启动类加入注解
@SpringBootApplication @EnableEurekaClient public class EurekaGatewayApplication { public static void main(String[] args) { SpringApplication.run(EurekaGatewayApplication.class, args); } }复制代码
好了到此为止网关应该搭建结束了
我们以此启动eureka_server模块,eureka_client模块,eureka_consumer_openfeign 模块,eureka_gateway模块。
一个警告:
********************************************************** Spring MVC found on classpath, which is incompatible with Spring Cloud Gateway at this time. Please remove spring-boot-starter-web dependency. ********************************************************** 复制代码
报错部分截图:
经过搜索各大论坛,说是 spring-cloud-starter-gateway 和 spring-boot-starter-web 都用了webflux架包产生冲突!
解决方法:对我这个项目,就是把 spring-boot-starter-web 不放入主pom.xml引用,各个模块自己依赖spring-boot-starter-web,主pom.xml修改如下
我们在启动eureka_gateway 模块,OK,现在全部启动起来了
访问下 http://localhost:8666 看下注册的服务,都有了。
现在我们从浏览器网关端口访问服务 http://localhost:8671/test/sayHello/world (8671 后面的路径也就是服务消费者提供的Restful api)
至此,网关已经通了,就这么简单???
当然不是!!!现在只是走通请求,还有...
除了本身的一些特性学习外,网关这个模块还需要集成断路器Hystrix、Security(认证、授权)、token 等,内容还是比较多且丰富的,为了条例清晰些节约每个内容的篇幅,下一节在记录下Predicate Factory的使用。
源码地址: gitee.com/dolan/sclou…
切换到分支 f_gateway !!!