节点在线、应用在线、配置在线使用令牌查询
|
# PUB-21 åˆ†å¸ƒå¼æ–‡ä»¶å˜å‚¨
> 版本:v1.0 | 日期:2026-07-15
> 对应需求:PUB-21 åˆ†å¸ƒå¼æ–‡ä»¶å˜å‚¨ï¼ˆç”¨äºŽé™„件管ç†ï¼‰
---
## 背景
在分布å¼éƒ¨ç½²åœºæ™¯ï¼Œåº”ç”¨éƒ¨ç½²å¤šå°æœåŠ¡å™¨å…±ç”¨æ•°æ®åº“ï¼Œæ–‡ä»¶ä¸Šä¼ åªå˜å‚¨åœ¨æŸä¸€å°æœåŠ¡å™¨æœ¬åœ°ï¼Œå…¶ä»–èŠ‚ç‚¹æ— æ³•èŽ·å–æ–‡ä»¶ã€‚引入 NAS/OSS ç‰é›†ä¸å˜å‚¨æ–¹æ¡ˆå¢žåŠ äº†éƒ¨ç½²ç»´æŠ¤æˆæœ¬ã€‚
## 解决方案
Stardust 实现了轻é‡çº§çš„**åˆ†å¸ƒå¼æ–‡ä»¶å˜å‚¨**方案,基于**写扩散**æž¶æž„ï¼Œé€šè¿‡äº‹ä»¶æ€»çº¿è‡ªåŠ¨åŒæ¥æ–‡ä»¶åˆ°æ‰€æœ‰èŠ‚ç‚¹ï¼Œæ— éœ€ä¾èµ–外部å˜å‚¨æœåŠ¡ã€‚
### æ ¸å¿ƒç‰¹æ€§
1. **æ— ä¸å¿ƒåŒ–å˜å‚¨**:æ¯ä¸ªèŠ‚ç‚¹éƒ½å˜å‚¨å®Œæ•´æ–‡ä»¶å‰¯æœ¬ï¼Œæ— 需 NAS/OSS
2. **写扩散架构**ï¼šæ–‡ä»¶ä¸Šä¼ åŽè‡ªåŠ¨å¹¿æ’到所有节点
3. **è‡ªåŠ¨åŒæ¥**ï¼šæ–°èŠ‚ç‚¹åŠ å…¥åŽè‡ªåŠ¨æ‹‰å–缺失文件
4. **故障自愈**:文件丢失时å¯å‘é›†ç¾¤è¯·æ±‚é‡æ–°åŒæ¥
5. **çµæ´»é…ç½®**:å¯é…置节点仅æä¾›æœåŠ¡æˆ–ä»…æ‹‰å–æ–‡ä»¶
### 架构设计
```
┌─────────────────────────────────────────────────────────────â”
│ 事件总线 (Redis) │
│ ┌──────────────────────┠┌────────────────────────┠│
│ │ IEventBus<NewFileInfo>│ │ IEventBus<FileRequest> │ │
│ └──────────────────────┘ └────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↑ ↓ ↑ ↓
┌──────┴────┠└────────┠┌────┴────┠└────────â”
│ 节点 A │ │ 节点 B │ │ 节点 C │ │ 节点 D │
│ /Uploads │ │ /Uploads│ │ /Uploads│ │ /Uploads│
└───────────┘ └─────────┘ └─────────┘ └─────────┘
↓ ↓ ↓ ↓
┌──────────────────────────────────────────────────────────â”
│ 共享数æ®åº“ (MySQL) │
│ Attachment 附件表 │
└──────────────────────────────────────────────────────────┘
```
### 工作æµç¨‹
**æ–‡ä»¶ä¸Šä¼ **:用户 → 节点A → ä¿å˜æ–‡ä»¶ → 写入附件表 → å‘布 NewFileInfo → 事件总线 → å…¶ä»–èŠ‚ç‚¹åŒæ¥
**文件自愈**:节点D访问文件 → 文件缺失 → å‘布 FileRequest → 事件总线 → 有文件的节点å“应 → 节点D下载ä¿å˜
**æ–°èŠ‚ç‚¹åŠ å…¥**:定时扫æé™„件表 → å‘现本地缺失文件 → é€ä¸ªå‘布 FileRequest → ä»ŽçŽ°æœ‰èŠ‚ç‚¹åŒæ¥
## 相关代ç
- `Stardust.Server/Services/FileStorageService.cs` — 文件å˜å‚¨æœåŠ¡
- `Stardust/Storages/` — å˜å‚¨æŽ¥å£ä¸Žå®žçް
|