文章目录
概要
网关作为微服务集群唯一的对外入口,可以实现很多功能.
例如:
统一的解决跨域(一个ajax请求 origin域名和请求目标url中域名不同,ip不同,域名不同,端口不同,都会引发的问题)问题.
统一的身份认证.认证解析JWT.
如果网关能够结合一些其它的插件 可以实现入口流量控制(sentinel).做到监控预警(Prometheus)等
网关的落地方案(Spring cloud gateway),还有其它选择
- netflix zuul: 原来比较火的一个网关组件,但是netflix奈飞停更了,zuul2流产了.
- Kong: 也是一种选择
- Nginx: 反向代理网关,并发能力,速度都可以保证. 一般要配合网关组件实现更前端的入口控制
spring cloud gateway 实现的具体功能:
- 请求转发: 网关不具备处理某个请求的能力,所以一定要转发给微服务.
- 路由匹配: (网络路由表示 端到端的路径网络选择)根据请求条件(包括地址,头,),功能判断具体由哪个服务来完成这次处理.
- 过滤器(拦截功能): 可以在过滤逻辑中,对请求做自定义的逻辑处理(比如验证身份.记录请求次数,记录并发)
配置流程
第一步创建一个新的子工程和第二步添加main启动类
第三步添加依赖
<!--spring boot web环境-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--gateway 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos-client 注册中-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--http负载均衡组件-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
第四步配置启动信息yml文件信息
server:
port: 30000
spring:
application:
name: medical-gateway
#切换一下底层web容器类型
main:
web-application-type: reactive
#配置网关 完成入门案例的需求
cloud:
gateway:
# 网关的路由们
routes:
# 当前路由对象的id值
- id: demo01
# 网关转发的目标
uri: http://localhost:19081
# 转发判断路由的条件(判断断言)
predicates:
# Path断言 进入网关 匹配请求的path路径
- Path=/**
第五步启动启动类,如果启动报错请参考技术细节有详细讲解问题解决
技术细节
出现以下启动问题 这个报错通常是由于在使用 Spring Boot 中的 WebFlux(响应式编程)时,缺少了 Reactive Web 服务器工厂(ReactiveWebServerFactory)的配置而导致的
解决方式如图所示:先清除一下,再编译
第一步骤:
执行命令:mvn clean compile -X
第二步骤:
第三步骤:重启idea,再运行
如果以上还不行,可以私信给作者帮你解决或者关注《全栈鍾猿》公众号私信作者解决哦