您现在的位置是:首页 >技术杂谈 >SpingCloud Gatway网关的架构网站首页技术杂谈
SpingCloud Gatway网关的架构
简介SpingCloud Gatway网关的架构
目录
3 集成 sentinel 限流 某个微服务器限流 或 url 分组限流
4 nacos管理配置 限流规则文件放入http://nacos-server:8848/nacos
6.3 运行程序发布到 服务器 上才能监控, 开发阶段要在开发的机器上安装jar包监控
6.4 查看监控和配置 http://sentinel-server:8858/
6.5 Sentinel 配置的文件 需要复制到nacos 不然重启后消失
1 基本介绍
1.1 课程视频
https://www.bilibili.com/video/BV173411P7M2?p=23&vd_source=ff8b7f852278821525f11666b36f180a
1.2 功能
1. 性能: 高可用, 负载均衡, 容错机制
2. 安全: 权限身份认证, 脱敏. 流量清洗, 后端签名 , 黑名单
3: 日志: 分布式 全链路跟踪记录
4: 限流
5: 路由规则
2 应用gateway
2.1 加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.2 yml 文件配置
server:
port: 80
spring:
application:
name: gateway-server
cloud:
nacos:
discovery:
server-addr: nacos-server:8848 # 修改本机的host 文件 cmd -> drivers -> etc -> 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/** # 判断
filters:
- StripPrefix=1 # 当前端访问/admin/login - >login 将admin自动的去掉
- id: member-service_router
uri: lb://member-service # 转发到那个目的地
predicates:
- Path=/user/**
filters:
- StripPrefix=1 # 当前端访问/user/login - >login 将user自动的去掉
3 集成 sentinel 限流 某个微服务器限流 或 url 分组限流
3.1 添加依赖
<!--限流-->
<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>
3.2 配置文件yml
sentinel: # 限流
transport:
dashboard: sentinel-server:8858 # sentinel-dashboard 放在ecs 里面
datasource:
ds1: # com.alibaba.csp.sentinel.datasource.nacos.NacosDataSource 使用Nacos持久化我的sentinel 数据时,需要添加nacos-datasource的依赖
nacos:
server-Addr: nacos-server:8848
group-id: DEFAULT_GROUP
dataId: gw-flow
ruleType: gw_flow
ds2:
nacos:
serverAddr: nacos-server:8848
group-id: DEFAULT_GROUP
dataId: api-group
ruleType: gw_api_group # 我们演示了sentinel-dashboard 的规则的定义,而且规则定义好了后,我们的网关能立马的感知到(生效)(nacos无法感知),但是我们下次重启,会丢失规则。--》nacos
4 nacos管理配置 限流规则文件放入http://nacos-server:8848/nacos
4.1课程https://www.bilibili.com/video/BV173411P7M2?p=25&spm_id_from=pageDriver&vd_source=ff8b7f852278821525f11666b36f180a
4.2添加依赖
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
4.3在nacos中写配置文件
5 测试
@RestController
public class GatewayFlowRulesController {
/**
* 获取当前系统的限流策略
*/
@GetMapping("/gw/flow/rules")
public Set<GatewayFlowRule> getCurrentGatewayFlowRules(){ //java中的<>叫做泛型,括号里面的内容就是泛型的类型
return GatewayRuleManager.getRules() ;
}
/**
* 获取我定义的api分组
*/
@GetMapping("/gw/api/groups")
public Set<ApiDefinition> getApiGroups(){
return GatewayApiDefinitionManager.getApiDefinitions() ;
}
}
6 Sentinel 监控限流 配置限流规则
6.1 课程视频
6.2 配置文件yml
sentinel: # 限流
transport:
dashboard: sentinel-server:8858 # sentinel-dashboard 放在ecs 里面
6.3 运行程序发布到 服务器 上才能监控, 开发阶段要在开发的机器上安装jar包监控
6.4 查看监控和配置 http://sentinel-server:8858/
6.5 Sentinel 配置的文件 需要复制到nacos 不然重启后消失
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。