You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
9.1 KiB
9.1 KiB
单体部署
**本文档中引用的文件** - [appsettings.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.json) - [appsettings.Development.json](file://aspnet-core/services/LY.MicroService.Applications.Single/appsettings.Development.json) - [migrate-database.bat](file://aspnet-core/migrate-database.bat) - [migrate-db-cmd.bat](file://aspnet-core/migrate-db-cmd.bat) - [start-http-api-host.bat](file://aspnet-core/start-http-api-host.bat) - [80.start-host.cmd](file://starter/80.start-host.cmd) - [deploy.ps1](file://deploy/deploy.ps1) - [docker-compose.yml](file://docker-compose.yml) - [docker-compose.override.yml](file://docker-compose.override.yml)目录
简介
本项目是一个基于 ABP 框架的后台管理系统,支持单体服务和微服务两种部署模式。本文档重点介绍单体服务的完整部署流程,包括应用程序的编译、打包、发布、配置管理、服务化部署以及性能调优等关键环节。系统采用 .NET 6 技术栈,结合 Vue Vben Admin 前端框架,实现了现代化的企业级应用架构。
项目结构
项目采用分层架构设计,主要分为以下几个部分:
graph TD
A[根目录] --> B[aspnet-core]
A --> C[deploy]
A --> D[gateways]
A --> E[starter]
A --> F[docker-compose.yml]
B --> B1[framework]
B --> B2[migrations]
B --> B3[modules]
B --> B4[services]
B2 --> B21[LY.MicroService.Applications.Single.DbMigrator]
B4 --> B41[LY.MicroService.Applications.Single]
B4 --> B42[LY.MicroService.AuthServer]
B4 --> B43[LY.MicroService.BackendAdmin.HttpApi.Host]
C --> C1[deploy.ps1]
D --> D1[web\LY.MicroService.ApiGateway]
E --> E1[80.start-host.cmd]
E --> E2[02.migrate-db.cmd]
图示来源
- docker-compose.yml
- aspnet-core
本节来源
- README.md
核心组件
系统的核心组件包括身份认证服务器、后台管理API主机、平台服务等。这些服务通过CAP(分布式事件总线)进行通信,并使用Elsa工作流引擎实现业务流程自动化。数据库采用MySQL,缓存使用Redis,消息队列使用RabbitMQ。所有服务共享同一套配置体系,通过appsettings.json及其环境变体进行配置管理。
本节来源
- appsettings.json
- appsettings.Development.json
架构概述
系统采用单体架构部署模式,所有微服务模块被打包为一个独立的应用程序运行。
graph LR
Client[客户端] --> Gateway[API网关]
Gateway --> Auth[身份认证服务]
Gateway --> Admin[后台管理服务]
Gateway --> Platform[平台服务]
Gateway --> Localization[本地化服务]
Auth --> DB[(MySQL)]
Admin --> DB
Platform --> DB
Localization --> DB
Auth --> Cache[(Redis)]
Admin --> Cache
Platform --> Cache
Auth --> MQ[(RabbitMQ)]
Admin --> MQ
Platform --> MQ
图示来源
- docker-compose.yml
- docker-compose.override.yml
详细组件分析
应用程序配置分析
系统使用ASP.NET Core的标准配置系统,支持多环境配置文件。
配置文件结构
classDiagram
class AppSettings {
+App App
+ConnectionStrings ConnectionStrings
+Serilog Serilog
+CAP CAP
+Redis Redis
+DistributedCache DistributedCache
+OpenIddict OpenIddict
+IdentityServer IdentityServer
}
class App {
+string Name
+string SslFile
+string SslPassword
}
class ConnectionStrings {
+string Default
}
class Serilog {
+MinimumLevel MinimumLevel
+string[] Enrich
+WriteTo[] WriteTo
}
AppSettings --> App : 包含
AppSettings --> ConnectionStrings : 包含
AppSettings --> Serilog : 包含
AppSettings --> CAP : 包含
AppSettings --> Redis : 包含
图示来源
- appsettings.json
- appsettings.Development.json
配置加载流程
flowchart TD
Start([启动应用]) --> LoadJson["加载 appsettings.json"]
LoadJson --> LoadEnv["加载 appsettings.{Environment}.json"]
LoadEnv --> LoadUserSecrets["加载用户机密 (开发环境)"]
LoadUserSecrets --> LoadEnvVars["加载环境变量"]
LoadEnvVars --> LoadCommandLine["加载命令行参数"]
LoadCommandLine --> UseConfig["使用最终配置"]
UseConfig --> End([应用运行])
本节来源
- appsettings.json
- appsettings.Development.json
部署流程分析
数据库迁移流程
sequenceDiagram
participant User as 开发者
participant Script as migrate-database.bat
participant Migrator as DbMigrator
User->>Script : 执行 migrate-database.bat
Script->>Script : 清屏并显示提示
loop 每个迁移器
Script->>Migrator : 调用 migrate-db-cmd.bat
Migrator->>Migrator : 执行 dotnet run --no-build
Migrator->>Script : 返回迁移结果
end
Script->>User : 显示完成信息
Script->>Script : 终止所有 dotnet 进程
图示来源
- migrate-database.bat
- migrate-db-cmd.bat
服务启动流程
flowchart TD
A[执行 80.start-host.cmd] --> B[设置延迟时间 stime]
B --> C{遍历所有 .bat 文件}
C --> D[启动每个服务脚本]
D --> E[等待 stime 秒]
E --> C
C --> F[所有服务启动完毕]
图示来源
- 80.start-host.cmd
- start-http-api-host.bat
依赖分析
系统依赖关系复杂,涉及多个外部组件和服务。
graph TD
A[LY.MicroService.Applications.Single] --> B[MySQL]
A --> C[Redis]
A --> D[RabbitMQ]
A --> E[Elasticsearch]
A --> F[CAP]
A --> G[Elsa]
A --> H[Quartz]
B --> I[数据库持久化]
C --> J[分布式缓存]
D --> K[消息队列]
E --> L[日志搜索]
F --> M[事件总线]
G --> N[工作流引擎]
H --> O[定时任务]
图示来源
- appsettings.Development.json
- docker-compose.yml
本节来源
- appsettings.Development.json
- docker-compose.yml
性能考虑
线程池配置
系统通过ASP.NET Core内置的线程池管理机制进行性能优化。建议在生产环境中根据服务器CPU核心数调整线程池大小:
{
"System": {
"Threading": {
"ThreadPool": {
"MinThreads": 100,
"MaxThreads": 200
}
}
}
}
内存限制设置
使用Docker部署时,应设置合理的内存限制:
services:
applications.single:
mem_limit: 2g
mem_reservation: 1g
请求队列管理
系统通过Serilog日志系统和CAP消息队列实现请求的异步处理和流量削峰:
flowchart LR
A[客户端请求] --> B{请求类型}
B --> |同步| C[直接处理]
B --> |异步| D[放入CAP消息队列]
D --> E[后台工作者处理]
E --> F[更新状态]
F --> G[通知客户端]
本节来源
- appsettings.json
- appsettings.Development.json
故障排除指南
常见问题及解决方案
-
数据库迁移失败
- 检查数据库连接字符串是否正确
- 确认数据库服务是否已启动
- 查看
Logs/Error-.log中的详细错误信息
-
服务无法启动
- 检查端口是否被占用
- 确认依赖服务(Redis、RabbitMQ)是否正常运行
- 查看控制台输出的错误信息
-
配置不生效
- 确认环境变量
ASPNETCORE_ENVIRONMENT设置正确 - 检查配置文件命名是否符合规范
- 验证配置项名称拼写是否正确
- 确认环境变量
本节来源
- README.md
- deploy.ps1
结论
本文档详细介绍了基于ABP框架的单体应用部署方案。通过合理的配置管理、自动化部署脚本和性能调优策略,可以实现系统的高效部署和稳定运行。建议在生产环境中使用Docker容器化部署,结合CI/CD流水线实现自动化发布,以提高部署效率和系统可靠性。