[新增功能](master): 更新网关

网关相关的基础配置更新
master
土豆兄弟 2 years ago
parent f2dfa2c850
commit f1fdb534b7

@ -16,4 +16,31 @@
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- 网关 -->
<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>
<!-- 网关限流 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-sentinel-gateway</artifactId>
</dependency>
<!-- nacos 持久化配置时候添加的依赖 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
</dependencies>
</project>

@ -0,0 +1,19 @@
package com.baiye;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* Application
*
* @author q
* @date 2022/05/11
*/
@SpringBootApplication
@EnableDiscoveryClient
public class GatewayServerApplication {
public static void main(String[] args) {
SpringApplication.run(GatewayServerApplication.class, args);
}
}

@ -0,0 +1,36 @@
package com.baiye.controller;
import com.alibaba.csp.sentinel.adapter.gateway.common.api.ApiDefinition;
import com.alibaba.csp.sentinel.adapter.gateway.common.api.GatewayApiDefinitionManager;
import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayFlowRule;
import com.alibaba.csp.sentinel.adapter.gateway.common.rule.GatewayRuleManager;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Set;
/**
*
*
* @author q
* @date 2022/04/20
*/
@RestController
public class GatewayFlowRulesController {
/**
*
*/
@GetMapping("/gw/flow/rules")
public Set<GatewayFlowRule> getCurrentGatewayFlowRules(){
return GatewayRuleManager.getRules() ;
}
/**
* api
*/
@GetMapping("/gw/api/groups")
public Set<ApiDefinition> getApiGroups(){
return GatewayApiDefinitionManager.getApiDefinitions() ;
}
}

@ -0,0 +1,10 @@
[
{
"apiName": "admin-service-api",
"predicateItems": [
{
"pattern": "/admin/login"
}
]
}
]

@ -0,0 +1,52 @@
server:
port: 80
spring:
application:
name: gateway-server
cloud:
nacos:
discovery:
server-addr: nacos-server:8848 # 修改本机的host文件即可
gateway:
discovery:
locator:
enabled: true
lower-case-service-id: true # admin-service ADMIN-SERVICE /admin-service/** -> 微服务 (ADMIN-SERVICE) 自动转发,忽略大小写
routes:
- id: admin-service_router
uri: lb://admin-service # 负载均衡转发到哪个目的地
predicates:
- Path=/admin/**
- id: test_router
uri: https://www.baidu.com/ # 负载均衡转发到哪个目的地
predicates:
- Path=/test
# 通过网关来完成对2种维度的限流 网关维度 + API 分组
sentinel:
datasource:
# 使用动态规则的数据源 - 把 gw-flow.json| api-group.json 文件放在 Nacos 中配置
# 使用 Nacos 在持久化我们的配置时候要添加一个依赖 sentinel-datasource-nacos
ds1.nacos:
serverAddr: nacos-server:8848
dataId: gw-flow
ruleType: gw_flow
ds2.nacos:
serverAddr: nacos-server:8848
dataId: api-group
ruleType: gw_api_group
# ds1.file:
# file: classpath:gw-flow.json # 网关 + API分组的限流
# ruleType: gw_flow
# ds2.file:
# file: classpath:api-group.json
# ruleType: gw_api_group
# 配置 sentinel-dashboard
# 测试环境只能使用本机的环境,直接使用线上是不行的
# 配置好之后,取代上面的配置方式,直接使用可视化的方式来替代json配置文件的方式
# sentinel-dashboard 的规则定义好了后我们的网关能立马的感知到生效nacos无法感知但是我们下次重启会丢失规则,所以需要把持久化的规则手动添加到Nacos中
transport:
dashboard: sentinel-server:8858

@ -0,0 +1,14 @@
[
{
"resource": "admin-service_router",
"resourceMode": 0,
"count": 2,
"intervalSec": 60
},
{
"resource": "admin-service-api",
"resourceMode": 1,
"count": 1,
"intervalSec": 60
}
]
Loading…
Cancel
Save