SpingCloud Gatway网关的架构

news/2024/7/10 1:22:27 标签: 架构, 网络, 负载均衡

目录

1 基本介绍

1.1 课程视频

1.2 功能

2 应用gateway

2.1 加依赖

2.2 yml 文件配置

3 集成 sentinel 限流 某个微服务器限流 或 url 分组限流

3.1 添加依赖

3.2 配置文件yml

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添加依赖

4.3在nacos中写配置文件

5 测试

6 Sentinel 监控限流 配置限流规则

6.1 课程视频

6.2 配置文件yml

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 课程视频

https://www.bilibili.com/video/BV173411P7M2?p=26&spm_id_from=pageDriver&vd_source=ff8b7f852278821525f11666b36f180a

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 不然重启后消失


http://www.niftyadmin.cn/n/251751.html

相关文章

d2l 使用attention的seq2seq

这一章节与前面写好的function关联太大&#xff0c;建议看书P291. 这章节主要讲述了添加attention的seq2seq,且只在decoder里面添加&#xff0c;所以全文都在讲这个decoter 目录 1.训练 2.预测 1.训练 #save class AttentionDecoder(d2l.Decoder):"""带有注…

黑马在线教育数仓实战7

1. hive的相关的优化 1.1 hive的相关的函数(补充说明) if函数: 作用: 用于进行逻辑判断操作语法: if(条件, true返回信息,false返回信息) 注意: if函数支持嵌套使用 nvl函数: 作用: null值替换函数格式: nvl(T value, T default_value) COALESCE函数 作用: 非空查找函数:格式…

vue3+vite项目集成Luckysheet,前后端通信,编辑回显,项目开发记录

Luckysheet是一款非常强大的在线excel&#xff0c;配置简单而且完全开源&#xff0c;而且有很多社区解决方案 官方文档地址&#xff1a;Luckysheet文档 要使用Luckysheet&#xff0c;首先引入&#xff1a; 1、在这个网站拉取源码Luckysheet: &#x1f680;Luckysheet &#xf…

Linux: 进程间通信机制

文章目录 1. 前言2. 进程间通信机制2.1 管道2.1.1 匿名管道2.1.2 popen() 和 pclose()2.1.3 命名管道 FIFO 2.2 消息队列2.3 共享内存2.4 信号量2.5 网络套接字2.6 UNIX套接字2.7 信号 3. 参考资料 1. 前言 限于作者能力水平&#xff0c;本文可能存在谬误&#xff0c;因此而给…

MATLAB在数学建模中的应用(附源码)

MATLAB在数学建模中有着广泛的应用&#xff0c;常见的应用包括&#xff1a; 1、数据分析和预处理&#xff1a;MATLAB具有强大的数据处理和分析功能&#xff0c;可以对原始数据进行预处理、清洗和转换&#xff0c;以便后续建模和分析。 MATLAB具有强大的数据分析和预处理功能&a…

【Linux】Mysql事务

一、什么是事务 Mysql 数据库中不是所有的存储引擎都实现了事务处理。 支持事务的存储引擎有&#xff1a; InnoDBNDB Cluster 。不支持事务的存储引擎代表有&#xff1a; MyISAM 事务简单来说&#xff1a;一个 Session 中所进行所有的操作&#xff0c;要么同时成功&#xff0c…

Chat GTP

有感于ChatGPT近期冒出来的资源实在太多了。于是在周末组织了五位精通信息分析的同学&#xff0c;整理了一份ChatGPT资源清单。他们分别是&#xff1a;Alex、张天立、林向东、边心竹、郑嘻嘻。而整体组织架构是我设计的。 在组织资源清单时&#xff0c;我的目标是力求清晰。兼…

Java基础(十九):集合框架

Java基础系列文章 Java基础(一)&#xff1a;语言概述 Java基础(二)&#xff1a;原码、反码、补码及进制之间的运算 Java基础(三)&#xff1a;数据类型与进制 Java基础(四)&#xff1a;逻辑运算符和位运算符 Java基础(五)&#xff1a;流程控制语句 Java基础(六)&#xff1…