在币圈交易所,Redis 集群的节点数量和内存大小通常根据交易所的规模、访问量、并发需求等因素来决定。一般来说,可以按照以下标准配置:
Redis 集群节点数量
- 小型交易所(日活 < 10万,QPS < 10k):通常 3-6 个节点,主从架构(每个主节点对应一个从节点),提供基本的高可用性和故障恢复能力。
- 中型交易所(日活 10万 - 100万,QPS 10k - 100k):通常 6-12 个节点,采用 3-6 个主节点 + 对应的从节点,分片存储,保障高并发性能。
- 大型交易所(日活 > 100万,QPS > 100k):通常 12-30 个节点,采用 5-15 个主节点 + 对应的从节点,甚至可能使用多集群架构(多个 Redis Cluster 组)。
Redis 部署架构
- 集群模式(Redis Cluster):使用哈希槽(16384 个)分片存储,主从架构提高可用性,推荐用于大规模交易所。
- 哨兵模式(Sentinel):适用于小规模交易所,提供主从切换和高可用性。
- 持久化策略:大部分交易所只使用 AOF (Append-Only File) + RDB 定期快照,避免因宕机丢失关键数据。
如果是超大型交易所(如 Binance、OKX),可能会有 几十个 Redis 集群,每个集群有 10+ 节点,每个节点 128GB-256GB,通过 分片 + 读写分离 进行扩展。
像 Gate.io 这种中大型加密货币交易所,Redis 集群的规模通常比较大,主要是为了支撑高并发的撮合交易、行情推送、用户资产查询等核心业务。
Gate.io 级别交易所的 Redis 集群规模
以 Gate.io 这种交易量较大的交易所为例,Redis 集群一般有 几十到上百个节点,部署方式主要依赖 Redis Cluster 或 多个独立的 Redis 组(按业务拆分)。
- 整体规模:
- 主从架构,通常 30~100 个节点。
- 不同业务可能有独立的 Redis 集群,例如:撮合、行情、用户资产等分别使用独立的 Redis 集群。
- 单个集群的 Redis 主节点通常不超过 16 个,因为 Redis Cluster 采用 16384 个槽位分片,分片太多会导致管理复杂度上升。
单个 Redis 节点的内存配置
- 单节点的内存大小通常在 128GB - 256GB 之间,少数高需求的场景可能用到 512GB(比如撮合引擎的缓存层)。
- 为什么不使用更大的内存?
- Redis 单线程处理,太大内存会影响 RDB、AOF 性能,数据快照和持久化会有卡顿风险。
- 推荐 128GB - 256GB 作为单节点的合理上限,然后通过 多分片 来扩展 Redis 集群。
Redis 在 Gate.io 交易所的主要应用场景
(1)撮合引擎缓存
- 交易所的核心是撮合引擎,每秒处理大量订单数据,Redis 主要用于缓存未成交订单。
- 可能采用 多级缓存:
- 一级缓存(本地内存,如 LRU Cache):撮合引擎直接操作。
- 二级缓存(Redis):存储未成交订单、盘口数据,提供快速读取能力。
- 三级缓存(数据库,如 MySQL、TiDB):持久化存储已成交订单。
- 撮合 Redis 可能是 一个独立的集群,使用高性能配置,比如:
- 16~32 个 Redis 节点(8~16 个主节点 + 对应从节点)。
- 256GB 内存 / 节点,数据量较大但不能影响撮合性能。
(2)行情数据缓存(K 线、深度数据)
- Redis 用于存储交易对的实时行情数据,例如 最近成交、盘口深度、K 线数据,然后推送给用户。
- WebSocket 订阅的数据源一般来源于 Redis,避免直接查询数据库。
- 可能使用 10~20 个 Redis 节点,以 128GB 内存为主,读写压力较大时可增加从节点进行读分流。
(3)用户资产快照
- 查询用户资产余额、冻结金额等,用于下单前校验。
- 由于用户资产变更频繁,可能采用 异步更新机制,Redis 作为缓存层,MySQL 作为最终存储。
- 可能使用 6~12 个 Redis 节点,128GB 内存/节点。
(4)风控、限流
- 监控用户的交易行为,防止恶意刷单、大额交易风险等。
- 主要采用 限流(Rate Limiting)、反作弊 逻辑,例如:
- 统计短时间内某用户的下单次数。
- 监控 IP、设备指纹等异常行为。
- 这里可能使用 5~10 个 Redis 节点,因数据量较小,单节点 64GB 内存 即可。
(5)订单状态缓存
- 订单状态变更前后,Redis 可能作为事务处理中间态缓存,避免数据库过载。
- 订单状态有时会通过 Redis Stream 或 Kafka 进行消息推送。
- 可能使用 8~16 个 Redis 节点,单节点 128GB 内存。
Redis 的持久化与高可用
- 持久化方式:
- 交易所通常不直接依赖 Redis 持久化,而是采用 数据库持久化 + Redis 高速缓存 方式。
- 但为了防止 Redis 数据丢失,仍可能采用 AOF(Append-Only File)+ RDB(定期快照),具体策略:
- 撮合相关 Redis 可能不开启 AOF(影响性能),而是定期从数据库加载数据。
- 行情数据可能采用 AOF + RDB 结合方式,确保在 Redis 宕机后可恢复。
- 高可用方案:
- Redis Cluster + 主从(Replication)+ Sentinel 监控。
- 多个数据中心部署,防止单机房故障影响 Redis。
- 冷热数据分离,热点数据优先存 Redis,历史数据存数据库或更低成本存储。
总体来看,Gate.io 这种交易所的 Redis 总体集群规模可能在 50~100 个节点,内存总容量 10TB 以上,通过 分片+高可用架构 保障交易高并发和稳定性。