Files
we-mp-rss/docs/CASCADE_IMPLEMENTATION.md
2026-02-26 16:57:43 +08:00

11 KiB
Raw Permalink Blame History

WeRSS 级联系统实现总结

实现完成情况

已实现的功能模块

1. 数据模型层

  • core/models/cascade_node.py - 级联节点和同步日志模型
  • CascadeNode 表 - 存储父子节点信息、认证凭证
  • CascadeSyncLog 表 - 记录同步操作日志

2. 核心业务层

  • core/cascade.py - 级联管理器和客户端
    • CascadeManager - 节点管理、凭证生成、验证
    • CascadeClient - HTTP客户端,用于子节点与父节点通信

3. API接口层

  • apis/cascade.py - 完整的RESTful API
    • 节点管理接口(CRUD
    • 凭证生成接口
    • 连接测试接口
    • 数据同步接口(feeds, message-tasks
    • 结果上报接口
    • 心跳接口
    • 同步日志查询接口

4. 认证系统

  • core/auth.py 增强支持级联节点AK认证
    • authenticate_cascade_node() - 节点凭证验证
    • get_current_user_or_ak() - 支持三级认证(级联AK、用户AK、JWT)

5. 同步服务

  • jobs/cascade_sync.py - 子节点自动同步服务
    • CascadeSyncService - 同步逻辑封装
    • 自动拉取公众号和消息任务
    • 自动上报任务执行结果
    • 定期心跳机制
    • 异步任务执行

6. 集成与配置

  • web.py - 注册级联API路由
  • main.py - 启动时集成同步服务
  • config.example.yaml - 添加级联配置项
  • jobs/mps.py - 任务执行后自动上报结果

7. 工具脚本

  • jobs/cascade_init.py - 初始化和管理工具
    • 数据库表初始化
    • 节点创建
    • 凭证生成
    • 节点列表查询
    • 配置检查

8. 文档

  • docs/CASCADE_GUIDE.md - 完整使用指南
  • docs/CASCADE_QUICKSTART.md - 快速开始指南
  • docs/CASCADE_README.md - 系统说明文档

架构设计

┌─────────────────────────────────────────────────────────────┐
│                      父节点 (Parent)                      │
├─────────────────────────────────────────────────────────────┤
│                                                         │
│  ┌──────────────┐  ┌──────────────┐  ┌─────────────┐ │
│  │  管理API     │  │  同步API     │  │  数据库      │ │
│  │  (Cascade)   │  │  (Sync)      │  │  (DB)        │ │
│  └──────────────┘  └──────────────┘  └─────────────┘ │
│         │                  │                  │          │
│         └──────────────────┼──────────────────┘          │
│                            ▼                           │
│                   ┌──────────────┐                     │
│                   │  认证系统   │                     │
│                   │  (Auth)      │                     │
│                   └──────────────┘                     │
└─────────────────────────────────────────────────────────────┘
                            │
                            │ HTTPS + AK/SK
                            │
┌─────────────────────────────────────────────────────────────┐
│                      子节点 (Child)                       │
├─────────────────────────────────────────────────────────────┤
│                                                         │
│  ┌──────────────┐  ┌──────────────┐  ┌─────────────┐ │
│  │  同步服务     │  │  任务执行    │  │  本地数据库  │ │
│  │  (Sync)      │  │  (Jobs)      │  │  (Local DB)  │ │
│  └──────────────┘  └──────────────┘  └─────────────┘ │
│         │                  │                  │          │
│         └──────────────────┼──────────────────┘          │
│                            ▼                           │
│                   ┌──────────────┐                     │
│                   │  HTTP客户端  │                     │
│                   │  (Client)    │                     │
│                   └──────────────┘                     │
└─────────────────────────────────────────────────────────────┘

数据流程

1. 初始化流程

父节点启动 → 创建子节点 → 生成AK/SK凭证 → 提供给子节点
子节点启动 → 配置父节点连接 → 验证凭证 → 开始同步

2. 数据同步流程

子节点 → 定时触发 → 发送心跳 → 拉取公众号 → 拉取任务
父节点 → 验证凭证 → 返回数据 → 记录日志

3. 任务执行与上报

子节点 → 执行任务 → 采集文章 → 推送通知 → 上报结果 → 父节点记录

认证机制

三级认证体系

请求 → Authorization头
       ↓
    级联AK认证 (authenticate_cascade_node)
       ↓ (失败)
    用户AK认证 (authenticate_ak)
       ↓ (失败)
    JWT认证 (JWT token)

AK/SK格式

  • 级联节点: AK-SK CN{32位}:CS{32位}
  • 用户AK: AK-SK WK{32位}:SK{32位}

API端点汇总

父节点管理接口

端点 方法 认证 说明
/cascade/nodes POST JWT 创建节点
/cascade/nodes GET JWT 获取节点列表
/cascade/nodes/{id} GET JWT 获取节点详情
/cascade/nodes/{id} PUT JWT 更新节点
/cascade/nodes/{id} DELETE JWT 删除节点
/cascade/nodes/{id}/credentials POST JWT 生成凭证
/cascade/nodes/{id}/test-connection POST JWT 测试连接
/cascade/sync-logs GET JWT 查看同步日志

子节点调用接口

端点 方法 认证 说明
/cascade/feeds GET 级联AK 获取公众号
/cascade/message-tasks GET 级联AK 获取任务
/cascade/report-result POST 级联AK 上报结果
/cascade/heartbeat POST 级联AK 发送心跳

配置项说明

cascade:
  enabled: true                # 启用级联
  node_type: "child"          # 节点类型: parent/child
  parent_api_url: "http://parent:8001"
  api_key: "CNxxxxxxxx"
  api_secret: "CSxxxxxxxx"
  sync_interval: 300          # 同步间隔(秒)
  heartbeat_interval: 60       # 心跳间隔(秒)

文件清单

新增文件

core/models/cascade_node.py    # 数据模型
core/cascade.py               # 核心管理器
apis/cascade.py               # API接口
jobs/cascade_sync.py          # 同步服务
jobs/cascade_init.py          # 初始化工具
docs/CASCADE_GUIDE.md        # 使用指南
docs/CASCADE_QUICKSTART.md   # 快速开始
docs/CASCADE_README.md       # 系统说明
docs/CASCADE_IMPLEMENTATION.md # 实现总结(本文件)

修改文件

web.py                       # 注册级联路由
main.py                      # 集成同步服务
core/auth.py                 # 增强认证
core/models/__init__.py      # 导入新模型
jobs/mps.py                 # 添加结果上报
config.example.yaml          # 添加配置项

使用示例

父节点初始化

# 1. 初始化数据库
python jobs/cascade_init.py --init

# 2. 创建子节点
python jobs/cascade_init.py --child "子节点1" --api-url "http://child:8001"

# 3. 保存输出的凭证
# api_key: CNxxxxxxxx
# api_secret: CSxxxxxxxx

子节点部署

# config.yaml
cascade:
  enabled: true
  node_type: child
  parent_api_url: "http://parent:8001"
  api_key: "CNxxxxxxxx"
  api_secret: "CSxxxxxxxx"
python main.py

测试验证

功能测试清单

  • 父节点创建子节点
  • 子节点凭证生成
  • 子节点连接父节点
  • 公众号数据同步
  • 消息任务同步
  • 任务执行结果上报
  • 心跳保持
  • 同步日志记录
  • 节点状态更新
  • API认证验证

API测试示例

# 1. 创建子节点
curl -X POST http://localhost:8001/api/v1/cascade/nodes \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"node_type":1,"name":"子节点1"}'

# 2. 生成凭证
curl -X POST http://localhost:8001/api/v1/cascade/nodes/{id}/credentials \
  -H "Authorization: Bearer TOKEN"

# 3. 子节点拉取数据
curl http://localhost:8001/api/v1/cascade/feeds \
  -H "Authorization: AK-SK CNxxx:CSxxx"

# 4. 查看同步日志
curl http://localhost:8001/api/v1/cascade/sync-logs \
  -H "Authorization: Bearer TOKEN"

性能优化建议

  1. 同步间隔: 根据业务量调整,建议300-600秒
  2. 并发控制: 限制子节点数量,避免父节点过载
  3. 数据压缩: 大量数据时启用gzip压缩
  4. 缓存策略: 父节点可启用缓存减少数据库查询
  5. 连接池: httpx已内置连接池,无需额外配置

安全建议

  1. HTTPS: 生产环境必须使用HTTPS
  2. 凭证轮换: 定期更换子节点凭证
  3. 访问控制: 限制父节点API的访问IP
  4. 日志审计: 记录所有敏感操作
  5. 加密存储: Secret Key使用SHA256哈希

故障排查

子节点连接失败

  1. 检查父节点是否运行
  2. 确认网络连通性
  3. 验证凭证正确性
  4. 查看防火墙规则

同步失败

  1. 查看同步日志
  2. 检查父节点数据
  3. 验证配置参数
  4. 确认数据库权限

性能问题

  1. 增加同步间隔
  2. 优化数据库查询
  3. 考虑增加父节点实例
  4. 使用连接池

后续扩展

计划功能

  • 任务自动分发到子节点
  • 子节点负载均衡
  • 数据增量同步
  • 断点续传支持
  • 节点动态注册
  • 数据压缩传输
  • WebSocket实时推送
  • 监控仪表盘

总结

WeRSS 级联系统已完整实现,支持:

完整的父子节点架构 灵活的AK/SK认证体系 自动化数据同步 任务执行结果上报 完善的日志监控 丰富的API接口 详细的文档支持

系统已可直接用于生产环境,支持横向扩展和多地域部署。