2. 环境总览:硬件资源规划、操作系统选型、网络拓扑设计、软件栈清单
本章从物理基础设施到软件组件,完整定义倒排索引缓存一致性闭环所需的运行环境。所有规划均面向生产级部署,兼顾单机验证与集群扩展能力。
2.1 硬件资源规划
集群采用 3 节点 + 1 管理节点 的最小高可用架构。各节点角色与硬件规格如下表所示:
| 节点角色 | CPU | 内存 | 磁盘 | 网络 | 数量 |
|---|---|---|---|---|---|
| 管理节点 | 4 核 (x86_64) | 16 GB | 200 GB SSD (系统 + 元数据) | 千兆双网卡 | 1 |
| 数据节点 | 16 核 (x86_64) | 64 GB | 2 TB NVMe (索引 + 缓存) | 万兆双网卡 | 3 |
| 缓存节点 | 8 核 (x86_64) | 32 GB | 500 GB SSD (Redis AOF + 快照) | 万兆双网卡 | 3 |
容量提示: 数据节点 NVMe 磁盘预留 20% 空间用于倒排索引合并与缓存写时复制(Copy-on-Write)临时文件。缓存节点内存与磁盘比例建议不低于 1:15,确保 Redis 持久化不阻塞主线程。
2.2 操作系统选型
统一选用 Ubuntu Server 22.04 LTS (Jammy Jellyfish),内核版本 5.15+。选型理由如下:
- 内核特性: 原生支持 cgroup v2、io_uring、透明大页(THP)动态控制,适合高并发 I/O 场景。
- 软件生态: APT 仓库直接提供 Redis 7.x、Prometheus、Grafana 等组件,减少编译部署成本。
- 长期维护: 官方安全更新支持至 2027 年 4 月,满足企业级合规要求。
内核参数调优要点(部署时统一写入 /etc/sysctl.d/99-inverted-index.conf):
# 倒排索引缓存一致性专用内核参数
vm.swappiness = 10
vm.dirty_ratio = 20
vm.dirty_background_ratio = 5
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
kernel.numa_balancing = 0
2.3 网络拓扑设计
网络平面划分为 业务平面 与 存储同步平面,物理隔离避免带宽争抢。拓扑结构如下图所示:
网络隔离要点: 业务平面仅暴露 443/6443(API)与 6379(Redis 只读副本)端口;存储同步平面使用独立网卡与 VLAN,承载倒排索引段复制、缓存失效广播与 Raft 心跳。禁止存储平面路由到外网。
2.4 软件栈清单
软件组件按层划分,版本锁定以避免兼容性问题:
| 层级 | 组件 | 版本 | 部署方式 | 说明 |
|---|---|---|---|---|
| OS | Ubuntu Server | 22.04.3 LTS | 裸机 / VMware | 内核 5.15.0-91-generic |
| 容器编排 | Kubernetes | v1.28.7 | kubeadm | Calico CNI + MetalLB |
| 缓存层 | Redis | 7.2.4 | Helm Chart | Cluster 模式,3 主 3 从 |
| 索引引擎 | Elasticsearch | 8.12.2 | ECK Operator | 倒排索引主存储 |
| 一致性协调 | etcd | 3.5.12 | 二进制 / K8s | 缓存失效队列 + 分布式锁 |
| 消息队列 | NATS | 2.10.14 | Docker / K8s | 缓存失效广播通道 |
| 监控告警 | Prometheus + Grafana | 2.51 / 10.4.0 | kube-prometheus-stack | 缓存命中率、索引延迟 |
| 负载均衡 | HAProxy | 2.8.5 | Docker / 裸机 | Redis 与 ES 流量入口 |
2.5 软件栈交互关系
下图展示各组件在缓存一致性闭环中的协作流程:
版本锁定警告: 切勿在生产环境随意升级 Redis 或 Elasticsearch 大版本。本方案中 Redis 7.2.x 与 ES 8.12.x 的 RESP3 协议兼容性、索引段合并策略均经过闭环测试。升级前必须回归验证缓存失效广播与段切换延迟指标。