弹性架构:容错系统策略

news/2024/5/20 5:48:31 标签: 架构, 系统架构, 微服务, serverless, 数据库

如今软件无处不在 - 从我们的手机到汽车和电器。这意味着软件系统的可靠性、健壮性和弹性非常重要。 弹性系统可以承受故障或错误而不会完全崩溃。容错能力是弹性的关键部分。即使出现问题,它也能让系统保持正常工作。

在本文中,我们将了解为什么弹性和容错能力对业务很重要。我们还将讨论构建容错系统的核心原则和策略。这包括冗余、故障转移、复制和隔离等内容。此外,我们将研究不同的测试方法如何识别潜在问题并提高弹性。最后,我们将讨论弹性系统设计的未来。云计算、容器和无服务器平台等新兴趋势正在改变弹性系统的构建方式。

韧性的重要性

系统故障可能会损害业务和技术运营。从业务角度来看,中断会导致收入损失、声誉受损、客户不满意以及竞争优势丧失。例如,2021 年,Reddit、Spotify 和 AWS 等主要在线服务宕机了几个小时。这次中断造成了数百万美元的损失,也让用户感到沮丧。同样,2021 年的一次维护错误导致 Facebook 及其服务在全球范围内中断约六个小时。数十亿用户和广告商受到影响。

在技术方面,系统故障可能会导致数据丢失或损坏、安全漏洞、性能问题和复杂性。例如,2020 年 Garmin 遭受勒索软件攻击,扰乱了其在线服务和健身追踪器。最近,即 2023 年,人为因素导致澳大利亚的 Microsoft Azure 服务器出现严重中断。

因此,构建弹性和容错系统至关重要。这样做可以防止或最大程度地减少系统故障对业务和技术运营的影响。

了解容错系统

即使出现问题,容错系统也能保持正常工作。故障是导致系统行为与预期不同的任何问题。故障可能是由硬件故障、软件错误、人为错误或断电等环境因素引起的。

在具有大量服务和子服务、数百台服务器并分布在不同数据中心的复杂系统中,小问题总是会发生。这些问题一定不能影响用户体验。

构建容错能力的三个主要原则:

  • 冗余- 出现故障时可以接管的额外组件。
  • 故障转移 - 当检测到故障时自动切换到备份组件。
  • 复制 - 创建服务器或数据库等组件的多个相同实例。

消除单点故障至关重要。系统的设计必须确保没有任何单个组件对运行至关重要。如果该组件发生故障,系统可以通过冗余和故障转移继续工作。

这些原则使得容错系统能够检测故障、解决故障并在故障发生时进行恢复。这增加了整体弹性。通过避免过度依赖任何一个组件,可以提高整个系统的可靠性。

构建弹性系统的策略

在本节中,我们将讨论容错系统的三个原则中的每一个,并提供有效使用它们的系统示例。

冗余

冗余涉及拥有备用或替代组件,以便在出现故障时可以接管。它可以应用于硬件、软件、数据或网络。优点包括提高可用性、可靠性和性能。冗余消除了单点故障并实现了负载平衡和并行处理。

示例:负载平衡的 Web 应用程序

  • 该 Web 应用程序在 3 个区域的 20 台服务器上运行

  • 全局负载均衡器监控每台服务器的健康状况

  • 如果美国东部的 2 个服务器发生故障,平衡器会将流量路由到美国西部和欧洲的其余服务器

  • 避免单一区域故障可提供连续的正常运行时间

故障转移

故障转移机制检测故障并自动切换到备份。这可以保持连续性、一致性和数据完整性。故障转移允许在发生故障后顺利恢复操作。

示例:无服务器视频编码

  • 媒体编码功能在 AWS Lambda 等无服务器平台上运行

  • 平台跨多个可用区 (AZ) 自动扩展实例

  • 可用区故障会禁用这些功能实例

  • 其他实例在剩余可用区中启动以处理负载

  • 故障转移提供弹性编码能力

复制

复制涉及在多个位置维护数据或软件等资源的相同副本。它提高了可用性、耐用性、性能、安全性和隐私性。

示例:高可用性数据库集群

  • 2 个数据库节点配置为主动-被动集群

  • 主动节点处理所有事务,而被动节点复制数据

  • 集群管理器检测到主动故障并自动将被动提升为主动

  • 虚拟IP地址迁移到新的主动节点以重定向客户端连接

  • 故障转移提供数据库服务器崩溃的无缝恢复

测试在弹性系统中的作用

测试在构建弹性、容错系统方面发挥着关键作用。测试有助于在潜在的弱点造成真正的故障或中断之前识别并解决它们。有多种针对弹性的测试方法,包括混沌工程、压力测试和负载测试。

这些技术模拟现实的故障场景,例如硬件崩溃、流量峰值或数据库过载。目标是观察系统如何响应并找到提高容错能力的方法。测试验证冗余、故障转移、复制和其他策略是否按预期工作。

所有大型 IT 公司都会进行弹性测试。 Netflix 在这方面处于领先地位。他们使用模拟以及系统或区域的受控关闭部分来识别任何需要修复的漏洞。此类测试的受控性质允许在不影响用户体验的情况下识别系统可靠性方面的差距。与意外发生此类中断并影响用户体验的情况相比。

弹性系统架构的未来

弹性系统架构领域正在不断发展并适应新兴趋势和技术带来的新挑战和机遇。让我们来谈谈当今影响弹性系统设计和开发的一些趋势和技术。

  • 云计算提供灵活的可扩展性来应对使用高峰和峰值负载。它通过自动化简化了增加容量或更换故障组件的过程。丰富的无服务器计算能力可实现冗余和动态故障转移。这些云属性有助于构建可弹性扩展的弹性系统。

  • 微服务将整体应用程序分解为独立的模块化服务。每个服务都专注于特定功能并通过 API 进行通信。这可以实现故障隔离以及每个服务的独立扩展/更新。微服务可以轻松复制和负载平衡以实现高可用性。松散耦合和小型代码库也有助于恢复能力。

  • 容器将代码与依赖项和配置打包在一起,以便跨环境进行可预测、可移植的执行。容器共享主机资源,但彼此隔离运行。这通过一致的部署、故障遏制和资源效率提高了弹性。容器简化了管理。

  • 无服务器计算抽象了服务器和基础设施。开发人员只需编写可自动扩展的功能代码片段。无服务器平台处理配置、扩展、修补等。基于使用情况的定价可降低成本。通过消除服务器管理职责,无服务器计算简化了弹性系统的构建。

  • 监控通过指标、日志记录和跟踪提供对系统运行状况和行为的实时可见性。该数据可以识别/诊断故障和性能问题。可观察性工具可帮助团队了解故障、调整系统并提高可靠性。强大的监控是有效运行弹性系统的关键。

结论

弹性是跨行业和应用程序的系统的关键品质。通过应用冗余、故障转移、复制和严格测试等核心原则,我们可以开发容错系统,在故障期间提供可靠性、可用性和持续服务。随着云计算、微服务和无服务器架构等技术趋势的广泛传播,弹性的新机遇和挑战也随之出现。然而,通过及时了解领先实践、跨领域协作并牢记反脆弱性的最终目标,工程师可以打造出具有弹性设计的系统。尽管形势将继续发展,但本文涵盖的策略和思维方式将作为坚实的基础。弹性是一个旅程,而不是目的地,但通过明智的架构和测试,我们可以构建为未来做好准备的系统。

作者:Maria Rogova

更多技术干货请关注公号【云原生数据库

squids.cn,云数据库RDS,迁移工具DBMotion,云备份DBTwin等数据库生态工具。

irds.cn,多数据库管理平台(私有云)。


http://www.niftyadmin.cn/n/5266716.html

相关文章

多汗症的护理重点是什么?

多汗症的护理重点主要包括以下几个方面,通过这些护理措施,可以帮助患者减轻症状,提高生活质量。 一、保持皮肤清洁 多汗症患者应特别注意保持皮肤清洁,以避免汗液积聚和细菌滋生。每天至少洗澡一次,特别是在运动或出…

halcon3

*外焊缝检测 *读取图片 *遍历文件夹 list_files (D:/D程序/外焊缝方案/碳钢方 - 外/30000, files, Files) *文件格式筛选 tuple_regexp_select (Files, .*, ImageFiles) *依次读取图片 for I := 1 to |ImageFiles|-1 by 1 read_image (Image, ImageFiles[I]) dev_close_windo…

ssm+vue的高校智能培训管理系统分析与设计(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的高校智能培训管理系统分析与设计(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller&#xff09…

XIAO ESP32S3之实现口罩检测

一、例程介绍 此例程是运行FOMO 轻量检测模型实现人员佩戴口罩检测,Demo中已包含训练好的模型参数,无需再训练。 FOMO(Faster Objects, More Objects) 是由 Edgeimpulse 工程师提出的一种轻量级的目标检测模型,其主要特点是模型非常小&#…

知乎口碑问答推广怎么做?

知乎作为一个开放性的问答社区,把各行各业的用户链接在一起,用户可以在知乎平台分享自己的经验,也可以在知乎上搜索自己感兴趣的问题,因此就会有很多企业想要在知乎上进行问答营销推广自己的产品。那么,知乎问答营销推…

Graylog 中日志级别及其对应的数字

在 Graylog 中,日志级别 level 通常使用数字表示,数字越低表示日志级别越高。以下是常见的日志级别及其对应的数字表示: DEBUG(调试):对应数字 7。INFO(信息):对应数字 …

AE-制作科技感穿梭隧道

目录 1.新建合成命名为隧道 2.在合成中新建纯色层命名为五边形隧道

MeterSphere 和 Yapi 接口测试功能对比

一、产品介绍 MeterSphere 是一站式开源持续测试平台,涵盖测试跟踪、接口测试、UI 测试和性能测试等,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队在线共享协作,实现端到端的测试管理跟踪可视化、自动化测试…