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 网络拓扑设计

网络平面划分为 业务平面 与 存储同步平面,物理隔离避免带宽争抢。拓扑结构如下图所示:

网络拓扑:双平面隔离架构 业务平面(10.0.1.0/24) 客户端集群 HAProxy 管理节点 存储同步平面(10.0.2.0/24) 数据节点 ×3 缓存节点 ×3 Raft 仲裁 心跳 & 配置同步
网络隔离要点: 业务平面仅暴露 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 软件栈交互关系

下图展示各组件在缓存一致性闭环中的协作流程:

软件栈交互:缓存一致性闭环 客户端 / API 网关 HAProxy 负载均衡 查询请求 Redis 缓存集群 (热点倒排索引) Elasticsearch (全量倒排索引) 缓存命中 缓存未命中 etcd + NATS 一致性层 (失效队列 / 广播 / 分布式锁) 索引变更 → 失效通知 缓存逐出确认
版本锁定警告: 切勿在生产环境随意升级 Redis 或 Elasticsearch 大版本。本方案中 Redis 7.2.x 与 ES 8.12.x 的 RESP3 协议兼容性、索引段合并策略均经过闭环测试。升级前必须回归验证缓存失效广播与段切换延迟指标。