十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

分解式基础架构如何终结三层架构与HCI的权衡困境?

分解式基础架构如何终结三层架构与HCI的权衡困境? 前阵子帮一个金融客户做架构选型对方问了我一个很具体的问题既要计算能独立扩容又想要超融合那种开箱即用的体验到底该选哪条路这问题看着简单其实把过去十年数据中心基础架构的核心矛盾全问出来了——三层架构和HCI一个偏向隔离与稳定一个偏向融合与弹性偏偏在关键业务上谁都没法完全满足对方。顺便说个容易踩的坑搜“HCI”的时候网上大量结果其实是蓝牙协议栈里的Host Controller Interface跟咱们聊的超融合基础设施Hyper-Converged Infrastructure完全是两码事。搜索引擎上这两拨内容常常混在一起这也是我写这篇的原因之一——把HCI这条线的来龙去脉理清楚顺带聊聊这两年越来越热的“分解式基础架构”Disaggregated Infrastructure到底是怎么终结这个权衡困境的。1. 三层架构的红利吃完了拆成三份为什么反而不自由1.1 三层架构的黄金组合计算、存储、网络各管一段传统三层架构大家都熟上面跑应用和虚拟化中间是计算节点组成的集群底层是SAN或NAS存储阵列中间用光纤通道或万兆以太网连着。每个组件各司其职、互相独立采购时可以单独选型——存储用A家的阵列计算用B家的服务器网络用C家的交换机。这套模式在虚拟化早期非常成功。那时候业务相对简单IOPS需求不太高一台双控存储阵列带几百台虚拟机绰绰有余运维团队也习惯了“存储归存储、计算归计算、网络归网络”的分工。而且从故障隔离的角度看三层架构天然地把故障域切得很干净存储阵列挂了计算节点本身还能活着计算节点宕了存储数据也不会丢。但问题是这个“独立”是物理层面的独立不是逻辑层面的弹性。随着业务负载增长问题开始显现。1.2 扩容就是牵一发而动全身一个存储扩容案例的账本我接触过一个中等规模的项目跑的是核心ERP和报表系统。最初规划了40个计算节点配了一台中端存储阵列容量大约80TB规划三年用量。结果到了第二年业务部门上线了一个新的数据分析模块存储用量直接翻倍。表面上看这只需要给存储阵列加扩展柜就行。但真正的麻烦在于存储容量涨了性能跟不上。数据量大了之后阵列的缓存命中率下降磁盘队列深度持续拉高数据库的慢查询变多。这时候不是加两块盘能解决的而是要升级控制器、加缓存卡、甚至换更高档的存储型号。整件事算下来存储扩容采购周期是两个月期间计算节点还在继续加内存、加CPU应用层也在不停调优。等新存储到了还得做数据迁移、SAN分区调整、主机多路径配置、应用重新验证。一个扩容动作牵动了存储、网络、计算、应用四个团队前后折腾了三个多月。这个案例特别典型地说明三层架构的“不自由”在哪计算和存储虽然物理独立但业务负载从来不会乖乖地按比例增长。存储吃紧了要动存储计算吃紧了要动计算每一次局部扩容都变成了影响全局的系统工程。1.3 三层架构的隐性代价孤立资源池与运维分裂三层架构还有一个被低估的问题——运维分裂。存储团队有一套管理工具虚拟化团队有另一套网络团队再看第三套。容量规划、性能监控、故障排查每个团队都要自己拉起一张表。出了问题先开评审会是存储的锅还是主机的锅经常是扯皮扯半天最后发现是某个交换机的端口模式配置错了。这种“运维分裂”正是后面HCI能快速占领市场的原因——它把计算、存储、虚拟化管理面合并到了一起让基础设施从“多个专业团队协同作战”变成了“一个团队统一管理”。三层架构在扩展性上的物理隔离优势在复杂的运维协作成本面前越来越不划算。2. HCI的甜蜜陷阱融合省了管理却绑定死了弹性2.1 超融合把存储塞进计算节点为什么早期这么好用超融合的思路说白了很简单每个计算节点里塞几块硬盘然后用分布式存储软件把这些本地盘汇聚成一个共享存储池对外提供类似于SAN的存储服务。这样做的好处非常直接。第一部署速度快——不用单独规划存储网络和存储阵列从拆箱到跑虚拟机半天搞定。第二扩容线性——加一台节点就同时加了CPU、内存和磁盘集群算力和存储容量同步上涨。第三管理简单——同一个界面里看计算和存储存储策略、副本数、故障域都可以通过虚拟机级别来配置。中小型虚拟化环境、桌面虚拟化、分支机构场景HCI几乎是屠杀级别的体验。它是第一个真正把“按需扩展”从口号变成现实的产品形态也正因如此过去几年HCI在各类企业里铺开的速度非常快。2.2 计算与存储的绑定卡住了两类典型负载HCI的问题就出在“线性扩展”这个优点上——因为它的计算和存储是绑在一起扩展的。我见过不少项目在HCI上跑数据库最开始一切安好但数据库缓存命中后内存不够用只能加一台节点。问题是加节点不只是加内存还顺带加上了一堆CPU和硬盘。如果内存需求大而CPU和存储都不缺那多出来的计算资源就闲置了如果业务是视频或者备份这类存储密集型的情况更糟计算没用完存储先爆了只能再买节点。这种“绑定扩展”在两类负载上格外难受一类是内存型应用比如大内存数据库、内存缓存、实时数据分析它们算力需求一般但内存需求极高另一类是存储密集型应用比如媒资处理、AI训练数据集、长时间数据留存它们容量需求巨大但对计算CPU消耗没那么夸张。如果按存储容量去扩展HCI集群计算资源可能浪费一半以上如果按计算需求去扩展存储又不够用。也就是说HCI把三层架构“可以独立扩展”这个能力牺牲掉了。它换来的管理便利在规模扩大后开始反噬。2.3 HCI故障域的“半径”问题节点挂了比想象中影响更大过去两年我多次在客户那边遇到同一个现象HCI集群某个节点失效整个集群性能就出现明显抖动。这不奇怪因为HCI的存储数据是按副本分散在多个节点上的一个节点掉线所有涉及该节点副本的虚拟机都要从其他节点重建数据同时其他节点还要承担在线I/O压力陡增。更要命的是HCI的存储和计算在同一个物理盒子里。一个节点宕了它上面跑的虚拟机要迁移或重启它提供的存储副本也要被重新复制——这两个动作是同时发生的互相抢CPU、抢存储带宽、抢网络带宽。如果集群规模不大网络只有2×25G恢复时间可能拖得非常长期间业务性能受损。有人说三层架构下存储阵列坏了照样是天大的事。但区别在于存储阵列故障的故障域很明确就是这台存储设备虚拟化层还能正常运行而HCI节点故障是计算、存储、网络同时受到冲击故障半径大得多。这个“故障域半径”的问题在规模越大、节点越密的环境里暴露得越明显。3. 分解式基础架构的破局逻辑让资源池独立让互连变聪明3.1 分解式到底在拆什么从物理盒到逻辑池聊到这儿三层架构和HCI的“权衡困境”已经摆清楚了三层架构能把资源池物理分开但管理割裂、扩展牵一发动全身HCI管理统一了、扩展线性了但把计算和存储绑死在一起弹性打了折扣。分解式基础架构的思路和这两者都不同——它既拆资源又通过统一的软件控制面来管理资源。具体来说分解式架构把数据中心里的计算节点、存储节点、内存池、GPU池全部拆成独立的资源域节点之间通过高速网络RoCE、InfiniBand、CXL连接。计算节点不再内置大量本地盘存储节点变成高密度全闪的“JBOF”Just a Bunch of FlashGPU也不绑死在特定服务器里而是可以被不同业务动态挂载。这个思路用大白话打比方三层架构是“去超市买套餐拆不了”HCI是“零食和饮料捆在一个盒子里好看但没法单买”分解式架构则是“自助餐——菜品分开放想吃什么拿什么最后按拿的份量结算”。从物理盒到逻辑池这是架构思维上的一次转变。物理形态还是那些服务器、硬盘、网卡但资源的使用方式从“按节点规划”变成了“按业务调度”。调度者是软件不是运维工程师一个个手动去配。3.2 三种关键互连技术NVMe-oF、CXL、DPU的角色分工分解式架构不是凭空冒出来的它之所以这几年开始落地是因为几条关键互连技术刚好到了成熟期。NVMe-oFNVMe over Fabric这是解决存储池化的核心。传统SAN存储用的是SCSI协议延迟高、队列深度浅NVMe-oF把NVMe命令扩展到网络以太网或光纤通道上延迟从几百微秒降到十几二十微秒级别基本接近于本地NVMe SSD的性能。存储从“本地盘”变成“网络盘”但性能几乎不损失——这是分解式架构能成立的第一块基石。CXLCompute Express Link这是解决内存池化的关键。它基于PCIe物理层在CPU和CXL设备之间建立内存语义的访问。CXL 2.0支持内存池化CXL 3.0支持内存共享。本地DDR5访问延迟大约100ns走CXL访问远端的池化内存延迟大约在200-300ns多出来的开销对大多数应用来说完全可接受。有了CXL内存就能像存储那样做成一个独立资源池按需分配给不同计算节点。DPUData Processing Unit这是解决“数据通路”问题的。分解式架构下网络I/O、存储协议转换、虚拟化数据转发这些都会消耗大量CPU如果让通用CPU去扛性能损失很大。DPU把存储协议、网络虚拟化、安全加密这些数据平面功能卸载到专用硬件上让CPU专心跑业务。没有DPU分解式架构在实机环境里很难跑出理想的性价比。这三者不是平行的三个技术方向而是组成了一条链路NVMe-oF解耦存储CXL解耦内存DPU承担数据通路和统一调度。三者配合起来才真正实现了资源池化和独立调度。3.3 用一张表格对比三层、HCI、分解式的权衡差异维度三层架构HCI分解式基础架构资源独立性物理独立扩展灵活但操作复杂计算与存储绑定无法独立扩展计算、内存、存储、GPU独立池化扩展效率局部扩容牵动全局周期长加节点即可但伴随资源浪费按需扩展单一资源池周期短管理复杂度多团队多工具协作成本高单平台统一管理最简单软件控制面统一但硬件异构复杂性能表现存储独立可保障但存在阵列瓶颈本地化I/O好但节点故障影响大网络化访问损耗小整体可扩展初始成本较高需规划网络和存储架构较低开箱即用较高需要高速网络和智能网卡适合场景大型数据库、传统企业关键业务中小虚拟化、桌面云、分支机构大规模混合负载、AI、云原生平台这张表不一定能穷尽所有情况但基本把三者的核心差异讲清楚了。分解式架构真正终结的不是三层和HCI中的某一个而是“要么牺牲弹性、要么牺牲隔离”这个二选一的困境。4. 落地分解式架构硬件形态、软件栈与实操避坑4.1 一套可参考的分解式部署参考形态理论说完聊聊落地。一套典型的分解式架构参考形态大概是这样计算节点2U通用服务器配置双路CPU、适量内存不配大规模本地存储只留系统盘或少量缓存盘。存储节点高密度全闪存储节点JBOF例如4U机箱里配24到48块NVMe SSD通过NVMe-oF对外提供块存储服务。内存池CXL内存设备例如CXL Type 3设备通过PCIe插槽接入可以被多个计算节点动态共享。GPU池GPU服务器或GPU直连交换机通过SR-IOV或vGPU方式给不同计算节点挂载。网络层100G或200G RoCERDMA over Converged Ethernet的CLOS网络配合无损以太网配置PFC、ECN。软件控制面支持容器或虚拟化的云管理平台搭配软件定义存储控制器统一调度各类资源池。这个形态不是唯一的但它能代表大多数分解式项目初期的样子计算节点瘦身存储节点高度集中网络成为核心。4.2 落地步骤从现有架构迁移的路径如果所在环境现在还是三层架构或者HCI直接“推倒重来”不现实。从实践角度看有三条相对稳妥的迁移路径。路径一存储先行解耦。如果业务面临的是存储扩容难、存储性能瓶颈可以先引入NVMe-oF全闪阵列或JBOF把现有计算节点通过NVMe-oF连到新存储上。这一步网络改造不用大动现有万兆网升级到25G或100G即可。存储解耦之后计算节点和存储节点就真正分开了。路径二HCI存储外移。如果已经是HCI环境可以把存储侧重的新增容量放到独立存储节点池中逐步让计算节点少采购本地大盘减少“加节点等于加存储”的浪费。HCI的控制面如果支持外部存储接入迁移过程会比较平滑如果不支持就得把部分虚拟机迁移到独立存储池管理。路径三新建场景一步到位。如果是新建数据中心、或者单独建一个面向AI/云原生的资源池可以直接按计算池、存储池、GPU池来规划从第一天就按分解式架构构建。成本高一些但避免了后续拆改的二次投入。4.3 实际部署中的坑RDMA网络、CXL生态与管理面分解式架构看着美好真跑起来坑也不少。我把自己踩过和见过的坑列几个。最大的坑是RDMA网络。NVMe-oF的延迟优势建立在无损网络之上。普通以太网有丢包TCP能重传RDMA不行——一旦发生拥塞丢包性能不是缓慢下降而是断崖式崩溃。必须配置PFC优先级流控和ECN显式拥塞通知并合理配置DCQCN参数。我记得一次压测中因为某个交换机端口队列配置不当端到端延迟从20微秒飙到200多微秒业务直接卡死。排查到最后就是PFC死锁问题。这里给一个参考配置思路不同厂商命令略有差异# 在交换机上启用PFC至少覆盖RoCE流量所用优先级队列 # 在交换机和网卡侧启用ECN配合DCQCN降速 # 可用如下命令检查RoCE网卡的PFC计数器确认是否存在PFC暂停帧 ethtool -S eth0 | grep -i pfc第二个坑是CXL生态还不完全成熟。虽然CXL 2.0设备已经能在新平台如Intel第四代/第五代至强、AMD EPYC Genoa之后上被识别但操作系统的支持细节还在演进。Linux内核从5.12开始加入CXL子系统到6.x版本才逐步完善虚拟化平台对CXL内存池的动态分配能力也还很有限。也就是说内存池化目前更适合在物理机层面做试点想让虚拟机随意挂载CXL内存还需要等生态继续成熟。检查当前内核是否支持CXL设备ls /dev/cxl如果能看到/dev/cxl/mem设备说明内核已经正确识别CXL设备。第三个坑是管理面。HCI开箱即用的体验很大程度是因为它把计算、存储、网络都建立在同一个软件栈上。分解式架构用了太多异构硬件和独立软件组件管理面的整合难度被低估了。如果团队没有一定的自动化运维能力光是把异构硬件的告警、日志、监控串起来就是一笔不小的投入。这也是我认为分解式架构更适合有一定研发和运维积累的团队的原因。4.4 预算与性能边界分解式架构不是银弹讲真分解式架构不是银弹。它有明确的适用边界也有明显的成本代价。成本端最大的开销在网络上。三层架构如果有两层万兆就够用分解式基本要一步到位上100G/200G RoCE交换机和智能网卡的花费比传统方案高出一截。如果规模不到几十台机器省下来的计算资源可能还没网络升级花掉的钱多。性能端即便NVMe-oF已经很成熟远程存储访问和本地NVMe直连仍然存在微秒级的额外延迟。对绝大多数业务来说这可以忽略但对极端低延迟的交易型系统本地存储在物理上仍然有优势。CXL内存池虽然有接近DDR5的延迟但目前动态共享能力有限还不能完全替代规划好的本机内存。所以说分解式架构的“终结”不是物理层面的终结而是“权衡原则”的终结。它没有把延迟变成零而是把“要不要在计算和存储之间取舍”这个问题换掉了变成了“如何在网络和软件层面高效调度资源”。后者显然更符合云化和AI化的演进方向。5. 架构选型的务实决策框架别先问“哪条路最好”5.1 判断现状的五个问题每次有人问我“三层、HCI、分解式到底选哪个”我都会反问五个问题。这五个问题的答案基本决定了你该从哪个方向切入。问题一你的业务增长是同时需要计算和存储还是只偏重其中一方如果两者都增长HCI高度契合如果只偏存储或只偏计算分解式比HCI更合适。问题二你当前面临的瓶颈是性能还是容量是性能HCI的本地化架构还能靠堆节点缓解但可能在别的资源上浪费是容量存储解耦几乎是必然选择。问题三你有没有内存密度很高或者存储密度很高的负载有数据库、AI训练、大数据场景优先考虑计算、内存、存储池化的方案只是跑跑虚拟桌面HCI完全够用。问题四你的运维团队对自动化和API的接受度如何分解式架构的管理面拼装需要更多技术储备团队如果习惯了图形化界面点鼠标贸然上分解式会很难受。问题五未来三年你有云化或者容器化的规划吗有分解式架构和K8s等云原生平台的结合会更顺没有维持HCI的简单性可能是更务实的选择。5.2 不同规模下的推荐演进路径根据规模和业务形态我的建议是分阶段演进而不是一步到位追求“最先进”。小型环境几台到十几台节点继续用HCI没问题。这个量级下HCI的“加节点等于加资源”恰好是优势因为还没复杂到需要精细地分割资源池。别在这么小的环境里强行做分解式网络成本摊不薄。中型环境几十台到上百台节点这时候“加节点等于加资源”已经开始肉疼了。优先做存储解耦——把存储做成独立的NVMe-oF资源池计算节点继续保留本地盘作为缓存或临时存储。这一步对现有架构改动不大但能让后续的扩容灵活很多。大型环境数百台以上节点混合负载分解式几乎是必然方向。计算、存储、GPU分池管理按业务动态分配资源。这时候多花的网络成本相对于资源利用率的提升和运维效率的提升是划算的。最后再分享一个个人实战体会分解式架构的落地最好从存储解耦开始而不是从CXL内存池开始。NVMe-oF技术成熟度高、迁移路径清晰、收益看得见适合作为第一个项目内存池化和GPU池化可以等团队积累了一定经验再逐步引入。这样既控制了风险也给团队留出了学习和成长的节奏。架构选型这件事从来没有绝对正确的答案。真正的正确是清楚知道你当下业务的约束条件然后选一条能往前走、又不会把后路堵死的路。分解式架构最大的价值恰恰在于它让“后路”变得比从前都宽。
返回列表