>Gatewat是高性能异步网关,统一路由、限流、鉴权,秒级构建微服务入口!
目录
[1.1 入门使用](#1.1 入门使用)
[1.2 最佳实践](#1.2 最佳实践)
[2.1 入门使用](#2.1 入门使用)
[2.2 过滤器](#2.2 过滤器)
[2.3 跨域问题](#2.3 跨域问题)
一、OpenFeign
1.1 入门使用
1️⃣客户端的依赖引入
<!--feign客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
2️⃣启动类添加**@EnableFeignClients**启动注解
3️⃣编写客户端调用代码

1.2 最佳实践
默认的http请求是不支持连接池的,所有我们可以配置上连接池
<!--httpClient的依赖 -->
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-httpclient</artifactId>
</dependency>
增加下面的配置
feign:
client:
config:
default:
logger-level: BASIC
httpclient:
enabled: true
max-connections: 200
max-connections-per-route: 50
观察FeignClientFactoryBean类看连接池是否成功

在实际开发中,我们一般采用抽取open为一个单独的模块,使用方通过引入feign-api模块去调用
二、服务网关
2.1 入门使用
基本的流程图

引入基本的依赖
<!--网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<!--nacos服务发现依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
基本配置和路由规则
spring:
application:
name: gateway
cloud:
nacos:
server-addr: 120.27.236.84:8848,124.221.80.228:8848
discovery:
username: nacos
password: nacos
namespace: dev
gateway:
routes:
- id: user-service # 路由标示,必须唯一
uri: lb://userservice # 路由的目标地址
predicates: # 路由断言,判断请求是否符合规则
- Path=/user/** # 路径断言,判断路径是否是以/user开头,如果是则符合
- id: order-service
uri: lb://orderservice
predicates:
- Path=/order/**
断言工厂

2.2 过滤器
通过配置文件可以为某个服务或全局增加请求头等内容

自定义过滤器

过滤器之间的优先级:默认 > 路由 > 全局

源码查看

2.3 跨域问题
前置知识:https://www.ruanyifeng.com/blog/2016/04/cors.html
增加下面的配置
spring:
cloud:
gateway:
globalcors: # 全局的跨域处理
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]':
allowedOrigins: # 允许哪些网站的跨域请求
- "*"
allowedMethods: # 允许的跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: "*" # 允许在请求中携带的头信息
allowCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期
