谷歌架构的转变:从单数据中心到故障转移系统,再到多宿主架构

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

image

运行单数据中心的系统很有难度,那么设想一下切换到双数据中心吧,假设你需要对多个位于不同地理位置的数据中心提供支持。谷歌有一篇发人深思的优秀论文,其中对这一过程有所描述——“大规模高可用性:打造谷歌的广告数据基础设施”。

文中的主要观点是:在将单个数据中心切换到多个数据中心时,典型的故障转移架构在实践中效果并不太好。能够起到作用,使用较少资源就能提供高可用性和一致性的方法,是原生的多宿主/多重连接架构(natively multihomed architecture):

我们目前的方式是构建原生多宿主架构。 在这样的系统中,多个数据中心会持续运作,并根据情况自发平衡不同数据中心的负载,同时还能以完全透明化的方式解决任意规模的数据中心停机。此外,按计划执行的数据中心停机与维护事件也是完全透明化的,这样就会将对运营系统造成的影响降到最低。在过去,要想完成停机与维护事件,需要付出大量人力将运营系统从一个数据中心迁移到另一个。

“多宿主”这种说法也许会令人费解,因为多宿主这个词一般指的是一台电脑连接着多个网络。不过按照谷歌的规模,用这种说法描述连接着多个数据中心也是非常自然的。

谷歌构建了多个多宿主系统,以确保在出现数据中心级别的停机时,还能保持高可用性(99.99%到99.999%)与一致性,下面这些文章对这些系统进行了详细描述:F1 / Spanner:关系数据库;Photon:对多个连续数据流进行join的部署;Mesa:数据仓储。这些论文分别讨论了各系统所采用的方式,以及在构建多宿主系统时遇到的诸多挑战:全局状态同步、怎么设置检查点,以及可重复的输入与只执行一次的输出等。

为了 保持可用性与一致性,系统受到了很大约束。这就凸显了谷歌持续在简化这些复杂系统,提高其易用性上付出的努力:

多宿主系统的简单性对用户是极有价值的,没有多宿主系统的话,无论故障转移、系统恢复还是一致性问题,都是应用需要解决的问题。而借助多宿主系统,基础设施会处理这些麻烦的问题,应用开发者只要专注于自身应用即可,可用性和一致性有系统来保障。

在这篇论文中最大的惊喜就是:实际中,多宿主系统比故障转移系统所耗费的资源还要少:

部署在3个数据中心之上的多宿主系统,总同步性能为稳定状态的20%,总资源占用为170%,远远小于故障转移系统所需的300%。

故障转移系统有什么问题?

基于故障转移系统的方式并未真正实现高可用性,而且由于需要部署备用资源,会带来成本浪费。

以前我们在使用故障转移系统时,有很多不好的体验。由于非计划性停机很少见,故障转移系统多是后期才添加的功能,无法自动化执行,也没有经过很好的测试。很多时候,团队需要花费数日才能从停机中恢复,一个组件一个组件的上线,用自定义MapReduces之类的临时工具执行状态恢复,并在系统处理停机时的积压工作时,逐步执行优调。这些情况不仅让系统无法再进行扩展,还让团队由于所运行的关键任务系统太过复杂而承受了极大压力。

多宿主系统的工作原理是什么?

相比之下,多宿主系统在设计之初就将运行多个数据中心作为核心设计属性,因此无需另外添加故障转移系统。多宿主系统一直保持多个数据中心运行。每个数据中心都在持续处理工作,同时各数据中心之间的负载会自动进行平衡。一旦某个数据中心的处理速度减缓,系统就会自动将一部分工作调整到速度较快的数据中心上去。一旦某个数据中心出现故障完全不可用,所有工作都会自动分发到其他数据中心上去。

只有持续的动态负载平衡,不再有故障转移的过程。多宿主系统通过实时同步的全局共享状态来协调数据中心之间的工作。所有关键的系统状态都有备份,以确保随时能从另一个数据中心的某个点重新开始工作,同时确保恰一次语义(exactly once semantics)。在出现数据中心级别的故障时,多宿主系统是唯一能够提供高可用性和完整一致性的系统。

在典型流系统中,事件处理基于用户交互来解决;同时,全世界范围内的多台数据中心会为用户提供流量服务和日志存储服务。日志收集服务会在全球范围内收集这些日志,并将其复制到两台或多台特定的日志数据中心上。每个日志数据中心都会保存完整的日志记录,并确保复制到某个数据中心中的所有事件都会(逐渐)复制到其他日志数据中心上。流处理系统运行在一个或多个日志数据中心之上,并处理所有事件。流处理系统所输出的内容通常会存储在全球范围内的一些复制系统中,这样从任何地方都能可靠地对输出执行消费。

在多宿主系统中,所有数据中心都会持续运行并处理事件,典型状况下会部署三台数据中心。在稳定状态下,这三台数据中心每个都能处理33%的流量。如果某台数据中心出现故障而停机,剩下的两台数据中心会分别承担50%的流量处理工作。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
人工智能 前端开发 编译器
【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
57 3
|
25天前
|
监控 安全 API
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
本文详细介绍了PaliGemma2模型的微调流程及其在目标检测任务中的应用。PaliGemma2通过整合SigLIP-So400m视觉编码器与Gemma 2系列语言模型,实现了多模态数据的高效处理。文章涵盖了开发环境构建、数据集预处理、模型初始化与配置、数据加载系统实现、模型微调、推理与评估系统以及性能分析与优化策略等内容。特别强调了计算资源优化、训练过程监控和自动化优化流程的重要性,为机器学习工程师和研究人员提供了系统化的技术方案。
146 77
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
|
19天前
|
机器学习/深度学习 算法 数据可视化
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
本文探讨了在量化交易中结合时序特征和静态特征的混合建模方法。通过整合堆叠稀疏降噪自编码器(SSDA)和基于LSTM的自编码器(LSTM-AE),构建了一个能够全面捕捉市场动态特性的交易系统。SSDA通过降噪技术提取股票数据的鲁棒表示,LSTM-AE则专注于捕捉市场的时序依赖关系。系统采用A2C算法进行强化学习,通过多维度的奖励计算机制,实现了在可接受的风险水平下最大化收益的目标。实验结果显示,该系统在不同波动特征的股票上表现出差异化的适应能力,特别是在存在明确市场趋势的情况下,决策准确性较高。
55 5
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
|
30天前
|
机器学习/深度学习 人工智能 并行计算
【AI系统】Kernel 层架构
推理引擎的Kernel层负责执行底层数学运算,如矩阵乘法、卷积等,直接影响推理速度与效率。它与Runtime层紧密配合,通过算法优化、内存布局调整、汇编优化及调度优化等手段,实现高性能计算。Kernel层针对不同硬件(如CPU、GPU)进行特定优化,支持NEON、AVX、CUDA等技术,确保在多种平台上高效运行。
83 32
|
30天前
|
存储 机器学习/深度学习 人工智能
【AI系统】计算图优化架构
本文介绍了推理引擎转换中的图优化模块,涵盖算子融合、布局转换、算子替换及内存优化等技术,旨在提升模型推理效率。计算图优化技术通过减少计算冗余、提高计算效率和减少内存占用,显著改善模型在资源受限设备上的运行表现。文中详细探讨了离线优化模块面临的挑战及解决方案,包括结构冗余、精度冗余、算法冗余和读写冗余的处理方法。此外,文章还介绍了ONNX Runtime的图优化机制及其在实际应用中的实现,展示了如何通过图优化提高模型推理性能的具体示例。
57 4
【AI系统】计算图优化架构
|
14天前
|
机器学习/深度学习 存储 人工智能
基于AI的实时监控系统:技术架构与挑战分析
AI视频监控系统利用计算机视觉和深度学习技术,实现实时分析与智能识别,显著提升高风险场所如监狱的安全性。系统架构包括数据采集、预处理、行为分析、实时决策及数据存储层,涵盖高分辨率视频传输、图像增强、目标检测、异常行为识别等关键技术。面对算法优化、实时性和系统集成等挑战,通过数据增强、边缘计算和模块化设计等方法解决。未来,AI技术的进步将进一步提高监控系统的智能化水平和应对复杂安全挑战的能力。
|
20天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
62 3
|
17天前
|
前端开发 搜索推荐 安全
陪玩系统架构设计陪玩系统前后端开发,陪玩前端设计是如何让人眼前一亮的?
陪玩系统的架构设计、前后端开发及前端设计是构建吸引用户、功能完善的平台关键。架构需考虑用户需求、技术选型、安全性等,确保稳定性和扩展性。前端可选用React、Vue或Uniapp,后端用Spring Boot或Django,数据库结合MySQL和MongoDB。功能涵盖用户管理、陪玩者管理、订单处理、智能匹配与通讯。安全性方面采用SSL加密和定期漏洞扫描。前端设计注重美观、易用及个性化推荐,提升用户体验和平台粘性。
48 0
|
1月前
|
存储 人工智能 监控
【AI系统】推理系统架构
本文深入探讨了AI推理系统架构,特别是以NVIDIA Triton Inference Server为核心,涵盖推理、部署、服务化三大环节。Triton通过高性能、可扩展、多框架支持等特点,提供了一站式的模型服务解决方案。文章还介绍了模型预编排、推理引擎、返回与监控等功能,以及自定义Backend开发和模型生命周期管理的最佳实践,如金丝雀发布和回滚策略,旨在帮助构建高效、可靠的AI应用。
106 15
|
1月前
|
人工智能 并行计算 程序员
【AI系统】SIMD & SIMT 与芯片架构
本文深入解析了SIMD(单指令多数据)与SIMT(单指令多线程)的计算本质及其在AI芯片中的应用,特别是NVIDIA CUDA如何实现这两种计算模式。SIMD通过单指令对多个数据进行操作,提高数据并行处理能力;而SIMT则在GPU上实现了多线程并行,每个线程独立执行相同指令,增强了灵活性和性能。文章详细探讨了两者的硬件结构、编程模型及硬件执行模型的区别与联系,为理解现代AI计算架构提供了理论基础。
80 12