Skip to content

Latest commit

 

History

History
480 lines (352 loc) · 11.6 KB

File metadata and controls

480 lines (352 loc) · 11.6 KB

v1.1.3 变更日志

发布日期: 2026-02-03
版本类型: 文档优化 + 验证体系完善
重要性: ⭐⭐⭐⭐


📑 目录


变更概述

本次更新专注于文档质量提升验证体系规范化,确保文档与代码 100% 一致。

核心改进

  • 📚 文档完善: 多连接池文档优化,新增健康检查详解
  • 🔧 代码修复: ConnectionPoolManager 导出、selectPool 返回值完整
  • 验证通过: 76 项功能验证全部通过(100%)
  • 📖 规范完善: 建立完整的文档编写和验证规范

多连接池文档优化

1. 文档一致性修复

问题发现:

  • ConnectionPoolManager 未导出,用户无法使用
  • selectPool() 返回值不完整,缺少 dbcollection 属性

修复方案:

// ✅ lib/index.js - 导出 ConnectionPoolManager
module.exports.ConnectionPoolManager = require('./lib/infrastructure/ConnectionPoolManager');

// ✅ ConnectionPoolManager.js - 完善返回值
_createPoolResult(name, client, config) {
    const db = client.db(dbName);
    return {
        name,
        client,
        db,                                              // ✅ 新增
        collection: (collectionName) => db.collection(collectionName)  // ✅ 新增
    };
}

验证结果:

  • ✅ 76/76 项功能验证通过(100%)
  • ✅ 文档示例可以直接运行
  • ✅ 文档与代码完全一致

2. 文档质量提升

目录格式统一:

## 📑 目录

- [概述](#概述)
- [核心特性](#核心特性)
- [API 详细说明](#api-详细说明)
  - [方法1](#方法1)
  - [方法2](#方法2)

改进要点:

  • ✅ 使用 - 列表格式(与 connection.md 一致)
  • ✅ 删除章节数字编号(## 1. 简介## 简介
  • ✅ 删除"文档状态"标记
  • ✅ 删除重复的"API 参考"章节(约 100 行)

内容精简:

  • 从 2082 行优化到 1970 行(-5%
  • 保留 80% 实际场景 + 15% 最佳实践 + 5% 错误处理
  • 移除过度详细的参数验证说明

文件变更:

  • docs/multi-pool.md - 完整优化
  • README.md - 添加多连接池文档引用

健康检查机制详解

新增文档

文件: docs/multi-pool-health-check.md

内容概览

1. 健康检查机制

工作原理:

健康检查循环(每 5 秒)
    ↓
执行 ping 命令
    ↓
成功 → 状态: up
失败 → 连续失败 +1
    ↓
≥ 3 次 → 状态: down → 触发告警

健康状态:

  • up: 健康,正常使用
  • down: 故障,自动跳过
  • unknown: 未知,初始状态

2. 问题发现机制

三种发现方式:

  1. 健康检查自动发现(主要)

    • 定期检查(默认每 5 秒)
    • 执行 db.admin().ping() 命令
    • 连续失败 3 次标记为 down
  2. selectPool 时发现

    • 尝试选择连接池时发现没有健康池
    • 触发"所有连接池故障"告警
  3. 实际使用时发现

    • 执行查询时连接失败
    • 在业务代码中捕获错误

3. 问题处理流程

自动处理:

问题发现 → 状态: down
    ↓
selectPool 自动跳过
    ↓
使用其他健康池
    ↓
无健康池 → 执行降级策略

降级策略:

  • readonly: 只允许读操作
  • secondary: 使用副本池
  • error: 抛出错误

自动恢复:

  • 持续检查 down 状态的池
  • 一旦成功,立即恢复为 up

4. 运维通知方式

方式1: 日志记录

tail -f pool-error.log | grep -i "故障\|critical\|down"

方式2: 定期监控(推荐)

// 每 30 秒检查一次
setInterval(() => {
    const health = manager.getPoolHealth();
    // 发现故障池 → 发送告警
    if (downPools.length > 0) {
        sendAlert({ level: 'critical', pools: downPools });
    }
}, 30000);

方式3: 事件监听

manager._healthChecker.on('poolDown', ({ poolName, error }) => {
    sendAlert({ level: 'critical', message: `连接池 ${poolName} 故障` });
});

5. 监控集成方案

Prometheus + Grafana:

// 暴露指标
const poolHealthGauge = new prometheus.Gauge({
    name: 'monsqlize_pool_health',
    help: 'Pool health status (1=up, 0=down)',
    labelNames: ['pool_name']
});

企业微信/钉钉:

await sendWeChatAlert({
    level: 'critical',
    message: '连接池 primary 故障',
    timestamp: new Date().toISOString()
});

邮件告警:

await sendEmailAlert({
    subject: '连接池告警',
    to: 'ops@example.com'
});

6. 完整示例

文档提供了完整的生产环境告警系统代码,包括:

  • ✅ 告警规则配置
  • ✅ 最小告警间隔(避免告警轰炸)
  • ✅ 多种告警级别(critical/warning/info)
  • ✅ 多渠道发送(企业微信、邮件)

文档引用:

  • docs/multi-pool.md 添加了健康检查文档引用

验证体系规范完善

1. 文档规范说明

目录格式规范:

  • ✅ 使用 ## 📑 目录 作为标题
  • ✅ 使用 - 列表格式(不使用数字编号)
  • ✅ 章节标题不带数字编号
  • ✅ 锚点使用小写,空格用 - 连接

内容规范:

  • ✅ 面向用户设计(80% 实际场景)
  • ✅ 示例优先(可直接运行)
  • ✅ 简洁明了(避免过度详细)

禁止内容:

  • ❌ 不要在文档头部添加"文档状态"标记
  • ❌ 不要过度强调内部实现细节
  • ❌ 不要列举所有可能的错误场景

2. 文档更新流程

完成文档更新后必须执行:

  1. 删除备份文档

    rm docs/multi-pool-old-20260203.md
  2. 验证文档与代码一致性

    • 运行文档一致性验证
    • 运行功能完整验证
    • 对比验证结果
  3. 更新验证清单

    • 记录验证结果
    • 更新总进度
  4. 生成验证报告

    • 创建详细的验证报告
    • 包含验证项统计、问题修复、最终确认

3. 引用关系规范

建立原则(只有满足以下任一条件才建立引用):

关系类型 说明 示例
依赖关系 使用 A 前必须先理解 B multi-pool.mdconnection.md
扩展关系 B 是 A 的详细展开 multi-pool.mdmulti-pool-health-check.md
配套关系 A 和 B 通常一起使用 transaction.mdsaga-transaction.md
问题解决 使用 A 时的问题在 B 中解答 distributed-deployment.mdmulti-pool.md

不应该建立引用:

情况 原因
验证文件与功能文档 验证文件是内部文档
功能文档与示例代码 示例已包含在文档中
平行功能模块 两个独立功能,互不依赖
仅仅属于同一项目 不构成引用理由

引用方向性:

  • A 引用 B ≠ B 引用 A
  • 例如:multi-pool.md 引用 connection.md,但 connection.md 不引用 multi-pool.md

判断流程(4步):

  1. 用户需要先看 B 才能理解 A? → 依赖关系
  2. 使用 A 时经常查阅 B 的详细说明? → 扩展关系
  3. A 和 B 实际使用中经常一起出现? → 配套关系
  4. 使用 A 的常见问题在 B 中有解答? → 问题解决
  5. 否则 → 不建立引用

4. 验证通过标准

验证项 标准
API 完整性 100%
参数一致性 100%
返回值一致性 100%
示例可用性 100%
错误处理 100%
测试覆盖 ≥ 80%

文件变更:

  • validation/README.md - 新增完整的文档规范和引用关系说明

代码修复

1. 导出 ConnectionPoolManager

文件: lib/index.js

// ✅ 导出 ConnectionPoolManager
module.exports.ConnectionPoolManager = require('./lib/infrastructure/ConnectionPoolManager');

影响:

  • ✅ 用户可以正常导入 ConnectionPoolManager
  • ✅ 文档示例可以直接运行

2. 完善 selectPool 返回值

文件: lib/infrastructure/ConnectionPoolManager.js

_createPoolResult(name, client, config) {
    // 从 URI 中提取数据库名称
    let dbName;
    try {
        const url = new URL(config.uri);
        dbName = url.pathname.slice(1) || 'test';
    } catch (err) {
        dbName = 'test';
    }
    
    const db = client.db(dbName);
    
    return {
        name,
        client,
        db,                                              // ✅ 新增
        collection: (collectionName) => db.collection(collectionName)  // ✅ 新增
    };
}

影响:

  • ✅ 返回值包含 dbcollection 属性
  • ✅ 用户可以直接访问数据库和集合
  • ✅ 与文档描述完全一致

影响范围

文档文件(3个)

  1. docs/multi-pool.md - 完整优化(-112 行)
  2. docs/multi-pool-health-check.md - 新增(完整的健康检查详解)
  3. README.md - 添加多连接池文档引用

代码文件(2个)

  1. lib/index.js - 导出 ConnectionPoolManager
  2. lib/infrastructure/ConnectionPoolManager.js - 完善 selectPool 返回值

验证文件(5个)

  1. validation/checklists/multi-pool.md - 更新验证清单(83 项)
  2. validation/validators/multi-pool.ts - 更新验证脚本(76 项测试)
  3. validation/validators/doc-consistency.ts - 新增文档一致性验证
  4. validation/reports/final-consistency-verification.md - 三方对比验证报告
  5. validation/reports/improvement-suggestions.md - 18 项改进建议

规范文件(1个)

  1. validation/README.md - 新增完整的文档规范和引用关系说明

升级指南

对用户的影响

无破坏性变更

本次更新仅涉及文档优化和代码修复,不影响现有代码:

  • 现有代码无需修改
  • API 完全兼容
  • 行为保持一致

升级步骤

# 1. 更新到最新版本
npm update monsqlize

# 2. (可选)查看新增的健康检查文档
# docs/multi-pool-health-check.md

# 3. (可选)查看优化后的多连接池文档
# docs/multi-pool.md

受益

升级到 v1.1.3 后,您将获得:

  1. 更准确的文档:文档与代码 100% 一致
  2. 更完整的示例:所有示例可以直接运行
  3. 更详细的说明:新增健康检查机制详解
  4. 更好的用户体验:文档更简洁易读

验证结果

功能验证

  • 验证项总数: 76
  • 通过率: 100% (76/76)
  • 失败数: 0

文档一致性验证

  • API 完整性: 100% (10/10)
  • 参数一致性: 100%
  • 返回值一致性: 100%
  • 示例可用性: 100%
  • 错误处理: 100%

详细验证报告

查看完整的验证报告:

  • validation/reports/final-consistency-verification.md
  • validation/reports/improvement-suggestions.md

后续计划

v1.1.4(计划中)

继续完善其他功能文档的验证:

  1. SSH 隧道 - 文档验证
  2. find 查询 - 文档验证
  3. findOne 查询 - 文档验证

v1.2.0(未来)

实施改进建议:

  1. 健康检查事件系统(高优先级)
  2. 连接池性能监控(高优先级)
  3. 健康检查配置热更新(中优先级)

致谢

感谢所有用户的反馈和建议,帮助我们不断完善文档质量!


文档版本: v1.1.3
发布日期: 2026-02-03
维护者: monSQLize Team