文档:Spring Cloud Gateway
小结:
nacos :注册中心,解决服务的注册与发现
nacos :配置中心,配置文件中心化管理
Ribbon:客户端负载均衡器,解决微服务集群负载均衡的问题
Openfeign:声明式HTTP客户端,解决微服务之间远程调用问题
Sentinel:微服务流量防卫兵,以流量为入口,保护微服务,防止出现服务雪崩.
为什么使用网关
Springcloud-gateway简介
基于spring5、springboot2.0和Project Reactor等技术开发的网关,目的是为微服务架构系统提供高性能,且简单易用的api路由管理方式。
优点:
1:性能强劲,是第一代网关zuul的1.6倍
2:功能强大,内置很多实用功能如:路由、过滤、限流、监控等。
3:易于扩展。
gateway核心概念
gateway的工作流程
1:客户端向 Spring Cloud Gateway 发出请求。然后在 Gateway Handler Mapping 中找到与请求相匹配的路由
2:将其发送到 Gateway Web Handler。
3:Handler 再通过指 定的过滤器链来将请求发送到我们实际的服务执行业务逻辑,然后返回。过滤器之间用虚线分开是因为过滤器可能会在发送代理请求之前(“pre”)或之后(“post”)执行业务逻辑。
搭建网关
pom依赖
注意:不要依赖spring-boot-starter-web
<dependency><groupId>org.springfrawmework.boot</groupId><!--servlet编程模型、运行的服务器是tomcat--><artifactId>spring-boot-starter-web</artifactId>
</dependency>
依赖如下:
<dependencies><!-- spring-cloud gateway,底层基于netty --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><!-- 端点监控 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- nacos注册中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency></dependencies>
基本配置
配置文件采用.yml文件
server:#gateway的端口port: 8877spring:application:name: cloud-gatewaycloud:nacos:discovery:server-addr: localhost:8848username: nacospassword: nacos
启动类加@EnableDiscoveryClient注解
路由到微服务
静态路由
表示访问goods/**就是访问 http://localhost:9001/goods/
动态路由
加了一个li://goods 这个主要是搞微服务集群的如下图:
这时访问goods,就是访问两个集群轮询访问
server:#gateway启动端口port: 8877
spring:cloud:gateway:routes:#配置商品微服务- id: goodsuri: lb://goodspredicates:- Path=/goods/**- id: ordersuri: http://localhost:9002/orders/predicates:- Path=/orders/**nacos:discovery:server-addr: localhost:8848username: nacospassword: nacosapplication:name: gateway