# web-flux **Repository Path**: libo999/web-flux ## Basic Information - **Project Name**: web-flux - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-18 - **Last Updated**: 2025-07-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Web Flux 项目说明 ## 项目简介 该项目是一个基于 Spring WebFlux 的微服务网关应用,主要实现 API 请求代理、流量控制、请求校验、数据加密解密及消息队列处理等功能。适用于需要处理高并发、异步非阻塞请求的场景,同时支持多种加密算法(SM2、SM3、SM4)进行签名与数据安全传输。 ## 功能特性 - **加密工具**:提供国密算法 SM2(非对称加密/签名)、SM3(哈希算法)、SM4(对称加密)的工具类。 - **请求代理**:通过 WebClient 实现统一 API 请求转发。 - **请求校验链**:包含 IP 校验、签名校验、AK/SK 校验、库存校验、解密校验等。 - **流量控制**:集成 Resilience4j 实现响应式断路器。 - **缓存支持**:使用本地缓存与 Redis 缓存提升鉴权性能。 - **异步任务**:通过自定义线程池实现异步消息处理。 - **多 MQ 支持**:支持 Kafka 与 Redis Stream 两种消息队列模式。 ## 模块结构 - `ProxyController`:对外暴露的 API 代理接口。 - `SignatureController`:签名相关接口,用于生成签名密钥。 - `EncodeUtils`、`SM2`、`SM3`、`SM4`、`SMUtil`:国密算法工具类。 - `AkSkValidator`、`HeardValidator`、`SignValidator`、`Sm4DecryptValidator`、`StockValidator`:请求校验链实现。 - `RedisConfig`、`WebClientConfig`、`TaskPoolConfig`:配置类。 - `CircuitConfig`:断路器配置。 - `RedisStreamConfig`、`KafkaRecordListener`、`RecordListener`:消息队列消费逻辑。 - `AuthApiMapper`、`DataRegisterApiRecordMapper`:MyBatis Plus 数据访问接口。 - `AuthApi`、`DataRegisterApiRecord`:数据库实体类。 - `Result`、`ForwardRequest`、`ParamVo`:统一响应结构与请求参数封装。 - `GlobalExceptionHandler`:全局异常处理。 ## 技术栈 - Spring WebFlux - Spring Boot - Reactor Netty - WebClient - Resilience4j(响应式断路器) - MyBatis Plus - RedisTemplate - Kafka - Lombok、Validation、Jackson - 国密算法(SM2/SM3/SM4) ## 配置要求 请在 `application.yaml` 中配置以下内容: - `gateway.connectTimeout`、`gateway.responseTimeout`、`gateway.allowedProtocols` - `mq.type`:指定消息队列类型(redisProducer / kafkaProducer) - Redis、Kafka、数据库连接信息 ## 使用说明 - 启动项目后,访问 `/apiInvoking/{serverName}` 进行代理请求。 - 可通过 `/authentication/signatureKey` 获取签名密钥。 - 请求校验链自动执行,包含签名验证、访问密钥校验、IP 识别、库存控制等。 ## 部署要求 - JDK 17+ - Maven 3.5+ - Redis 6+ - Kafka(如使用 Kafka 模式) - MySQL(如使用数据库持久化) ## 项目启动 ```bash mvn clean spring-boot:run ``` ## 开发者 该项目由 [libo999](https://gitee.com/libo999) 维护。 ## 协议 本项目采用 Apache-2.0 许可协议。详情请参阅 LICENSE 文件。 ## 图片展示 项目结构或接口调用流程图可参考 `img.png`。