docs: add cluster architecture design with Mermaid diagrams

This commit is contained in:
langhuihui
2025-01-02 14:17:55 +08:00
parent f884cb8376
commit e2d81f5fa6

154
doc/cluster.md Normal file
View File

@@ -0,0 +1,154 @@
# Monibuca 集群架构设计
本文档描述了 Monibuca 的集群架构设计,包括推流负载均衡和拉流负载均衡的实现方案。
## 整体架构
```mermaid
graph TB
subgraph 负载均衡层
LB[负载均衡器/API网关]
end
subgraph 集群节点
N1[节点1]
N2[节点2]
N3[节点3]
end
subgraph 服务发现
Redis[(Redis/etcd)]
end
Client1[推流客户端] --> LB
Client2[拉流客户端] --> LB
LB --> N1
LB --> N2
LB --> N3
N1 <--> Redis
N2 <--> Redis
N3 <--> Redis
%% 节点间互通连接
N1 <-.流媒体同步.-> N2
N2 <-.流媒体同步.-> N3
N1 <-.流媒体同步.-> N3
```
## 节点间流媒体同步
```mermaid
sequenceDiagram
participant C as 拉流客户端
participant N2 as 节点2
participant R as Redis/etcd
participant N1 as 节点1(源流所在)
C->>N2: 请求拉流(Stream1)
N2->>R: 查询Stream1位置
R-->>N2: 返回Stream1在节点1
N2->>N1: 请求Stream1
N1-->>N2: 建立节点间流传输
Note over N1,N2: 使用高效的节点间传输协议
N2->>R: 注册Stream1副本信息
N2-->>C: 向客户端推送流
```
## 推流负载均衡
```mermaid
sequenceDiagram
participant P as 推流客户端
participant LB as 负载均衡器
participant R as Redis/etcd
participant N1 as 节点1
participant N2 as 节点2
P->>LB: 发起推流请求
LB->>R: 获取可用节点列表
R-->>LB: 返回节点信息
LB->>LB: 根据负载算法选择节点
LB-->>P: 返回推流节点地址
P->>N1: 建立推流连接
N1->>R: 注册流信息
```
## 拉流负载均衡
```mermaid
sequenceDiagram
participant C as 拉流客户端
participant LB as 负载均衡器
participant R as Redis/etcd
participant N1 as 源节点
participant N2 as 边缘节点
C->>LB: 发起拉流请求
LB->>R: 查询流信息
R-->>LB: 返回流所在节点
alt 就近节点已有流
LB-->>C: 返回就近节点地址
C->>N2: 建立拉流连接
else 需要回源
LB-->>C: 返回边缘节点地址
C->>N2: 建立拉流连接
N2->>N1: 回源拉流
N2->>R: 注册流信息
end
```
## 关键特性
1. **高可用性**
- 节点故障自动切换
- 无单点故障设计
- 服务自动发现
- 多节点流媒体冗余备份
2. **负载均衡策略**
- 基于节点负载的动态调度
- 就近接入原则
- 带宽占用均衡
- 考虑节点间流量成本
3. **扩展性**
- 支持水平扩展
- 动态添加删除节点
- 平滑扩容/缩容
- 节点间按需同步流
4. **监控和管理**
- 集群状态实时监控
- 流量统计和分析
- 节点健康检查
- 跨节点流媒体质量监控
## 实现考虑
1. **服务发现**
- 使用 Redis 或 etcd 存储集群节点信息
- 定期更新节点状态和负载信息
- 支持节点心跳检测
- 维护流媒体在各节点的分布信息
2. **负载均衡算法**
- 考虑 CPU 使用率
- 考虑内存使用情况
- 考虑带宽使用情况
- 考虑地理位置因素
- 考虑节点间网络质量
3. **容错机制**
- 节点故障自动摘除
- 流媒体自动切换
- 会话保持机制
- 节点间流媒体备份策略
4. **节点间通信**
- 高效的流媒体转发协议
- 节点间带宽优化
- 流媒体缓存策略
- 按需拉流和预加载策略
- QoS保证机制