# 平台服务部署
**本文档引用的文件**
- [PlatformManagementHttpApiHostModule.cs](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\PlatformManagementHttpApiHostModule.cs)
- [Program.cs](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\Program.cs)
- [appsettings.json](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\appsettings.json)
- [PlatformDbMigrationService.cs](file://aspnet-core\migrations\LY.MicroService.Platform.EntityFrameworkCore\PlatformDbMigrationService.cs)
- [PlatformDbMigratorHostedService.cs](file://aspnet-core\migrations\LY.MicroService.Platform.DbMigrator\PlatformDbMigratorHostedService.cs)
- [Tenant.cs](file://aspnet-core\modules\saas\LINGYUN.Abp.Saas.Domain\LINGYUN\Abp\Saas\Tenants\Tenant.cs)
- [TenantConnectionString.cs](file://aspnet-core\modules\saas\LINGYUN.Abp.Saas.Domain\LINGYUN\Abp\Saas\Tenants\TenantConnectionString.cs)
- [ITenantAppService.cs](file://aspnet-core\modules\saas\LINGYUN.Abp.Saas.Application.Contracts\LINGYUN\Abp\Saas\Tenants\ITenantAppService.cs)
- [TenantCreateDto.cs](file://aspnet-core\modules\saas\LINGYUN.Abp.Saas.Application.Contracts\LINGYUN\Abp\Saas\Tenants\Dto\TenantCreateDto.cs)
- [TenantConnectionStringSetInput.cs](file://aspnet-core\modules\saas\LINGYUN.Abp.Saas.Application.Contracts\LINGYUN\Abp\Saas\Tenants\Dto\TenantConnectionStringSetInput.cs)
- [TenantStore.cs](file://aspnet-core\modules\saas\LINGYUN.Abp.MultiTenancy.Saas\LINGYUN\Abp\MultiTenancy\Saas\TenantStore.cs)
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构概述](#架构概述)
5. [详细组件分析](#详细组件分析)
6. [依赖分析](#依赖分析)
7. [性能考虑](#性能考虑)
8. [故障排除指南](#故障排除指南)
9. [结论](#结论)
## 简介
本文档详细说明了平台服务的部署配置,涵盖多租户支持的数据库配置、租户初始化流程、平台级配置管理,以及与其他核心服务(如认证、用户管理)的集成配置。文档还提供了平台服务特有的部署考虑,包括租户数据隔离策略、跨租户通信配置、平台级事件总线集成,以及服务的高可用性配置和灾难恢复方案。
## 项目结构
平台服务位于 `aspnet-core` 目录下的 `modules/platform` 和 `services/LY.MicroService.PlatformManagement.HttpApi.Host` 中。服务的数据库迁移模块位于 `migrations/LY.MicroService.Platform.DbMigrator` 和 `migrations/LY.MicroService.Platform.EntityFrameworkCore`。平台服务的宿主模块是 `LY.MicroService.PlatformManagement.HttpApi.Host`,它集成了平台应用、实体框架核心、OSS管理、通知、身份管理等多个模块。
```mermaid
graph TB
subgraph "平台服务模块"
PlatformApp[平台应用模块]
PlatformDomain[平台领域模块]
PlatformEF[平台EF核心模块]
PlatformHttpApi[平台HTTP API模块]
end
subgraph "平台服务宿主"
Host[平台管理HTTP API宿主]
DbMigrator[平台数据库迁移器]
end
subgraph "核心依赖"
Saas[多租户模块]
Identity[身份管理模块]
Oss[OSS管理模块]
Notification[通知模块]
end
PlatformApp --> PlatformDomain
PlatformApp --> PlatformEF
PlatformApp --> PlatformHttpApi
Host --> PlatformApp
Host --> Saas
Host --> Identity
Host --> Oss
Host --> Notification
DbMigrator --> PlatformEF
DbMigrator --> Saas
```
**图源**
- [PlatformManagementHttpApiHostModule.cs](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\PlatformManagementHttpApiHostModule.cs)
- [LY.MicroService.Platform.EntityFrameworkCore.csproj](file://aspnet-core\migrations\LY.MicroService.Platform.EntityFrameworkCore\LY.MicroService.Platform.EntityFrameworkCore.csproj)
**本节来源**
- [PlatformManagementHttpApiHostModule.cs](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\PlatformManagementHttpApiHostModule.cs)
- [LY.MicroService.Platform.EntityFrameworkCore.csproj](file://aspnet-core\migrations\LY.MicroService.Platform.EntityFrameworkCore\LY.MicroService.Platform.EntityFrameworkCore.csproj)
## 核心组件
平台服务的核心组件包括平台应用模块、平台领域模块、平台HTTP API模块和平台实体框架核心模块。这些模块共同提供了平台级的功能,如配置管理、多租户支持、OSS管理、通知服务等。平台服务通过 `PlatformManagementHttpApiHost` 宿主模块启动,并集成了一系列中间件和第三方服务,如Serilog日志、CAP事件总线、SkyWalking监控等。
**本节来源**
- [PlatformManagementHttpApiHostModule.cs](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\PlatformManagementHttpApiHostModule.cs)
- [PlatformApplicationModule.cs](file://aspnet-core\modules\platform\LINGYUN.Platform.Application\PlatformApplicationModule.cs)
## 架构概述
平台服务采用微服务架构,基于ABP框架构建。服务通过 `PlatformManagementHttpApiHost` 模块启动,集成了多租户、身份认证、OSS管理、通知、日志、监控等多个功能模块。服务使用Entity Framework Core进行数据访问,支持MySQL、PostgreSQL等多种数据库。平台服务通过CAP事件总线与其他服务进行异步通信,确保系统的松耦合和高可用性。
```mermaid
graph TD
Client[客户端] --> Gateway[API网关]
Gateway --> Platform[平台服务]
Platform --> DB[(数据库)]
Platform --> Redis[(Redis)]
Platform --> Minio[(MinIO)]
Platform --> CAP[(CAP事件总线)]
Platform --> SkyWalking[(SkyWalking)]
Platform --> Elasticsearch[(Elasticsearch)]
CAP --> OtherServices[其他微服务]
SkyWalking --> Monitoring[监控系统]
Elasticsearch --> Logging[日志系统]
```
**图源**
- [PlatformManagementHttpApiHostModule.cs](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\PlatformManagementHttpApiHostModule.cs)
- [appsettings.json](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\appsettings.json)
## 详细组件分析
### 平台服务宿主模块分析
平台服务宿主模块 `PlatformManagementHttpApiHostModule` 是服务的入口点,负责配置和初始化所有依赖模块。模块通过 `DependsOn` 特性声明了对多个功能模块的依赖,包括多租户、身份管理、OSS管理、通知、日志、监控等。在 `ConfigureServices` 方法中,模块配置了虚拟文件系统、缓存、身份认证、跨域、Swagger等服务。
#### 对象导向组件
```mermaid
classDiagram
class PlatformManagementHttpApiHostModule {
+PreConfigureServices(context)
+ConfigureServices(context)
+OnPostApplicationInitialization(context)
+OnApplicationInitialization(context)
}
class AbpModule {
<>
}
PlatformManagementHttpApiHostModule --|> AbpModule : 继承
```
**图源**
- [PlatformManagementHttpApiHostModule.cs](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\PlatformManagementHttpApiHostModule.cs)
#### API/服务组件
```mermaid
sequenceDiagram
participant Client as "客户端"
participant Gateway as "API网关"
participant Platform as "平台服务"
participant DB as "数据库"
participant CAP as "CAP事件总线"
Client->>Gateway : HTTP请求
Gateway->>Platform : 转发请求
Platform->>Platform : 认证与授权
Platform->>DB : 数据访问
Platform->>CAP : 发布事件
CAP-->>Platform : 事件处理
Platform-->>Gateway : 响应
Gateway-->>Client : 返回结果
```
**图源**
- [PlatformManagementHttpApiHostModule.cs](file://aspnet-core\services\LY.MicroService.PlatformManagement.HttpApi.Host\PlatformManagementHttpApiHostModule.cs)
- [PlatformDbMigrationService.cs](file://aspnet-core\migrations\LY.MicroService.Platform.EntityFrameworkCore\PlatformDbMigrationService.cs)
### 多租户与数据库配置分析
平台服务通过ABP框架的多租户功能支持多租户架构。租户信息存储在 `Tenant` 实体中,每个租户可以配置独立的数据库连接字符串。租户的连接字符串通过 `TenantConnectionString` 实体管理,支持多个命名的连接字符串。
#### 对象导向组件
```mermaid
classDiagram
class Tenant {
+Guid Id
+string Name
+string NormalizedName
+bool IsActive
+DateTime? EnableTime
+DateTime? DisableTime
+Guid? EditionId
+Collection~TenantConnectionString~ ConnectionStrings
+SetDefaultConnectionString(connectionString)
+SetConnectionString(name, connectionString)
+FindConnectionString(name)
}
class TenantConnectionString {
+Guid TenantId
+string Name
+string Value
+SetValue(value)
}
Tenant "1" -- "0..*" TenantConnectionString : 包含
```
**图源**
- [Tenant.cs](file://aspnet-core\modules\saas\LINGYUN.Abp.Saas.Domain\LINGYUN\Abp\Saas\Tenants\Tenant.cs)
- [TenantConnectionString.cs](file://aspnet-core\modules\saas\LINGYUN.Abp.Saas.Domain\LINGYUN\Abp\Saas\Tenants\TenantConnectionString.cs)
#### 租户初始化流程
```mermaid
flowchart TD
Start([开始]) --> CheckTenant["检查租户是否存在"]
CheckTenant --> TenantExists{"租户存在?"}
TenantExists -->|否| CreateTenant["