mirror of
https://github.com/rachelos/we-mp-rss.git
synced 2026-08-29 01:41:39 +08:00
11 KiB
11 KiB
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"
性能优化建议
- 同步间隔: 根据业务量调整,建议300-600秒
- 并发控制: 限制子节点数量,避免父节点过载
- 数据压缩: 大量数据时启用gzip压缩
- 缓存策略: 父节点可启用缓存减少数据库查询
- 连接池: httpx已内置连接池,无需额外配置
安全建议
- HTTPS: 生产环境必须使用HTTPS
- 凭证轮换: 定期更换子节点凭证
- 访问控制: 限制父节点API的访问IP
- 日志审计: 记录所有敏感操作
- 加密存储: Secret Key使用SHA256哈希
故障排查
子节点连接失败
- 检查父节点是否运行
- 确认网络连通性
- 验证凭证正确性
- 查看防火墙规则
同步失败
- 查看同步日志
- 检查父节点数据
- 验证配置参数
- 确认数据库权限
性能问题
- 增加同步间隔
- 优化数据库查询
- 考虑增加父节点实例
- 使用连接池
后续扩展
计划功能
- 任务自动分发到子节点
- 子节点负载均衡
- 数据增量同步
- 断点续传支持
- 节点动态注册
- 数据压缩传输
- WebSocket实时推送
- 监控仪表盘
总结
WeRSS 级联系统已完整实现,支持:
✅ 完整的父子节点架构 ✅ 灵活的AK/SK认证体系 ✅ 自动化数据同步 ✅ 任务执行结果上报 ✅ 完善的日志监控 ✅ 丰富的API接口 ✅ 详细的文档支持
系统已可直接用于生产环境,支持横向扩展和多地域部署。