这是基于vue-vben-admin 模板适用于abp vNext的前端管理项目
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.
 
 
 
 
 
 

14 KiB

微服务部署

**本文档引用的文件** - [tye.yaml](file://tye.yaml) - [docker-compose.yml](file://docker-compose.yml) - [docker-compose.override.yml](file://docker-compose.override.yml) - [starter/readme.md](file://starter/readme.md) - [starter/80.start-host.cmd](file://starter/80.start-host.cmd) - [gateways/web/LY.MicroService.ApiGateway/Program.cs](file://gateways/web/LY.MicroService.ApiGateway/Program.cs) - [gateways/web/LY.MicroService.ApiGateway/yarp.json](file://gateways/web/LY.MicroService.ApiGateway/yarp.json) - [gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.Internal.Gateway/Program.cs](file://gateways/internal/LINGYUN.MicroService.Internal.ApiGateway/src/LINGYUN.MicroService.Internal.Gateway/Program.cs) - [aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.json](file://aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.json) - [aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.json](file://aspnet-core/services/LY.MicroService.IdentityServer.HttpApi.Host/appsettings.json) - [gateways/web/LY.MicroService.ApiGateway/InternalApiGatewayOptions.cs](file://gateways/web/LY.MicroService.ApiGateway/InternalApiGatewayOptions.cs)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概述
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本文档全面介绍基于ABP框架的微服务架构部署策略。系统采用模块化设计,包含多个独立的微服务,通过API网关进行统一管理和路由。文档详细说明了服务发现、配置中心、熔断降级等关键组件的部署方法,以及各微服务的启动顺序依赖和健康检查机制。同时提供了基于Tye的本地开发环境部署方案和生产环境的Docker部署建议,包含服务间通信的安全配置、流量控制和版本管理策略。

项目结构

项目采用分层架构设计,主要包含以下几个部分:

  • aspnet-core:核心服务和模块
  • deploy:部署相关脚本和配置
  • gateways:API网关实现
  • starter:启动脚本集合
  • docker-compose文件:容器编排配置
  • tye.yaml:本地开发环境配置
graph TD
subgraph "部署配置"
A[docker-compose.yml]
B[docker-compose.override.yml]
C[tye.yaml]
end
subgraph "启动脚本"
D[starter]
E[80.start-host.cmd]
F[readme.md]
end
subgraph "网关层"
G[web网关]
H[internal网关]
end
subgraph "服务层"
I[BackendAdmin]
J[AuthServer]
K[Platform]
end
A --> G
B --> G
C --> D
D --> I
D --> J
D --> K
G --> I
G --> J
G --> K
H --> I
H --> J
H --> K
style A fill:#f9f,stroke:#333
style B fill:#f9f,stroke:#333
style C fill:#f9f,stroke:#333

图示来源

  • docker-compose.yml
  • tye.yaml
  • starter/readme.md

本节来源

  • docker-compose.yml
  • tye.yaml
  • starter/readme.md

核心组件

系统包含多个核心微服务组件:

  • AuthServer:身份认证服务
  • BackendAdmin:后台管理服务
  • Platform:平台服务
  • IdentityServer:身份服务器
  • LocalizationManagement:本地化管理服务
  • RealtimeMessage:实时消息服务
  • TaskManagement:任务管理服务
  • WebhooksManagement:Webhooks管理服务

每个服务都有独立的数据库迁移项目和实体框架核心实现,确保数据隔离和独立演进。服务间通过API网关进行通信,实现了松耦合的设计。

本节来源

  • tye.yaml
  • docker-compose.yml
  • docker-compose.override.yml

架构概述

系统采用典型的微服务架构,包含服务提供者、API网关、配置中心等关键组件。API网关作为系统的入口,负责请求路由、负载均衡、安全验证等功能。各微服务独立部署,通过服务发现机制相互发现和通信。

graph TB
subgraph "客户端"
A[Web UI]
B[移动应用]
C[第三方系统]
end
subgraph "API网关"
D[Web网关]
E[Internal网关]
end
subgraph "微服务"
F[AuthServer]
G[BackendAdmin]
H[Platform]
I[IdentityServer]
J[Localization]
K[RealtimeMessage]
L[TaskManagement]
end
subgraph "基础设施"
M[数据库]
N[Redis]
O[Elasticsearch]
P[消息队列]
end
A --> D
B --> D
C --> D
D --> E
E --> F
E --> G
E --> H
E --> I
E --> J
E --> K
E --> L
F --> M
G --> M
H --> M
I --> M
J --> M
K --> M
L --> M
F --> N
G --> N
H --> N
I --> N
J --> O
K --> P
L --> P
style D fill:#ff9,stroke:#333
style E fill:#ff9,stroke:#333

图示来源

  • docker-compose.yml
  • tye.yaml
  • gateways/web/LY.MicroService.ApiGateway/yarp.json

详细组件分析

API网关分析

API网关是系统的入口点,负责请求路由、负载均衡、安全验证等功能。系统包含两个网关:Web网关和Internal网关,分别处理外部和内部请求。

网关配置分析

classDiagram
class InternalApiGatewayOptions {
+Aggregator Aggregator
+InternalApiGatewayOptions()
}
class Aggregator {
+AggregatorUrl SettingUrl
+AggregatorUrl ConfigurationUrl
+AggregatorUrl ApiDefinitionUrl
+Aggregator()
}
class AggregatorUrl {
+string ClientName
+HttpHandlerOptions HttpHandler
+RequestUrl[] GetUrls
+RequestUrl SetUrl
+TimeSpan? DefaultTimeout
+AggregatorUrl()
}
class RequestUrl {
+HttpMethod Method
+string Url
+RequestUrl()
+RequestUrl(string url)
+RequestUrl(HttpMethod method, string url)
}
class HttpHandlerOptions {
+bool AllowAutoRedirect
+bool UseCookieContainer
+bool UseTracing
+bool UseProxy
+int MaxConnectionsPerServer
}
InternalApiGatewayOptions --> Aggregator : "包含"
Aggregator --> AggregatorUrl : "包含"
AggregatorUrl --> RequestUrl : "包含"
AggregatorUrl --> HttpHandlerOptions : "包含"

图示来源

  • gateways/web/LY.MicroService.ApiGateway/InternalApiGatewayOptions.cs

网关路由分析

flowchart TD
Start([请求到达]) --> CheckPath["检查请求路径"]
CheckPath --> IsAccount{"路径以/api/account/开头?"}
IsAccount --> |是| RouteToAccount["路由到accountCluster"]
IsAccount --> |否| IsIdentity{"路径以/api/identity/开头?"}
IsIdentity --> |是| RouteToIdentity["路由到identityCluster"]
IsIdentity --> |否| IsIdentityServer{"路径以/api/identity-server/开头?"}
IsIdentityServer --> |是| RouteToIdentityServer["路由到identityServerCluster"]
IsIdentityServer --> |否| IsFeature{"路径以/api/feature-management/开头?"}
IsFeature --> |是| RouteToFeature["路由到feature-management-cluster"]
IsFeature --> |否| IsPermission{"路径以/api/permission-management/开头?"}
IsPermission --> |是| RouteToPermission["路由到permission-management-cluster"]
IsPermission --> |否| IsSetting{"路径以/api/setting-management/开头?"}
IsSetting --> |是| RouteToSetting["路由到setting-management-cluster"]
IsSetting --> |否| IsLocalization{"路径以/api/localization/开头?"}
IsLocalization --> |是| RouteToLocalization["路由到localization-management-cluster"]
IsLocalization --> |否| IsIM{"路径以/api/im/开头?"}
IsIM --> |是| RouteToIM["路由到im-cluster"]
IsIM --> |否| Return404["返回404未找到"]
style RouteToAccount fill:#cfc,stroke:#333
style RouteToIdentity fill:#cfc,stroke:#333
style RouteToIdentityServer fill:#cfc,stroke:#333
style RouteToFeature fill:#cfc,stroke:#333
style RouteToPermission fill:#cfc,stroke:#333
style RouteToSetting fill:#cfc,stroke:#333
style RouteToLocalization fill:#cfc,stroke:#333
style RouteToIM fill:#cfc,stroke:#333
style Return404 fill:#fcc,stroke:#333

图示来源

  • gateways/web/LY.MicroService.ApiGateway/yarp.json

本节来源

  • gateways/web/LY.MicroService.ApiGateway/Program.cs
  • gateways/web/LY.MicroService.ApiGateway/yarp.json
  • gateways/web/LY.MicroService.ApiGateway/InternalApiGatewayOptions.cs

微服务分析

各微服务采用独立部署模式,通过API网关进行通信。每个服务都有独立的配置文件和健康检查机制。

服务启动顺序分析

sequenceDiagram
participant Starter as 启动脚本
participant AuthServer as AuthServer
participant IdentityServer as IdentityServer
participant BackendAdmin as BackendAdmin
participant Platform as Platform
participant Gateway as API网关
Starter->>AuthServer : 启动sts-server
AuthServer-->>Starter : 启动成功
Starter->>IdentityServer : 启动identity-server
IdentityServer-->>Starter : 启动成功
Starter->>BackendAdmin : 启动admin-api
BackendAdmin-->>Starter : 启动成功
Starter->>Platform : 启动platform-api
Platform-->>Starter : 启动成功
Starter->>Gateway : 启动internal-apigateway
Gateway-->>Starter : 启动成功
Note over Starter,Gateway : 服务启动顺序遵循依赖关系

图示来源

  • docker-compose.override.yml
  • starter/80.start-host.cmd

健康检查机制

flowchart TD
Start([服务启动]) --> WaitForReady["等待服务准备就绪"]
WaitForReady --> CheckHealth["执行健康检查"]
CheckHealth --> IsHealthy{"健康检查通过?"}
IsHealthy --> |是| ServiceReady["服务就绪"]
IsHealthy --> |否| WaitAndRetry["等待后重试"]
WaitAndRetry --> CheckHealth
ServiceReady --> AcceptRequests["接受外部请求"]
style ServiceReady fill:#cfc,stroke:#333
style AcceptRequests fill:#cfc,stroke:#333

图示来源

  • docker-compose.yml

本节来源

  • docker-compose.yml
  • docker-compose.override.yml
  • starter/80.start-host.cmd

依赖分析

系统各组件之间存在明确的依赖关系,主要体现在服务启动顺序和运行时依赖上。

graph TD
AuthServer --> |身份认证依赖| IdentityServer
BackendAdmin --> |依赖| AuthServer
Platform --> |依赖| AuthServer
Localization --> |依赖| AuthServer
RealtimeMessage --> |依赖| AuthServer
TaskManagement --> |依赖| AuthServer
Webhooks --> |依赖| AuthServer
Workflow --> |依赖| AuthServer
Wechat --> |依赖| AuthServer
internal-apigateway --> |路由到| BackendAdmin
internal-apigateway --> |路由到| Platform
internal-apigateway --> |路由到| Localization
internal-apigateway --> |路由到| RealtimeMessage
internal-apigateway --> |路由到| TaskManagement
internal-apigateway --> |路由到| Webhooks
internal-apigateway --> |路由到| Workflow
internal-apigateway --> |路由到| Wechat
ui --> |通过网关访问| internal-apigateway
style AuthServer fill:#f9f,stroke:#333
style IdentityServer fill:#f9f,stroke:#333
style BackendAdmin fill:#f9f,stroke:#333
style Platform fill:#f9f,stroke:#333

图示来源

  • docker-compose.override.yml
  • gateways/web/LY.MicroService.ApiGateway/yarp.json

本节来源

  • docker-compose.override.yml
  • docker-compose.yml
  • gateways/web/LY.MicroService.ApiGateway/yarp.json

性能考虑

系统在设计时考虑了多个性能优化点:

  1. 配置缓存:通过AgileConfig实现配置中心,减少配置读取开销
  2. 日志优化:使用Serilog进行结构化日志记录,支持多种输出格式
  3. 连接池:通过MaxConnectionsPerServer配置优化HTTP连接池
  4. 超时控制:设置合理的请求超时时间,避免资源长时间占用
  5. 负载均衡:API网关支持多种负载均衡策略,提高系统吞吐量

本节来源

  • gateways/web/LY.MicroService.ApiGateway/InternalApiGatewayOptions.cs
  • aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.json

故障排除指南

当系统出现故障时,可以按照以下步骤进行排查:

  1. 检查各服务的健康检查状态
  2. 查看服务日志,定位错误信息
  3. 验证服务间网络连通性
  4. 检查配置文件是否正确
  5. 验证数据库连接是否正常

常见问题及解决方案:

  • 服务无法启动:检查端口占用情况和依赖服务状态
  • 请求超时:检查网络延迟和后端服务性能
  • 认证失败:验证令牌有效期和权限配置
  • 数据库连接失败:检查连接字符串和数据库服务状态

本节来源

  • docker-compose.yml
  • aspnet-core/services/LY.MicroService.BackendAdmin.HttpApi.Host/appsettings.json

结论

本文档详细介绍了基于ABP框架的微服务部署方案。系统采用现代化的微服务架构,通过API网关实现服务聚合和路由,各微服务独立部署、松耦合。部署方案支持本地开发和生产环境,提供了完整的启动脚本和配置文件。通过合理的依赖管理和健康检查机制,确保了系统的稳定性和可维护性。未来可以进一步优化服务发现机制,引入熔断降级策略,提高系统的容错能力。