云基础设施架构综合分析:大型机、工程化系统与分布式一致性

最后更新于:2025-12-12 14:57:47

云基础设施架构综合分析:大型机、工程化系统与分布式一致性

1. 引言:计算哲学的分歧

当代数字基础设施格局的特点在于两种截然不同的架构哲学之间存在的根本张力:即大型机的确定性、硬件为中心的模型,与分布式云计算的概率性、软件定义的模型。尽管当前的市场叙事暗示了从前者向后者线性的技术演进,但严谨的技术分析揭示了一个更为复杂的现实。高价值、低延迟的工作负载——特别是在金融服务领域——继续需要传统上与大型机架构相关的特定一致性保证。这种需求促使了诸如 Oracle Exadata 等“工程化系统”的出现,这些系统混合了上述两种对立的哲学,同时也推动了在云环境中实施复杂的软件级完整性机制(如 ZFS 和预写式日志 WAL),以模拟硬件级的可靠性 1。

本报告提供了对这些竞争范式的详尽审查。它分析了驱动架构决策的精细经济模型、硬件与软件在容错策略上的分歧、混合系统在银行业中的具体实施,以及分布式数据一致性的数学现实。通过解构这些要素,我们阐明了现代云提供商和企业如何在大型机的“数字金库”式安全性与云的弹性可扩展性之间权衡取舍。

2. 经济与运营的分歧:云与大型机模型

从大型机计算向云基础设施的过渡通常被构建为一种降低成本的策略;然而,底层的经济模型代表了根本上不兼容的计算估值方法。深刻理解这些计费结构是理解架构的前提,因为技术架构往往反映了计费模型——这是康威定律在经济学上的体现。

2.1 云计费机制的超细颗粒度

现代云计费已经远远超越了简单的“按小时”计算费用,引入了有效地将每一次离散的输入/输出(I/O)操作货币化的颗粒度水平。正如 Atomic Cloud 计费指南和其他提供商条款中所详述的,服务被分解为可计费的微单元,创造了一个复杂的财务图景 4。

最显著的区别之一是对 I/O 吞吐量的计费。提供商明确收取“每百万次虚拟服务器 I/O”的费用,这意味着账单是根据计费周期内执行的数百万次 I/O 操作的绝对数量来计算的。这与本地硬件形成鲜明对比,后者的 I/O 容量是固定的资本成本。因此,一个执行频繁小规模读写操作的“健谈”应用程序——这是传统大型机设计的典型特征——由于这一指标,可能会在云环境中产生极其高昂的成本 4。

此外,网络出口流量受到严格计量。“防火墙出口流量”是根据离开提供商防火墙的数据千兆字节数来计费的。这创造了一种被称为“数据引力”的独特经济激励,迫使组织将数据保留在提供商的生态系统中以避免这些费用。与大型机的内部总线或私有数据中心的暗光纤不同(在这些环境中,在核心账本和报告系统之间移动数据不产生边际成本),云架构会对跨边界的数据移动进行惩罚 4。

这种复杂性延伸到了存储和灾难恢复(DR)模型。备份存储通常按小时聚合,将数值求和并除以期间的小时数以确定平均使用量。更为关键的是,“DR 预留”费用引入了一种复杂的类保险模型。提供商可能会收取预留费——按生产 CPU、RAM 和存储成本的百分比(例如 20%)计算——仅仅是为了保留容量。这是独立于在 DR 环境中实际数据传输或 I/O 消耗所产生的费用的。这种“预留”与“使用”的脱钩迫使架构师在建模技术风险的同时也要建模财务风险 4。

2.2 确定性的大型机经济模型

与精细的、基于消费的云模型相反,大型机经济模型历史上一直围绕着诸如“MIPS”(每秒百万条指令)或“MSU”(百万服务单元)等指标。虽然云计费是弹性且可变的(运营支出 OpEx),但大型机计费通常是确定性的且基于容量的。大型机充当“数字金库”——这是一笔巨大的前期投资,为大容量事务提供可预测的性能,而没有微交易计费的变动性 5。

从大型机迁移到云时遇到的摩擦通常源于这种计费不匹配。大型机工作负载针对单一架构足迹内的大规模 I/O 吞吐量和 CPU 密度进行了优化。将此类工作负载“直接迁移”到云端通常会导致显著的财务低效,因为应用程序逻辑的设计并未考虑到最小化云模型固有的精细 I/O、存储检索和出口成本。报告显示,高达 94% 的企业因对这些资源管理无效且缺乏对成本分摊标签的理解而在云端超支 6。

3. 容错哲学:硬件与软件

大型机和云基础设施之间的决定性区别不仅仅在于物理位置(本地与远程),还延伸到了故障管理的根本哲学。这些架构代表了关于可靠性责任应归于何处的对立观点:是归于专用硬件内部,还是分布在软件栈中。

3.1 硬件为中心的容错:大型机方法

大型机是围绕“硬件可靠性”的哲学构建的。该系统的设计旨在物理层面上掩盖故障,确保操作系统和应用层对底层组件的故障一无所知。这种方法根据持续时间——瞬态与永久——而不是来源来对故障进行分类 7。

瞬态故障,例如由宇宙辐射引起的比特翻转或瞬间电压尖峰,通过硬件级掩蔽或投票逻辑来处理。例如,冗余处理器可以同时执行相同的指令;如果它们的结果出现分歧,系统逻辑会投票决定正确的结果,而不会中断工作流。永久性故障会触发透明的系统重配置,瞬间绕过故障组件 7。

这种架构使得大型机能够像“数字金库”一样运作,为一致性至关重要的工作负载提供超安全和可预测的环境。其可靠性之高,以至于大型机的正常运行时间经常以十年为单位来衡量。这是因为硬件本身——包括处理器、内存模块和 I/O 通道——具有深度的冗余。如果主处理器出现故障,备用处理器会立即接管控制权,保存系统状态并防止操作系统或应用程序崩溃 5。

3.2 软件为中心的容错:云方法

相反,云计算基于“软件容错”的哲学运作。在这个范式中,底层硬件被视为商品化的且本质上不可靠。可靠性不是单个组件的属性,而是分布在大量这些不可靠组件集群之上的软件的涌现属性 8。

AWS、Azure 和 Google Cloud 等云提供商运营严格的分布式模型,通过跨可用区的冗余来实现可靠性。如果物理服务器出现故障,编排软件会检测到故障并将工作负载迁移到健康的服务器。这种模型需要应用程序逻辑发生转变,即所谓的“牛与宠物”范式。在大型机模型中,服务器是“宠物”——独特、不可或缺且需要精心护理。在云模型中,服务器是“牛”——可替代且可互换。应用程序必须是“云原生”的,能够优雅地处理连接中断、延迟峰值和节点故障,而不会丢失数据 9。

虽然大型机提供垂直可扩展性(向单个节点添加更多算力)和确定性,但云提供水平可扩展性(添加更多节点)。权衡之处在于分布式系统引入了非确定性——网络延迟和最终一致性问题,这通常是大型机所避免的。云中的安全性基于“责任共担模型”,提供商负责基础设施(数据中心、电力、硬件)的安全,但客户负责保护构建在其上的应用程序和数据配置 5。

3.3 弹性与容错的细微差别

在这种语境下,“容错”与“弹性”之间存在技术上显著的区别。

容错 (Fault Tolerance): 尽管发生故障,系统仍能不中断且不损失性能地继续运行。最终用户对问题完全不知情。这是大型机的运营理想 9。

弹性 (Resilience): 系统适应错误,维持服务但可能承认对性能有一定影响或需要重试机制(例如,在副本被提升时响应时间变慢)。这是云的运营现实 9。

对于银行核心系统和高频交易环境而言,“弹性”——即交易可能失败并需要重试——与“容错”(交易尽管硬件故障仍能完成)相比通常是不可接受的。这一区别解释了大型机在关键金融领域持续存在的原因 10。

4. 混合巅峰:Oracle Exadata 与工程化系统

在单体大型机和分布式商品云之间存在着“工程化系统”。Oracle Exadata 是这一类别的卓越代表,有效地充当了“云端大型机”。它试图将大型机的硬件-软件内聚性整合到 x86 生态系统中,以解决分布式系统的性能瓶颈。

4.1 Exadata 架构:硬件-软件协同设计

Exadata 不仅仅是一台服务器;它是一台综合的数据库机器,由数据库服务器和通过高速低延迟网络连接的智能存储服务器组成,具体使用的是基于融合以太网的 RDMA(RoCE)或 InfiniBand 12。

关键优势在于集成:硬件(服务器、网络、存储)和软件(Oracle 数据库、Exadata 系统软件)是协同工程化的。这使得在通用云环境中不可能实现的优化成为可能,因为在通用云中,数据库软件对底层硬件是一无所知的。Exadata 提供多种部署模式,包括本地部署、“Cloud@Customer”(云硬件驻留在客户数据中心)以及作为公共云服务(Exadata Cloud Service)。这种灵活性使得像 Fibabanka 和 LALUX 这样的金融机构能够在保持严格的数据主权和合规性的同时,访问云运营模型 14。

4.2 关键技术:SQL 卸载与智能扫描

Exadata 的标志性特征是通过“智能扫描”实现的“SQL 卸载”,这是一种旨在消除传统架构中固有的 I/O 瓶颈的机制。在标准系统中,数据库服务器从存储阵列请求数据块,通过网络拉取它们,然后在内存中过滤它们以找到相关行。这产生了巨大的数据移动开销 13。

智能扫描解决方案: Exadata 将 SQL 处理逻辑下推到存储单元。数据库服务器将查询谓词(例如 WHERE amount > 200)直接发送给存储服务器。存储服务器在本地过滤数据,并仅将匹配的行发送回数据库服务器。这极大地减少了网络流量和数据库节点的 CPU 负载 13。

具体而言,智能扫描执行多项卸载功能:

谓词过滤: 在存储层评估诸如 amount > 200 等条件 15。

列过滤: 实现“投影”,仅返回请求的列(例如 SELECT customer_name),而不是整行 15。

解密卸载: CPU 密集型解密任务由存储处理器处理,释放数据库服务器资源用于事务处理 15。

混合列式压缩 (HCC): 解压在 Exadata 存储服务器中运行,允许对压缩数据进行快速扫描 15。

管理员可以通过初始化参数控制此功能。参数 CELL_OFFLOAD_PROCESSING 启用或禁用该功能,而 CELL_OFFLOAD_PLAN_DISPLAY 控制 SQL EXPLAIN PLAN 输出是否显式显示由存储单元评估的谓词(标记为“STORAGE”谓词)16。

4.3 通过 MAA(最大可用性架构)实现高可用性

Oracle 在 Exadata 上的“最大可用性架构”(MAA)旨在模拟大型机的可靠性标准。它利用 Real Application Clusters (RAC) 实现双活数据库节点,并利用 Automatic Storage Management (ASM) 在存储单元之间镜像数据。如果存储单元发生故障,ASM 会自动重新平衡数据以恢复冗余,且无需停机。在灾难恢复方面,它与 Data Guard 集成,将数据复制到备用站点,确保在每一层消除“单点故障” 12。

5. 分布式数据一致性:“单一写入者”的挑战

虽然工程化系统通过硬件集成解决了 I/O 瓶颈,但云的分布式特性在数据一致性方面带来了深刻的挑战。在大型机中,内存是一致的,访问是集中的。在分布式云中,“真相”碎片化地分布在各个区域,需要复杂的共识机制。

5.1 单一写入者原则与一致性模型

为了在分布式系统中维持强一致性,架构师经常回归“单一写入者原则”。该原则规定,为了避免冲突,在任何给定时间,只允许一个参与者(线程、节点或区域)写入特定的数据片段。这有效地序列化了更新,确保了清晰、线性的历史记录,而没有合并冲突的复杂性 20。

在多区域数据库部署中,例如 Amazon Aurora 全球数据库,实施这一原则的常见设计模式是“本地读,全局写”。在这种架构中,所有区域的应用程序在本地执行读取以最小化延迟,但所有写入都被转发到主“写入”区域。该写入节点将更改复制到其他区域的只读副本。虽然这为写入操作引入了延迟,但它防止了“脑裂”场景,即两个区域同时充当主节点并接受冲突的更新 21。

像 Azure Cosmos DB 这样的系统提供了一系列一致性级别,以弥合强一致性与性能之间的差距。例如,“会话一致性”保证在单个客户端会话内,用户通常体验到“读己之写”的一致性。这假设是单个写入者会话或共享会话令牌,为用户提供可预测的体验,同时允许后端在更广泛的集群中保持最终一致性 22。

5.2 分布式锁:Redlock 及其争议

当必须存在多个写入者并进行协调时,分布式锁就变得必要。然而,分布式锁本质上比本地互斥锁更脆弱。在单台机器上,操作系统内核强制执行互斥;如果持有锁的线程崩溃,操作系统可以释放它。在分布式系统中,如果持有锁的节点发生故障,除非采用租约或超时机制,否则锁可能会无限期持续 23。

一个著名的解决方案是 Redis 使用的 Redlock 算法。它试图通过要求客户端从多数(N/2 + 1)Redis 节点获取锁来提供分布式锁定。关键是,Redlock 依赖“挂钟”时间来确定锁的有效性。这种依赖引入了一个显著的漏洞:时钟偏差。如果服务器上的系统时钟发生跳变(例如,由于 NTP 同步),它可能会在客户端仍认为自己持有锁的情况下过早地使锁过期。这种对锁互斥属性的违反可能会导致需要严格序列化的系统中的数据损坏。批评者认为,为了真正的正确性,系统应该依赖屏蔽令牌(fencing tokens)或单调时钟,而不是日历时钟 24。

为了减轻锁定中的可扩展性瓶颈,采用了诸如细粒度锁定等策略。不是锁定整个数据集或计数器,而是将资源拆分为“桶”(分片)。例如,高并发计数器可以拆分为 N 个桶;线程随机选择一个桶进行递增,将碰撞概率降低到 1/N。这种技术与“乐观并发控制”(OCC)——使用版本号和比较并交换(CAS)操作代替重型锁——相结合,使得分布式系统能够有效地扩展写入吞吐量 25。

6. 比特级的数据完整性:ZFS 与校验和

在缺乏通过专用电路保证数据完整性的大型机硬件的情况下,软件文件系统必须假设硬件是不可靠的。ZFS(泽字节文件系统)代表了这种“端到端”软件完整性的黄金标准,有效地在商用硬件上实现了大型机级的可靠性。

6.1 威胁:静默数据损坏与比特腐烂

商用硬件是不完美的。磁盘固件包含漏洞,电缆遭受电磁干扰,宇宙射线可能会翻转 RAM 中的比特。研究表明,内存错误的发生率在每兆比特 25,000 到 70,000 FIT(故障率单位)之间。文件系统元数据中的单个比特翻转可能导致整个存储池无法读取 3。

传统文件系统通常依赖硬盘驱动器来报告错误。然而,如果驱动器“静默”地写入损坏的数据(幻影写入)或将数据写入错误的扇区,驱动器控制器可能会报告成功。没有外部验证机制,文件系统会将损坏的数据作为有效数据接收。虽然 ECC(纠错码)RAM 有所帮助,但它通常只能捕获内存模块本身的单比特错误,无法检测到在跨总线或网络接口传输过程中发生的损坏 27。

6.2 ZFS 通过 Merkle 树实现的端到端完整性

ZFS 通过采用“互不信任”的哲学来解决这个问题。与仅仅校验数据块的系统不同,ZFS 校验指向数据的指针。这创建了一个自我验证的 Merkle 树结构。

机制: 当父块指向子块(数据)时,父块存储子块的校验和。当 ZFS 读取子块时,它计算校验和并将其与存储在父块中的值进行比较。如果驱动器返回错误的块(误导读取)或损坏的数据,校验和将不匹配。由于校验和与数据本身分开存储(在父块中),ZFS 可以检测到“幻影写入”,即磁盘上的数据内部一致但在文件系统树的上下文中是不正确的 1。

自愈: 在镜像或 RAID-Z 配置中,如果 ZFS 检测到校验和不匹配,它不仅仅是报告错误。它会自动从另一个镜像或奇偶校验块读取冗余副本。如果副本有效,ZFS 会即时修复损坏的块并将正确的数据返回给应用程序。这种能力将系统从仅仅是错误检测转变为错误纠正,有效地实现了模仿大型机“容错”的“弹性” 1。

6.3 写时复制(CoW)与事务完整性

ZFS 利用事务性写时复制(CoW)模型来确保文件系统在磁盘上始终是一致的,消除了崩溃后进行 fsck(文件系统检查)的需要。

CoW 过程: 当数据被修改时,ZFS 不会原地覆盖现有数据(如果中途断电,这会有数据丢失的风险)。相反,它将新数据写入新分配的块。一旦写入完成并经过验证,ZFS 会更新树向上的元数据指针以指向新块。最后一步是“Uberblock”(文件系统的根)的原子更新。这确保了文件系统从“有效状态 A”原子地过渡到“有效状态 B”。如果在 Uberblock 更新之前的任何一点断电,系统只需恢复到状态 A,因为旧数据从未被覆盖 30。

这种架构还实现了即时快照和克隆。由于数据是不可变的,快照只是特定时间点元数据指针的副本。在数据与快照发生偏离之前,它不消耗额外的磁盘空间,从而允许高效的备份和测试环境 30。

7. 预写式日志(WAL):通用日志

支撑大型机和现代云数据库的是预写式日志(WAL)的概念。这项技术作为原子性和持久性(ACID 属性中的 'A' 和 'D')的基本保障。

7.1 历史起源与概念

记录数据更改的概念起源于大型机时代(例如 IBM System R),但在 PostgreSQL 和 Oracle 等系统中已变得无处不在。WAL 规定了一条严格的规则:修改必须先被写入稳定存储上的安全、仅追加的日志中,然后才能应用到主数据库页面。

这解决了“页面撕裂”问题,即在将数据库块写入磁盘的中途发生系统崩溃。没有 WAL,数据库将处于损坏状态。有了 WAL,重启后,数据库系统进入“崩溃恢复”模式。它重放日志以“重做”尚未到达数据文件的已提交事务,并“撤销”部分写入的未提交事务 32。

7.2 现代系统中的实现

在像 PostgreSQL 这样的现代系统中,WAL 被实现为一组顺序段文件(通常每个 16MB)。WAL 记录的是“Delta”(变化)而不是整个页面。由于对日志文件的顺序写入比对数据页面的随机写入快得多,WAL 也作为一种性能优化手段。

此外,WAL 是复制的核心。在云架构中,主节点不是复制原始数据文件(这会占用大量带宽),而是将 WAL 记录流发送到备用副本。副本重放这些记录以保持同步。这种“日志传送”机制允许进行时间点恢复(PITR),管理员可以通过重放 WAL 直到确切时刻,将数据库恢复到历史上的特定秒 34。

8. 结论:架构融合与分层

关于“云提供商是否使用 IBM 大型机?”的探究得出了一个微妙的结论。虽然超大规模云提供商(AWS、Google、Azure)在其通用计算池中主要依赖商用硬件和分布式软件架构,而不是物理大型机,但大型机的原则已被解构并在软件中重新实现,而特定的高价值工作负载继续需要专门的工程化系统。

工作负载分层: 核心银行账本、结算系统和保险后端主要保留在大型机上或迁移到像 Oracle Exadata 这样的工程化系统。这些工作负载需要纯云架构难以在经济上保证的硬件级容错和确定性延迟 10。

架构融合: 云正在通过软件采纳大型机概念。ZFS 实现了大型机硬件过去提供的“端到端完整性” 1。Oracle Exadata 物理地重新整合了计算和存储,以解决分布式系统固有的 I/O 延迟问题,有效地构建了“云端大型机” 15。甚至计费模型也在演变,“预留实例”模仿了大型机容量规划的可预测成本结构。

混合未来: 行业正朝着混合集成模型发展。“Cloud@Customer”部署将云的运营灵活性带到了大型机的物理位置,弥合了数据主权要求与云弹性需求之间的差距。未来不是完全取代大型机,而是严格应用“合适的工作负载,合适的平台”策略 14。

Works cited

Zettabyte reliability with flexible end-to-end data integrity - IEEE Xplore, accessed December 12, 2025,

Your Mainframe is the Original Cloud - Cloud Computing | Precisely, accessed December 12, 2025,

End-to-end Data Integrity for File Systems: A ZFS Case Study - USENIX, accessed December 12, 2025,

ATOMIC CLOUD BILLING TERMINOLOGY, accessed December 12, 2025,

Mainframe vs. Cloud: Who Wins the Security Battle? | by Thomas Joseph | Medium, accessed December 12, 2025,

Understanding Your Cloud Bill: A Beginner's Guide - Umbrella, accessed December 12, 2025,

Reliability analysis of a hardware and software fault tolerant parallel processor - IEEE Xplore, accessed December 12, 2025,

What Is Fault Tolerance? | Creating a Fault-tolerant System - Fortinet, accessed December 12, 2025,

Fault tolerance - Wikipedia, accessed December 12, 2025,

Exadata Cloud Increases Financial Services Insight and Agility - Oracle, accessed December 12, 2025,

Oracle Exadata Cloud@Customer for Banking, accessed December 12, 2025,

Oracle MAA with ExaCC and ExaCM, accessed December 12, 2025,

CELL_OFFLOAD_PROCESSING - Oracle Help Center, accessed December 12, 2025,

Exadata Cloud@Customer - Oracle, accessed December 12, 2025,

Offloading Data Search and Retrieval Processing - Oracle Help Center, accessed December 12, 2025,

3.1.2 cell_offload_plan_display - Oracle Help Center, accessed December 12, 2025,

Administering SQL Processing Offload - Oracle Help Center, accessed December 12, 2025,

Oracle Best Practices for High Availability, accessed December 12, 2025,

Deploying Oracle Maximum Availability Architecture with Exadata Database Machine, accessed December 12, 2025,

Understanding the Single-Writer Principle - Software Engineering Stack Exchange, accessed December 12, 2025,

Scale applications using multi-Region Amazon EKS and Amazon Aurora Global Database: Part 1 - AWS, accessed December 12, 2025,

Consistency level choices - Azure Cosmos DB - Microsoft Learn, accessed December 12, 2025,

Locking In Distributed Systems. Content | by Himani Prasad - Medium, accessed December 12, 2025,

How to do distributed locking | Hacker News, accessed December 12, 2025,

Decrement counter with high concurrency in distributed system - Software Engineering Stack Exchange, accessed December 12, 2025,

How to break through the distributed lock performance bottleneck of large model storage?, accessed December 12, 2025,

true end to end data integrity? | TrueNAS Community, accessed December 12, 2025,

End-to-end Data Integrity for File Systems: A ZFS Case Study - Computer Sciences Dept., accessed December 12, 2025,

OpenZFS - Data Security vs. Integrity - Klara Systems, accessed December 12, 2025,

ZFS Essentials: Copy-on-write & Snapshots - Open-E, accessed December 12, 2025,

Why The ZFS Copy On Write File System Is Better Than A Journaling One - YouTube, accessed December 12, 2025,

What You Need to Know About Write-Ahead Logging (WAL) - CelerData, accessed December 12, 2025,

Write-ahead logging - Wikipedia, accessed December 12, 2025,

Write-Ahead Logs: The Unsung Hero of Database Reliability — How a Simple Logging Pattern Powers… - Medium, accessed December 12, 2025,