# 啊金 .Net Core 分布式微服务架构 **Repository Path**: JSTGitee/Microservice ## Basic Information - **Project Name**: 啊金 .Net Core 分布式微服务架构 - **Description**: 企业级分布式微服务架构项目,基于 .NET 8 构建,采用 Clean Architecture + DDD + CQRS 设计模式。 - **Primary Language**: C# - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-27 - **Last Updated**: 2026-09-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Microservice.Architecture 企业级分布式微服务架构项目,基于 .NET 8 构建,采用 Clean Architecture + DDD + CQRS 设计模式。 --- ## 目录 - [架构概览](#架构概览) - [服务职责](#服务职责) - [技术栈](#技术栈) - [目录结构](#目录结构) - [服务通信](#服务通信) - [部署方式](#部署方式) - [快速开始](#快速开始) --- ## 架构概览 ### 系统架构图 ``` ┌─────────────────────────────────────────────────────────────────┐ │ 客户端 (Client) │ └─────────────────────────────────────┬───────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ API 网关 (YARP) │ │ 路由 / 限流 / 熔断 / 认证 / 日志 │ └─────────────────┬───────────┬───────────┬───────────┬───────────┘ │ │ │ │ ┌────────▼───┐ ┌─────▼──────┐ ┌──▼────────┐ ┌▼───────────┐ │ Identity │ │ Order │ │ Product │ │ Payment │ │ Service │ │ Service │ │ Service │ │ Service │ └─────┬──────┘ └─────┬──────┘ └─────┬─────┘ └─────┬──────┘ │ │ │ │ └───────────────┴───────┬───────┴───────────────┘ │ ▼ ┌────────────────────────┐ │ Notification Service │ └──────────────┬─────────┘ │ ┌──────────────────────────────┼──────────────────────────────┐ │ │ │ ▼ ▼ ▼ ┌───────────────┐ ┌───────────────────┐ ┌──────────────┐ │ Consul │ │ RabbitMQ │ │ Redis │ │ 服务发现 │ │ 事件总线 │ │ 分布式缓存 │ └───────────────┘ └───────────────────┘ └──────────────┘ │ │ │ └──────────────────────────────┼──────────────────────────────┘ │ ▼ ┌────────────────────────┐ │ SQL Server (各服务独立库)│ └────────────────────────┘ ``` ### 架构分层 ``` ┌─────────────────────────────────────────┐ │ Presentation Layer │ │ (API / Controllers) │ ├─────────────────────────────────────────┤ │ Application Layer │ │ (CQRS / DTOs / Behaviors / Validators)│ ├─────────────────────────────────────────┤ │ Domain Layer │ │ (Entities / ValueObjects / DomainEvents│ │ / Repository Interfaces / Services) │ ├─────────────────────────────────────────┤ │ Infrastructure Layer │ │ (EF Core / Repositories / External APIs │ │ / Message Bus / Cache) │ └─────────────────────────────────────────┘ ``` --- ## 服务职责 ### 1. IdentityService(身份认证服务) - 用户注册、登录、注销 - JWT Token 颁发与刷新 - 角色与权限管理 - 用户信息维护 - OAuth2.0 / OpenID Connect 支持 ### 2. OrderService(订单服务) - 订单创建、查询、取消 - 订单状态管理 - 购物车功能 - 订单历史记录 - 订单事件发布 ### 3. ProductService(产品服务) - 产品 CRUD 管理 - 产品分类管理 - 库存管理 - 产品搜索与筛选 - 价格管理 ### 4. PaymentService(支付服务) - 支付处理(多种支付方式) - 支付状态跟踪 - 退款处理 - 交易记录 - 支付网关集成 ### 5. NotificationService(通知服务) - 邮件通知 - 短信通知 - 推送通知 - 通知模板管理 - 通知记录查询 --- ## 技术栈 ### 后端框架 - **.NET 8** - 主框架 - **ASP.NET Core Web API** - API 框架 - **Entity Framework Core 8** - ORM - **MediatR** - CQRS 实现 - **FluentValidation** - 数据验证 - **AutoMapper** - 对象映射 ### 微服务基础设施 - **YARP** - API 网关 - **RabbitMQ** - 消息队列 / 事件总线 - **Redis** - 分布式缓存 - **Consul** - 服务发现与配置中心 - **Polly** - 熔断、重试、限流策略 ### 可观测性 - **Serilog** - 结构化日志 - **Seq** - 日志收集与可视化 - **OpenTelemetry** - 分布式追踪 ### 数据库 - **SQL Server** - 关系型数据库 - 支持 PostgreSQL / MySQL 切换 ### 部署与运维 - **Docker** - 容器化 - **Kubernetes** - 容器编排 - **docker-compose** - 本地开发编排 ### 架构模式 - **Clean Architecture** - 清洁架构 - **DDD (Domain-Driven Design)** - 领域驱动设计 - **CQRS (Command Query Responsibility Segregation)** - 命令查询职责分离 - **Event Sourcing** - 事件溯源(可选) - **Saga Pattern** - 分布式事务 --- ## 目录结构 ``` Microservice.Architecture/ ├── src/ │ ├── Gateways/ # 网关层 │ │ └── ApiGateway/ # YARP API 网关 │ ├── Services/ # 业务微服务 │ │ ├── IdentityService/ # 身份认证服务 │ │ ├── OrderService/ # 订单服务 │ │ ├── ProductService/ # 产品服务 │ │ ├── PaymentService/ # 支付服务 │ │ └── NotificationService/ # 通知服务 │ ├── BuildingBlocks/ # 构建块(通用组件) │ │ ├── EventBus.RabbitMQ/ # RabbitMQ 事件总线 │ │ ├── Caching.Redis/ # Redis 缓存 │ │ ├── Authentication.Jwt/ # JWT 认证 │ │ ├── Common/ # 通用工具 │ │ └── Logging.Serilog/ # Serilog 日志 │ └── Shared/ # 共享库 │ ├── Shared.Abstractions/ # 抽象接口 │ └── Shared.Kernel/ # 核心基类 ├── deploy/ # 部署配置 │ ├── k8s/ # Kubernetes 配置 │ └── docker/ # Docker 配置 ├── docs/ # 文档 │ ├── architecture/ # 架构文档 │ ├── api/ # API 文档 │ └── deployment/ # 部署文档 ├── test/ # 测试 │ ├── UnitTests/ # 单元测试 │ ├── IntegrationTests/ # 集成测试 │ └── FunctionalTests/ # 功能测试 ├── scripts/ # 脚本 │ ├── powershell/ # PowerShell 脚本 │ └── bash/ # Bash 脚本 ├── docker-compose.yml # Docker Compose 配置 ├── Microservice.Architecture.sln # 解决方案文件 ├── .gitignore # Git 忽略配置 ├── .editorconfig # 编辑器配置 └── README.md # 项目说明 ``` ### 每个微服务的内部结构 ``` [ServiceName]/ ├── Microservice.[ServiceName].Domain/ │ ├── Entities/ # 实体 │ ├── ValueObjects/ # 值对象 │ ├── Events/ # 领域事件 │ └── Repositories/ # 仓储接口 ├── Microservice.[ServiceName].Application/ │ ├── Dtos/ # 数据传输对象 │ ├── Commands/ # 命令 │ ├── Queries/ # 查询 │ ├── Handlers/ # 处理器 │ ├── Services/ # 应用服务 │ └── Validators/ # 验证器 ├── Microservice.[ServiceName].Infrastructure/ │ ├── Data/ # 数据库上下文 │ ├── Repositories/ # 仓储实现 │ ├── Migrations/ # EF 迁移 │ └── Services/ # 外部服务 └── Microservice.[ServiceName].Api/ ├── Controllers/ # 控制器 ├── Program.cs # 入口 └── appsettings.json # 配置 ``` --- ## 服务通信 ### 1. 同步通信 - **HTTP/REST** - 服务间同步调用 - **gRPC** - 高性能内部通信(可选) - 通过 API 网关统一入口 ### 2. 异步通信(事件驱动) - **RabbitMQ** - 消息队列 - 发布/订阅模式 - 事件类型: - `UserCreatedEvent` - `OrderCreatedEvent` - `OrderStatusChangedEvent` - `PaymentCompletedEvent` - `ProductStockUpdatedEvent` - `NotificationSentEvent` ### 3. 服务发现 - **Consul** - 服务注册与发现 - 健康检查 - 负载均衡 ### 4. 分布式事务 - **Saga 模式** - 最终一致性 - **补偿事务** - 失败回滚 --- ## 部署方式 ### 本地开发(Docker Compose) ```bash # 启动所有服务 docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f [service-name] # 停止所有服务 docker-compose down ``` ### Kubernetes 部署 ```bash # 部署到 K8s kubectl apply -f deploy/k8s/ # 查看 Pod kubectl get pods -n microservice # 查看服务 kubectl get svc -n microservice ``` ### 端口映射 | 服务 | 外部端口 | 内部端口 | 说明 | |------|---------|---------|------| | API Gateway | 5000 | 80 | 网关入口 | | Identity Service | 5001 | 80 | 身份认证 | | Order Service | 5002 | 80 | 订单服务 | | Product Service | 5003 | 80 | 产品服务 | | Payment Service | 5004 | 80 | 支付服务 | | Notification Service | 5005 | 80 | 通知服务 | | SQL Server | 1433 | 1433 | 数据库 | | RabbitMQ | 5672 / 15672 | 5672 / 15672 | 消息队列 / 管理界面 | | Redis | 6379 | 6379 | 缓存 | | Consul | 8500 | 8500 | 服务发现 | | Seq | 5341 | 80 | 日志 | --- ## 快速开始 ### 前置要求 - .NET 8 SDK - Docker Desktop - Visual Studio 2022 / Rider ### 本地运行 1. **克隆仓库** ```bash git clone [repository-url] cd Microservice.Architecture ``` 2. **启动基础设施** ```bash docker-compose up -d sqlserver rabbitmq redis consul seq ``` 3. **运行服务** ```bash # 方式一:使用 Visual Studio 打开 .sln 文件运行 # 方式二:命令行运行 dotnet run --project src/Services/IdentityService/Microservice.IdentityService.Api dotnet run --project src/Gateways/ApiGateway ``` 4. **访问地址** - API 网关: http://localhost:5000 - Consul UI: http://localhost:8500 - RabbitMQ UI: http://localhost:15672 (admin/admin123) - Seq: http://localhost:5341 --- ## 许可证 MIT License