ModuForge 核心模块 (moduforge-core)
moduforge-core 是 ModuForge 生态系统的核心运行时框架,提供了完整的编辑器运行时环境。该模块基于 Rust 构建,采用异步架构设计,支持插件系统、事件驱动、中间件机制等现代化特性。
🏗️ 架构概述
ModuForge 核心采用分层架构设计,每个组件都有明确的职责:
┌─────────────────────────────────────────────────────────────┐
│ ForgeRuntime │
│ (同步运行时 + 基础功能) │
├─────────────────────────────────────────────────────────────┤
│ ForgeAsyncRuntime │
│ (异步运行时 + 高性能处理) │
├─────────────────────────────────────────────────────────────┤
│ AsyncProcessor │
│ (异步任务处理 + 队列管理) │
├─────────────────────────────────────────────────────────────┤
│ EventBus │
│ (事件系统 + 发布订阅) │
├─────────────────────────────────────────────────────────────┤
│ ExtensionManager │
│ (扩展管理 + 插件系统) │
├─────────────────────────────────────────────────────────────┤
│ HistoryManager │
│ (历史管理 + 撤销重做) │
└─────────────────────────────────────────────────────────────┘
🧩 核心组件
1. ForgeRuntime
文件: src/runtime.rs
职责: 同步运行时核心实现
- 状态管理: 文档状态和事务处理
- 事件系统: 事件分发和处理
- 中间件支持: 前置和后置中间件链
- 历史记录: 撤销/重做功能
- 扩展管理: 插件和扩展集成
核心方法:
2. ForgeAsyncRuntime
文件: src/async_runtime.rs
职责: 异步运行时高性能实现
- 性能监控: 可配置的性能指标收集
- 超时保护: 全面的超时机制
- 流式处理: 基于 FlowEngine 的高性能处理
- 异步优化: 优化的异步任务处理
性能配置:
3. AsyncProcessor
文件: src/async_processor.rs
职责: 异步任务处理器
- 任务队列: 高性能任务队列管理
- 并发控制: 可配置的并发任务数
- 重试机制: 自动重试和错误恢复
- 统计监控: 详细的性能统计信息
任务状态:
处理器配置:
4. EventBus
文件: src/event.rs
职责: 事件总线系统
- 发布订阅: 异步事件分发
- 并发处理: 并发事件处理器
- 优雅关闭: 支持优雅关闭和信号处理
- 事件类型: 支持多种事件类型
事件类型:
事件处理器:
5. ExtensionManager
文件: src/extension_manager.rs
职责: 扩展和插件管理
- 插件加载: 动态插件加载和卸载
- 模式解析: 自动解析扩展模式
- 资源管理: 全局资源管理器集成
- 性能监控: 扩展加载性能指标
扩展类型:
6. HistoryManager
文件: src/history_manager.rs
职责: 历史记录管理
- 状态快照: 状态历史记录
- 撤销重做: 完整的撤销/重做功能
- 历史限制: 可配置的历史记录限制
- 时间旅行: 支持历史状态跳转
历史操作:
7. Middleware
文件: src/middleware.rs
职责: 中间件系统
- 前置处理: 事务分发前的处理
- 后置处理: 事务分发后的处理
- 中间件栈: 可组合的中间件栈
- 超时保护: 中间件执行超时保护
中间件特征:
🔧 技术栈
核心依赖
[]
# 异步运行时
= { = "1.36.0", = ["full"] }
= { = true }
= { = true }
# 并发和同步
= { = true }
= { = true }
# 序列化
= { = true }
= { = true }
# 错误处理
= { = true }
= { = true }
# 异步特征
= { = true }
= { = true }
# 性能监控
= "0.22.0"
# ModuForge 生态系统
= { = "0.4.12", = "../model" }
= { = "0.4.12", = "../state" }
= { = "0.4.12", = "../transform" }
核心技术
- 异步编程: 基于 Tokio 的高性能异步运行时
- 事件驱动: 发布-订阅模式的事件系统
- 插件架构: 可扩展的插件和扩展系统
- 中间件模式: 可组合的中间件处理链
- 性能监控: 全面的性能指标收集
🚀 快速开始
1. 最简单的用法(推荐)
use ForgeRuntimeBuilder;
async
2. 指定运行时类型
use ;
use Arc;
async
3. 完全自定义配置
use ;
async
4. 运行时类型匹配
use ;
async
5. 事件系统使用
use ;
use Arc;
;
async
中间件使用
use ;
use ;
use Arc;
// 创建中间件栈
let mut middleware_stack = new;
middleware_stack.add;
// 注意:中间件栈目前需要通过 RuntimeOptions 配置
// 未来版本会添加到 ForgeRuntimeBuilder
📊 性能监控
内置指标
// 任务处理指标
pub const TASKS_SUBMITTED_TOTAL: &str = "core.tasks.submitted.total";
pub const TASKS_PROCESSED_TOTAL: &str = "core.tasks.processed.total";
pub const TASK_PROCESSING_DURATION_SECONDS: &str = "core.task.processing.duration.seconds";
// 编辑器指标
pub const EDITOR_CREATION_DURATION_SECONDS: &str = "core.editor.creation.duration.seconds";
pub const COMMANDS_EXECUTED_TOTAL: &str = "core.commands.executed.total";
pub const TRANSACTIONS_DISPATCHED_TOTAL: &str = "core.transactions.dispatched.total";
// 中间件指标
pub const MIDDLEWARE_EXECUTION_DURATION_SECONDS: &str = "core.middleware.execution.duration.seconds";
// 扩展指标
pub const EXTENSIONS_LOADED_TOTAL: &str = "core.extensions.loaded.total";
pub const PLUGINS_LOADED_TOTAL: &str = "core.plugins.loaded.total";
性能配置建议
// 开发环境配置
let dev_config = PerformanceConfig ;
// 生产环境配置
let prod_config = PerformanceConfig ;
🔍 开发调试工具
tokio-console 实时监控
tokio-console 是一个强大的实时异步任务监控工具,可以帮助你:
- 📊 实时查看所有异步任务的状态
- ⏱️ 监控任务执行时间和唤醒次数
- 🐛 检测任务阻塞和性能问题
- 📈 查看资源使用情况
安装 tokio-console 客户端
启用 tokio-console 监控
1. 在 Cargo.toml 中启用 feature:
[]
= { = "0.6.2", = ["dev-console"] }
2. 在代码中初始化:
use tokio_console;
async
3. 运行应用:
# 启用 dev-console feature 运行
4. 在另一个终端连接监控:
# 连接到默认地址 127.0.0.1:6669
tokio-console 界面操作
在 tokio-console 界面中:
t- 切换到任务视图(查看所有异步任务)r- 切换到资源视图(查看锁、通道等资源)h- 显示帮助信息q- 退出↑/↓- 上下选择任务Enter- 查看任务详情
运行示例
# 运行 tokio-console 演示示例
# 在另一个终端运行
自定义配置
注意事项
⚠️ 重要提示:
- tokio-console 会有一定的性能开销,不要在生产环境启用
- 与其他 tracing 初始化函数(如
init_tracing)互斥,只能选择一个 - 需要 tokio 启用
tracingfeature(已在dev-consolefeature 中自动启用)
对比:tokio-console vs tracing-chrome
| 特性 | tokio-console | tracing-chrome |
|---|---|---|
| 实时监控 | ✅ 是 | ❌ 否(事后分析) |
| 需要注解 | ❌ 否(自动) | ✅ 是(#[instrument]) |
| 监控范围 | 所有 tokio 任务 | 标记的函数 |
| 任务状态 | ✅ 显示 | ❌ 不显示 |
| 性能开销 | 较低 | 中等 |
| 使用场景 | 实时调试、监控 | 详细性能分析 |
| 可视化 | TUI 界面 | Chrome DevTools |
推荐使用场景
- 开发调试时:使用
tokio-console实时监控任务状态 - 性能分析时:使用
tracing-chrome或tracing-perfetto进行详细分析 - 生产环境:不启用任何追踪 feature,保持零开销
其他追踪工具
除了 tokio-console,还支持以下追踪工具:
use ;
// Chrome Tracing(性能分析)
let _guard = init_tracing?;
// Perfetto(高级性能分析)
let _guard = init_tracing?;
详见 开发追踪指南。
🔒 错误处理
错误类型
错误恢复策略
- 自动重试: 任务处理器支持自动重试机制
- 超时保护: 全面的超时保护防止死锁
- 优雅降级: 部分功能失效时的降级处理
- 错误传播: 完整的错误传播链
🧪 测试
测试覆盖
# 运行所有测试
# 运行特定模块测试
# 运行性能测试
测试示例
async
async
async
🔧 配置选项
运行时配置
use ;
// 完整配置示例
let runtime = new
// 运行时类型
.runtime_type
// 环境配置
.environment
// 内容和扩展
.content
.extension
.extension
// 性能配置
.max_concurrent_tasks
.queue_size
.enable_monitoring
.middleware_timeout_ms
// 历史配置
.history_limit
// 事件处理
.event_handler
// Schema 配置
.schema_path
.build
.await?;
处理器配置
// 高性能配置
let config = ProcessorConfig ;
📈 性能优化
内存管理
- 智能清理: 自动清理不活跃的资源
- 对象池: 复用昂贵的对象实例
- 内存映射: 高效的内存使用模式
并发优化
- 异步 I/O: 基于 Tokio 的高性能异步处理
- 任务调度: 智能的任务调度算法
- 锁优化: 最小化锁竞争
缓存策略
- LRU 缓存: 最近最少使用的缓存策略
- 预加载: 智能的预加载机制
- 缓存失效: 高效的缓存失效策略
📚 相关文档
🤝 贡献指南
欢迎贡献代码!请确保:
- 遵循 Rust 编码规范
- 添加适当的测试
- 更新相关文档
- 通过所有 CI 检查
- 性能测试通过
📄 许可证
本项目采用 MIT 许可证 - 详见 LICENSE 文件。