Files
ken.li 3525aee49e feat: 新增中间件文档和内部通讯技能
新增中间件相关文档包括 RocketMQ、Nacos、PowerJob 的部署指南和故障分析文档,完善 Keepalived 和 MySQL 的文档内容。新增内部通讯技能模板和示例文件,包括 3P更新、公司通讯、FAQ回答等格式指南。优化服务文档结构,补充 FIX 引擎高可用架构说明。新增中间件综合指南,详细说明高可用部署方案和灾备转换原理。

新增 RocketMQ 5.3.2 集群部署文档,包含 Controller 模式详解和详细配置说明。新增 Nacos 和 PowerJob 部署文档,补充服务依赖和关键配置。更新 MySQL 故障分析文档,优化复制冲突解决流程。新增内部通讯技能模板文件,规范公司内部通讯格式。

docs: 补充服务文档和中间件 TODO 列表

新增 g3fo-exchange-fix-engine-service 服务文档,详细说明服务职责和关键配置。新增中间件 TODO 列表,跟踪待补充的文档内容。更新 Keepalived 部署文档,新增主库抢占前置检查脚本和配置说明。优化中间件文档结构,补充常见问题和性能优化建议。

style: 统一文档格式和代码块样式

统一所有文档的代码块格式和标题层级。优化表格显示样式,增强可读性。规范环境变量和配置项的显示方式。调整文档结构,确保逻辑清晰。修复部分拼写错误和格式问题。

chore: 新增 LICENSE 文件

新增内部通讯技能的 Apache 2.0 LICENSE 文件。补充文档版权信息。更新文件头部的元数据描述。规范文件命名和目录结构。
2026-01-23 17:15:16 +08:00

374 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 中间件高可用部署综合指南
## 1. 文档概述
本指南基于两台高性能服务器加一台低配置服务器的组合方案,详细介绍各中间件的核心功能、高可用部署方案以及灾备转换的基本原理。所有中间件均采用容器化部署,确保部署一致性和可维护性。
## 2. 部署架构总览
### 2.1 节点配置
| 节点类型 | 数量 | 配置 | 角色分配 |
| ------------ | ---- | --------------------- | ------------------------------------ |
| 高性能服务器 | 2 | CPU/内存/存储配置较高 | 核心业务处理节点,部署所有中间件服务 |
| 低配置服务器 | 1 | CPU/内存/存储配置较低 | 仅参与选举和监控,不部署核心业务服务 |
### 2.2 整体架构图
```mermaid
graph TB
%% 机器 A
subgraph Srv_A [高性能服务器 A: .230]
direction TB
KA[Keepalived M]
AppA[业务应用集群]
subgraph MW_A [中间件/数据库]
MA[(MySQL M1)]
RA[Redis Master]
RMA[RocketMQ Broker M]
end
subgraph Cluster_Comp_A [集群仲裁/管理 A]
RS1[Redis Sentinel 1]
RNC1[RMQ NS/Controller 1]
NA[Nacos/PowerJob]
end
end
%% 机器 B
subgraph Srv_B [高性能服务器 B: .200]
direction TB
KB[Keepalived B]
AppB[业务应用集群]
subgraph MW_B [中间件/数据库]
MB[(MySQL M2)]
RB[Redis Slave]
RMB[RocketMQ Broker S]
end
subgraph Cluster_Comp_B [集群仲裁/管理 B]
RS2[Redis Sentinel 2]
RNC2[RMQ NS/Controller 2]
NB[Nacos/PowerJob]
end
end
%% 机器 C
subgraph Srv_C [仲裁服务器 C: .110]
KC[Keepalived Arbiter]
RS3[Redis Sentinel 3]
RNC3[RMQ NS/Controller 3]
end
%% VIP 逻辑
VIP((Virtual IP: .233))
KA -.->|管理| VIP
KB -.->|管理| VIP
%% 核心访问流
AppA & AppB ==> VIP
VIP ==> MA & MB
%% 跨机数据同步
MA <==>|双主复制| MB
RA --->|主从同步| RB
RMA <==>|同步| RMB
NA <==>|同步| NB
%% 集群内部协调 (逻辑表示)
RS1 --- RS2 --- RS3
RNC1 --- RNC2 --- RNC3
%% 监控选主关系 (虚线)
RS1 & RS2 & RS3 -.->|监控/选主| RA & RB
RNC1 & RNC2 & RNC3 -.->|路由/选主| RMA & RMB
%% 样式
classDef server fill:#f0f5ff,stroke:#2f54eb;
classDef arbiter fill:#fff1f0,stroke:#ff4d4f;
classDef vip fill:#f6ffed,stroke:#52c41a,stroke-width:2px;
class Srv_A,Srv_B server;
class Srv_C arbiter;
class VIP vip;
```
## 3. 中间件详细说明
### 3.1 Keepalived
#### 3.1.1 核心功能
- 实现VIP(虚拟IP)的高可用管理
- 自动故障检测和VIP切换
- 防止脑裂问题
#### 3.1.2 高可用部署方案
- **部署模式**:三节点集群(2台高性能服务器+1台低配置服务器)
- **角色分配**:
- 高性能服务器A:Master节点(基础优先级110)
- 高性能服务器B:Backup节点(基础优先级100)
- 低配置服务器C:Arbiter节点(基础优先级40,仅参与选举)
- **核心配置**:
- VIP:192.168.3.233
- 采用单播通信方式
- 集成MySQL健康检查脚本
#### 3.1.3 灾备转换原理
- **优先级规则**:VIP归属由有效优先级决定,基础优先级A > B > C
- **故障检测**:通过脚本检测MySQL端口,故障时优先级扣减50
- **脑裂防护**:Arbiter节点确保至少2/3节点正常才能进行VIP切换
- **切换流程**:
1. 检测到Master节点故障
2. Backup节点发起选举
3. 获得Arbiter节点支持后成为新Master
4. 绑定VIP并提供服务
### 3.2 MySQL
#### 3.2.1 核心功能
- 关系型数据库服务
- 数据持久化存储
- 双主双向复制
#### 3.2.2 高可用部署方案
- **部署模式**:双主(Source-Source)复制集群
- **节点分配**:仅部署在2台高性能服务器上
- **核心配置**:
- GTID + AUTO_POSITION:自动定位同步位点
- ROW模式binlog:保证复制一致性
- 自增键隔离:A节点生成奇数主键,B节点生成偶数主键
- 持久化配置:innodb_flush_log_at_trx_commit=1,sync_binlog=1
#### 3.2.3 灾备转换原理
- **双主同步**:两台节点互为主从,实时同步数据
- **故障检测**:通过Keepalived的健康检查脚本检测MySQL端口
- **切换流程**:
1. Keepalived检测到MySQL故障
2. 降低对应节点优先级
3. VIP自动切换到健康节点
4. 应用通过VIP继续访问MySQL服务
### 3.3 Redis
#### 3.3.1 核心功能
- 分布式缓存服务
- 数据持久化存储
- 高可用故障转移
#### 3.3.2 高可用部署方案
- **部署模式**:Redis Sentinel集群
- **节点分配**:
- 2台高性能服务器:部署Redis主从节点
- 3台服务器:均部署Sentinel节点
- **核心配置**:
- 主从复制:1主1从
- Sentinel集群:3节点,quorum=2
- 持久化:AOF + RDB混合模式
- 密码认证:统一密码管理
#### 3.3.3 灾备转换原理
- **健康检测**:Sentinel节点定期检查Redis主从状态
- **故障判定**:当quorum个Sentinel节点判定主节点故障时触发故障转移
- **切换流程**:
1. Sentinel集群选举Leader
2. Leader选择最优Slave节点
3. 将Slave提升为新Master
4. 配置其他Slave指向新Master
5. 通知客户端更新主节点信息
### 3.4 Nacos
#### 3.4.1 核心功能
- 服务注册与发现
- 配置中心
- Dubbo注册中心
#### 3.4.2 高可用部署方案
- **部署模式**:集群部署
- **节点分配**:部署在2台高性能服务器上,配置1个虚拟节点
- **核心配置**:
- 数据库存储:MySQL持久化元数据
- 集群规模:3节点(2实际+1虚拟)
- 数据同步:基于数据库的共享存储
#### 3.4.3 灾备转换原理
- **无状态设计**:所有节点共享同一MySQL数据库
- **故障恢复**:节点故障后,其他节点自动接管服务
- **客户端容错**:客户端配置多个Nacos地址,自动切换
### 3.5 PowerJob
#### 3.5.1 核心功能
- 分布式任务调度
- 多样化任务类型支持
- 任务管理与监控
#### 3.5.2 高可用部署方案
- **部署模式**:集群部署
- **节点分配**:部署在2台高性能服务器上
- **核心配置**:
- 数据库存储:MySQL持久化任务信息
- 集群通信:基于Akka实现节点间通信
- 负载均衡:任务自动分配到可用节点
#### 3.5.3 灾备转换原理
- **无状态设计**:所有节点共享同一MySQL数据库
- **任务容错**:节点故障时,任务自动转移到其他节点执行
- **客户端配置**:Worker节点配置多个Server地址,自动切换
### 3.6 RocketMQ
#### 3.6.1 核心功能
- 分布式消息中间件
- 高吞吐、高可用
- 支持事务消息、延时消息
- 自动主从切换
#### 3.6.2 高可用部署方案
- **部署模式**:Controller模式集群
- **节点分配**:
- 3台服务器:均部署NameServer和Controller
- 2台高性能服务器:部署Broker(1主1从)
- **核心配置**:
- Controller集群:基于jRaft实现,3节点
- Broker配置:ASYNC_MASTER + SLAVE
- 持久化:异步刷盘
#### 3.6.3 灾备转换原理
- **Controller集群**:基于Raft协议选举Leader,管理Broker元数据
- **自动主从切换**:
1. Controller监控Master Broker状态
2. 检测到故障后,选举最优Slave
3. 将Slave提升为新Master
4. 更新NameServer中的路由信息
5. 客户端自动获取新的Master地址
## 4. 灾备转换流程
### 4.1 单节点故障场景
```mermaid
graph TB
%% 故障离线节点 (服务器 A)
subgraph Srv_A [高性能服务器 A: .230 <br/> 🔴 全机离线]
direction TB
KA[Keepalived - 离线]
AppA[业务应用 - 离线]
subgraph MW_A [中间件/数据库]
MA[(MySQL - 离线)]
RA[Redis - 离线]
RMA[RMQ Broker - 离线]
end
end
%% 故障转移后的活动节点 (服务器 B)
subgraph Srv_B [高性能服务器 B: .200 <br/> 🟢 承载全量业务]
direction TB
KB[Keepalived - Master]
AppB[业务应用 - 正常]
subgraph MW_B [中间件/数据库]
MB[(MySQL - Master)]
RB[Redis - NEW Master]
RMB[RMQ Broker - NEW Master]
end
subgraph Cluster_B [管理节点]
NB[Nacos/PowerJob]
RNCB[RMQ NS/Controller]
end
end
%% 仲裁节点 (服务器 C)
subgraph Srv_C [仲裁服务器 C: .110]
KC[Keepalived Arbiter]
RS[Redis Sentinel 集群]
RNCC[RMQ NS/Controller]
end
%% VIP 与流量重定向
VIP((Virtual IP: .233))
KB ==>|接管| VIP
AppB ==>|内部访问| VIP
VIP ==>|读写| MB
%% 故障转移逻辑 (核心连线)
RS -.->|1.检测到故障| RA
RS ==>|2.提升为主| RB
RNCC -.->|1.检测到故障| RMA
RNCC ==>|2.提升为主| RMB
%% 样式定义
classDef offline fill:#f5f5f5,stroke:#d9d9d9,stroke-dasharray: 5 5,color:#bfbfbf;
classDef active fill:#e6f7ff,stroke:#1890ff,stroke-width:2px;
classDef arbiter fill:#fff1f0,stroke:#ff4d4f;
classDef highlight fill:#f6ffed,stroke:#52c41a,stroke-width:2px;
class Srv_A,KA,AppA,MA,RA,RMA offline;
class Srv_B,KB,AppB,MB,RB,RMB,NB,RNCB active;
class Srv_C,KC,RS,RNCC arbiter;
class VIP highlight;
```
### 4.2 灾备转换步骤
1. **故障检测**:各中间件自身的健康检查机制或外部监控系统检测到节点故障
2. **优先级调整**:Keepalived根据健康状态调整节点优先级
3. **VIP切换**:Keepalived将VIP绑定到优先级最高的健康节点
4. **服务接管**:
- Redis:Sentinel选举新Master
- RocketMQ:Controller自动将Slave提升为Master
- MySQL:应用通过VIP访问健康节点
- Nacos/PowerJob:健康节点自动接管服务
5. **客户端切换**:客户端通过配置的多节点地址自动连接到健康节点
## 5. 监控与维护
### 5.1 监控指标
| 中间件 | 核心监控指标 |
| ---------- | ------------------------------------------ |
| Keepalived | VIP状态、节点优先级、健康检查结果 |
| MySQL | 主从复制状态、连接数、查询响应时间、慢查询 |
| Redis | 主从状态、内存使用率、命中率、连接数 |
| Nacos | 服务注册数量、配置更新次数、节点状态 |
| PowerJob | 任务执行成功率、任务堆积量、节点状态 |
| RocketMQ | 消息堆积量、发送/消费TPS、Broker状态 |
### 5.2 维护建议
1. **定期备份**:定期备份数据库、配置文件和重要数据
2. **日志管理**:配置日志轮转,定期清理过期日志
3. **安全加固**:
- 开启访问认证
- 配置防火墙规则
- 定期更新密码
4. **性能优化**:
- 根据负载调整资源配置
- 优化中间件参数
- 定期进行性能测试
5. **灾备演练**:定期进行故障模拟演练,验证灾备转换流程
## 6. 总结
本指南基于两台高性能服务器加一台低配置服务器的组合方案,详细介绍了各中间件的高可用部署方案和灾备转换原理。通过合理的角色分配和架构设计,实现了资源的优化利用和系统的高可用性。
各中间件均采用容器化部署,通过Keepalived实现VIP的统一管理,确保了系统在节点故障时能够自动进行灾备转换,保障业务的连续性和可用性。
建议在实际部署过程中,根据业务需求和资源情况,对各中间件的配置进行适当调整和优化,以达到最佳的性能和可用性。