# BreatheGateway **Repository Path**: lvzihao521/breathe-gateway ## Basic Information - **Project Name**: BreatheGateway - **Description**: 基于Netty基础实现简易网关,掌握Netty网络编程以及API网关核心功能开发,引入Nacos作为注册中心以及配置中心,提供可扩展的接口,掌握抽象接口设计能力以及对Nacos的深度应用能力 网关完善,包括过滤器、熔断降级限流、指标监控、日志功能、鉴权,穿插设计模式、可插拔式的 思想,掌握各种生产级功能的设计开发能力。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-30 - **Last Updated**: 2025-12-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Breathe Gateway 项目文档 ## 项目简介 Breathe Gateway 是一个高性能的网关服务框架,提供路由、负载均衡、限流、熔断、降级、灰度发布等核心网关功能。该项目基于 Netty 实现高性能网络通信,并支持与 Nacos 配合进行配置中心和注册中心管理。 ## 核心功能 - **高性能网络通信**:基于 Netty 实现的 HTTP 服务端与客户端,提供高效的网络处理能力。 - **动态路由管理**:支持动态路由配置,可实时更新路由规则。 - **负载均衡**:提供多种负载均衡策略,如轮询、灰度策略等。 - **限流控制**:基于令牌桶算法实现限流,防止系统过载。 - **熔断与降级**:支持熔断机制与降级处理,提升系统容错能力。 - **灰度发布**:支持灰度策略,实现流量控制与灰度路由。 - **配置中心支持**:集成 Nacos 作为配置中心,实现配置的动态加载与监听。 - **服务注册发现**:支持通过 Nacos 进行服务注册与发现。 ## 模块说明 - **gateway-bootstrap**:网关启动模块,负责初始化配置中心、容器、注册中心等核心组件。 - **gateway-common**:通用模块,包含常量、枚举、异常、工具类等基础类。 - **gateway-config**:配置管理模块,负责加载与管理网关的配置信息。 - **gateway-core**:核心功能模块,包含网关的核心处理逻辑,如路由、过滤器、负载均衡、限流、熔断等。 - **gateway-config-center**:配置中心模块,提供 Nacos 配置中心的实现。 - **gateway-register-center**:注册中心模块,提供 Nacos 注册中心的实现。 - **gateway-demo**:网关示例模块,用于演示网关的基本使用方式。 - **gateway-spring-application**:基于 Spring Boot 的示例应用,用于测试网关功能。 - **gateway-client**:客户端模块,提供 HTTP 和 Dubbo 客户端实现,可以将服务端相关信息注册到注册中心上,我们自动从注册中心拉去相关配置,简化gateway.yaml的配置 ## 快速开始 ### 环境要求 - Java 17 或更高版本 - Maven 3.x - Nacos(2.2.0) ### 构建与运行 1. **克隆项目** ```bash git clone https://gitee.com/lvzihao521/breathe-gateway.git cd breathe-gateway ``` 2. **构建项目** ```bash mvn clean install ``` 3. **启动网关** - 确保 `gateway-bootstrap` 模块中的 `Bootstrap.java` 已配置好相关参数。 - 运行 `Bootstrap` 类的 `main` 方法启动网关服务。 4. **测试网关** - 启动 `gateway-spring-application` 模块中的 `Application.java`,该模块提供了一些简单的 REST 接口用于测试网关路由功能。 - 使用浏览器或 Postman 访问 `http://localhost:10002/api/user/ping1` 等接口,验证网关是否正常工作。 ### 配置说明 - 网关的配置文件位于 `gateway-config/src/main/resources/gateway.yaml`。 - 配置项包括: - **端口**:网关监听的端口号。 - **环境**:当前运行环境(如 dev、test、prod)。 - **配置中心**:支持 Nacos 配置中心,可配置地址、命名空间、超时时间等。 - **注册中心**:支持 Nacos 注册中心,可配置地址、命名空间等。 - **Netty 配置**:包括事件循环组线程数、最大内容长度等。 - **HTTP 客户端配置**:包括连接超时时间、最大连接数等。 - **路由配置**:定义服务名称、URI、协议、过滤器、熔断策略等。 ### 动态配置更新 - 网关支持通过 Nacos 动态更新配置。当配置发生变化时,网关会自动重新加载配置,无需重启服务。 ## 核心组件说明 ### 路由管理 - **Rule**:定义由规则,包括服务名称、URI、协议、过滤器、熔断策略等。这是核心 Class - **DynamicConfigManager**:动态配置管理器,负责管理路由、服务定义、服务实例等信息,并提供更新与查询接口。 ### 过滤器 - **FilterChain**:过滤器链,负责执行一系列过滤器逻辑。 - **FlowFilter**:限流过滤器,基于令牌桶算法实现限流。 - **GrayFilter**:灰度过滤器,根据灰度策略决定是否将请求路由到灰度实例。 - **LoadBalanceFilter**:负载均衡过滤器,选择合适的服务实例进行请求转发。 - **RouteFilter**:路由过滤器,负责将请求路由到目标服务。 ### 负载均衡 - **LoadBalanceStrategy**:负载均衡策略接口,支持多种实现: - **RoundRobinLoadBalanceStrategy**:轮询策略。 - **GrayLoadBalanceStrategy**:灰度策略,优先选择灰度实例。 ### 灰度发布 - **GrayStrategy**:灰度策略接口,支持多种实现: ### 熔断与降级 - **Resilience**:熔断与降级管理器,负责执行熔断、重试、降级等操作。 - **FallbackHandler**:降级处理器接口,支持多种实现: - **DefaultFallbackHandler**:默认降级处理器,返回预定义的降级响应。 ## 扩展性 - **SPI 扩展机制**:项目使用 Java SPI 机制,支持动态加载配置中心、过滤器、灰度策略、负载均衡策略等组件。 - **服务注册与发现**:支持通过 Nacos 进行服务注册与发现,未来可扩展支持其他注册中心(如 Zookeeper、Eureka 等)。 ## 测试与调试 - **单元测试**:项目包含多个单元测试类,用于验证核心功能的正确性。 - **日志输出**:项目使用 Lombok 的 `@Slf4j` 注解进行日志输出,便于调试与问题排查。 ## 结语 **完结撒花🎉**