# DMS **Repository Path**: dunimd/dms ## Basic Information - **Project Name**: DMS - **Description**: DMS (Dunimd Middleware Service) — 一个高性能的 Rust 中间件框架,统一后端基础设施。专为企业级规模构建,具有模块化架构、内置可观测性和分布式系统支持。 - **Primary Language**: Rust - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://gitee.com/dunimd/dms - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-11-21 - **Last Updated**: 2025-12-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: Dunimd, DMS ## README
# DMS (Dunimd Middleware Service) [English](README.md) | 简体中文 BiliBili Gitee Crates.io **DMS (Dunimd Middleware Service)** — 一个高性能的 Rust 中间件框架,统一后端基础设施。专为企业级规模构建,具有模块化架构、内置可观测性和分布式系统支持。

🏗️ 核心架构

### 📐 模块化设计 DMS 采用高度模块化的架构,拥有 12 个核心模块,支持按需组合和无缝扩展:
| 模块 | 描述 | |:--------|:-------------| | **auth** | 认证与授权(JWT、OAuth、权限) | | **cache** | 多后端缓存抽象(内存、Redis、混合) | | **config** | 多源配置管理与热重载 | | **core** | 运行时、错误处理和服务上下文 | | **device** | 设备控制、发现和智能调度 | | **fs** | 安全的文件系统操作和管理 | | **gateway** | API 网关,支持负载均衡、限流和熔断 | | **hooks** | 生命周期事件钩子(启动、关闭等) | | **log** | 结构化日志与追踪上下文集成 | | **observability** | 指标、追踪和 Grafana 集成 | | **queue** | 分布式队列抽象(Kafka、RabbitMQ、Redis、内存) | | **service_mesh** | 服务发现、健康检查和流量管理 |
### 🚀 核心特性 #### 🔍 分布式追踪 - W3C 追踪上下文标准实现 - 全链路 TraceID/SpanID 传播 - 业务上下文的数据传输 - 多语言兼容性(Java、Go、Python) #### 📊 企业级可观测性 - 原生 Prometheus 指标导出 - Counter、Gauge、Histogram、Summary 指标类型 - 开箱即用的 Grafana 仪表板集成 - 实时性能统计与分位数计算 - 全栈指标(CPU、内存、I/O、网络) #### 🤖 智能设备管理 - 自动发现和注册 - 高效的资源池管理 - 基于策略的调度与优先级支持 - 动态负载均衡 - 完整的设备生命周期管理 #### 📝 结构化日志 - 支持 JSON 和文本格式 - 可配置的采样率 - 智能日志轮转 - 自动包含追踪上下文 - DEBUG/INFO/WARN/ERROR 日志级别 #### ⚙️ 灵活配置 - 多源加载(文件、环境变量、运行时) - 热配置更新 - 模块化架构支持按需组合 - 基于插件的扩展机制 #### 📁 安全文件系统 - 统一项目根目录管理 - 原子文件操作 - 分类目录结构 - JSON 数据持久化 - 安全路径处理

🛠️ 安装与环境

### 前置要求 - **Rust**: 1.65+ (2021 版本) - **Cargo**: 1.65+ - **平台**: Linux、macOS、Windows ### 快速设置 将 DMS 添加到您项目的 `Cargo.toml`: ```toml [dependencies] dms_core = { git = "https://gitee.com/dunimd/dms" } ``` 或者使用 cargo add: ```bash cargo add dms-core --git https://gitee.com/dunimd/dms ```

⚡ 快速开始

### 核心 API 使用 ```rust use dms_core::prelude::*; #[tokio::main] async fn main() -> DMSResult<()> { // 构建服务运行时 let app = DMSAppBuilder::new() .with_config("config.yaml")? .with_logging(DMSLogConfig::default())? .with_observability(DMSObservabilityConfig::default())? .build()?; // 运行业务逻辑 app.run(|ctx: &DMSServiceContext| async move { ctx.logger().info("service", "DMS service started")?; // 您的业务代码在这里 Ok(()) }).await } ``` ### 可观测性示例 ```rust use dms_core::observability::*; #[traced(name = "user_service")] async fn get_user(ctx: &DMSServiceContext, user_id: u64) -> DMSResult { // 自动记录追踪和指标 let user = fetch_user_from_db(user_id).await?; Ok(user) } ```

🔧 配置

### 配置示例 ```yaml # config.yaml service: name: "my-service" version: "1.0.0" logging: level: "info" format: "json" file_enabled: true console_enabled: true observability: metrics_enabled: true tracing_enabled: true prometheus_port: 9090 resource: providers: ["cpu", "gpu", "memory"] scheduling_policy: "priority_based" ``` ### 配置源 DMS 支持多种配置源,按优先级排序(从高到低): 1. 运行时参数 2. 环境变量(以 `DMS_` 为前缀) 3. 配置文件(YAML、TOML、JSON) 4. 默认值

🧪 开发与测试

### 运行测试 ```bash # 运行所有测试 cargo test # 运行特定测试模块 cargo test cache # 带详细输出运行 cargo test -- --nocapture ```

❓ 常见问题

**Q: 如何添加新模块?** A: 实现 `DMSModule` trait 并通过 `DMSAppBuilder::with_module` 注册。 **Q: 如何配置日志级别?** A: 在配置文件中设置 `logging.level`,支持 DEBUG/INFO/WARN/ERROR 级别。 **Q: 如何启用指标导出?** A: 在配置文件中设置 `observability.metrics_enabled: true` 并配置 `prometheus_port`。 **Q: 如何扩展配置源?** A: 实现自定义配置加载器并用 `DMSConfigManager` 注册。 **Q: 如何处理异步任务?** A: 使用 `DMSAppBuilder::with_async_module` 添加异步模块,框架自动处理异步生命周期。

🌏 社区与引用

- 欢迎提交 Issues 和 PRs! - Gitee: https://gitee.com/dunimd/dms.git
## 📄 许可证与开源协议 ### 🏛️ 项目许可证

Apache License 2.0

本项目使用 **Apache License 2.0** 开源协议,详见 [LICENSE](LICENSE) 文件。 ### 📋 依赖包开源协议 本项目使用的开源包及其协议信息: ### 依赖许可证
| 📦 包 | 📜 许可证 | |:-----------|:-----------| | serde | Apache 2.0 | | tokio | MIT | | prometheus | Apache 2.0 | | redis | MIT | | hyper | MIT | | lapin | Apache 2.0 | | futures | MIT | | yaml-rust | MIT | | toml | MIT | | etcd-client | MIT | | sysinfo | MIT |