别再用老旧架构了!单元化构建超强弹性和容错系统!

简介: 【10月更文挑战第10天】

0 关键收获

  • 单元化架构提高了微服务的弹性和容错性。
  • 可观察性对于开发和运营单元化架构至关重要。
  • 单元路由器是单元基础架构的关键组件,它需要快速响应单元可用性和健康变化。
  • 要成功采用单元化架构,需要全面和综合的方法来实现可观察性。
  • 单元化架构利用与微服务相同的可观察性支柱,但需要定制以适应这种架构特有的元素。

在过去的几年中,单元化架构作为一种新兴的范式,公司如:

  • Slack(将最关键的用户服务从单体架构迁移到单元化架构)
  • Flickr(采用联邦方法在许多服务的分片或集群上存储用户数据)
  • Salesforce(设计了一个基于50个节点的自我包含功能的pod解决方案)
  • 以及Facebook(提出了由集群、元数据存储和Zookeeper中的控制器组成的服务单元称为单元的构建块)

他们使用这些架构来解决弹性和容错的挑战。受欢迎的原因包括故障隔离、可扩展性提高、维护简化、容错性增强、灵活性和成本效益。

在实现弹性和容错的旅程中,基于单元架构的倡导者依赖于可观察性,这在补充实现中发挥了关键作用。对于Interact来说就是这种情况,它是最早记录可观察性对保证健康的单元化架构至关重要的公司之一。Interact的工程团队使用可观察性来提供对系统行为的深入洞察,使他们能够主动发现问题,并在故障发生时促进更快的恢复。具体来说,他们使用了每个单元托管的最大客户端数量和每个单元每天的最大请求数量来创建新的基础架构以及现有架构。

本文深入探讨了采用单元化架构的弹性和容错优势,重点关注可观察性方面。

  • 第一部分回答了一个常见问题:如果微服务已经具有弹性和容错性,为什么还要使用单元化架构?
  • 有了这个解释,第二部分专注于可观察性以及分析单元化架构的输入和输出的考虑因素
  • 最后,它介绍了实现所需的最佳实践和收获,以便早期发现问题,快速诊断问题,并做出明智的决策,以增强弹性和容错性。

1 为啥还用单元化架构?

微服务已具有弹性和容错性,为啥还用单元化架构?微服务确实降低了单个错误可能使整个系统崩溃的风险,因为它们使用更小的独立部署单元。这种范式允许微服务中的故障不影响整个应用程序。然而,处理服务间通信的复杂性也降低了弹性和容错水平也是一个现实。虽然微服务非常适合处理以模块化和管理性为重点的大型企业应用程序,但在需要极端模块化、可扩展性和资源效率的场景中,单元化架构提供了优势。这就是为什么Tumblr,一个从初创公司到几个月内非常成功的公司,选择从单体架构迁移到单元化架构而不是微服务。可扩展性是他们的优先事项,因为他们不得不在处理每月流量大幅增加的同时发展他们的基础设施。

1.1 单元化策略:高可用性以满足快速增长的需求

选择基于微服务的架构需要仔细分析其优点和缺点之间的平衡。虽然它提供了改进的可扩展性、容错性和更容易的操作,但它也引入了实现和管理的复杂性。然而,单元化架构非常适合优先考虑高可用性、需要快速增长或能够缩放单个组件和隔离故障的系统。

单元化架构不是万能解决方案,而是一种与特定业务和技术需求一致的战略选择。下图说明基于微服务的架构如何将更大的系统分割成包含有界上下文业务领域的组件。

基于微服务的架构:

下图显示了单元化架构如何简化与这些服务之间的通信复杂性,其中每个单元都是相同的,并且表示一个独立缩放的整个栈

单元化架构:

关于上图,实现单元化架构有两种视角:

  • 一种是单元是不可变的组件,共同提供服务

    在第一种视角中,单元可以相互通信。

  • 另一种是每个单元都是相同的,并且代表一个整个服务

    第二种视角中,单元作为完整的单元独立构建、部署和管理,因为单元之间没有通信。

单元化架构可以提供改进的弹性和容错性,但操作员如何确定系统是否提供了这些好处?答案是可观察性。

2 观察单元化架构的考虑因素

单元化架构通过隔离、自主和复制的核心原则提供了构建弹性系统的健壮方法。每个单元独立操作,管理其资源并自主做出决策。数据和关键服务在单元内复制以增强可用性。

这些架构在多个区域或数据中心分布单元,以确保弹性和容错性,保护免受区域性中断的影响。连续的健康检查和监控可以及早发现故障,而断路器可以防止级联故障。负载均衡确保高效流量分配,优雅降级优先考虑在部分故障期间的重要功能。混沌工程通过模拟故障定期测试弹性,识别弱点。

可观察性是理解当前实现状态和内部工作状态的最先进工具。尽管没有它系统也可以工作,但收集、处理、聚合和显示实时定量指标可以提高弹性和容错性。这正是将其作为网站可靠性工程中的一个原则的原因之一。

2.1 可观察性是优秀架构的支柱

除了作为理解系统行为的策略外,可观察性对于实现良好架构的目标至关重要,特别是在运营卓越、可靠性和性能效率方面。图3说明了良好架构框架的共同支柱,并使它们的可观察性关系可见。在运营卓越方面,可观察性提供了理解系统性能、识别潜在问题以及做出优化决策所需的洞察。为了实现性能效率,可观察性使组织能够识别其系统中的瓶颈和低效,并采取行动提高性能并降低成本。最后,通过监控系统行为和及早发现异常,可观察性有助于防止故障并最小化停机时间。

良好架构框架 + 可观察性:

在观察单元化架构的过程中,第一步是定义目标并确定适合评估弹性和容错水平的指标,如平均故障间隔时间(MTBF)、平均修复时间(MTTR)、可用性和恢复时间目标(RTO)。一旦指标清晰,下一个活动是提供结合日志记录、指标收集、跟踪和事件跟踪的仪器机制,以收集相关数据。然后建立强大的基础设施,以高效地收集和聚合这些数据。此时,观察员通常将收集的数据存储在适当的存储库中,如时间序列数据库,并通过过滤、转换和丰富处理它。分析工具和可视化提供洞察力,识别模式,并检测异常。这些洞察力被整合到开发和操作工作流程中,建立反馈循环,推动系统设计和性能改进。最后,该过程根据反馈和不断演变的要求进行迭代细化。图4完整地说明了整个过程。

2.2 为单元化架构定制可观察性

基于单元架构的可观察性需要定制方法来解决这种分布式系统设计所呈现的独特挑战和机会。考虑到可观察性是关于监控、跟踪和日志记录,单元感知仪器包括在单元级别收集指标,即通常捕获资源利用率(CPU、内存、网络)、请求延迟、错误率和与每个单元功能相关的自定义业务指标。分布式跟踪是关于实现跟踪以跟踪跨单元边界的请求,提供对交互流的洞察,并确定瓶颈。最后,日志聚合应该来自各个单元到一个集中的系统,允许跨整个架构进行相关性和分析。

第二个考虑因素是创建针对每个单元的特定功能和KPI量身定制的单元级仪表板,使适当的监控和故障排除成为可能。有了这种配置,基于单元特定阈值和异常的单元特定警报确保及时通知影响单个单元的问题。

第三个与可观察性最佳实践相关的考虑因素是需要一个独特的项目,将来自各种单元级可观察性工具的数据集成到一个集中的平台中,以进行整体监控和分析。这使得利用集中平台跨单元相关事件和指标,揭示依赖关系和潜在的级联故障变得更加容易。

针对单元化架构的可观察性提出的框架:

最后一个考虑因素是单元隔离,它测试各个单元以识别特定于其功能的的性能瓶颈和故障模式。在这个考虑因素中,混沌实验预计将被设计和开发,以允许在单元级别进行受控中断(例如,网络延迟、资源限制),以评估弹性并识别弱点。

通过实施这些实践,组织可以获得对其基于单元架构行为的深入了解,实现主动监控、快速故障排除和改进的整体系统可靠性和性能。始终记住,单元本身的组成可能因业务而异,这可能是一个优势,因为多样性正是基于单元架构的好处之一。

3 路由层咋提供弹性、容错性和可观察性

除了单元和控制平面之外,单元路由在提供单元化架构的弹性和容错性方面至关重要。它的任务是根据分区键将请求分发到正确的单元,并向客户端呈现一个单一的端点。根据DoorDash的说法,这个组件提供了包括在服务跨可用性区域不均匀分布时保持流量平衡在内的多种好处。这使得动态设置pods之间的流量权重成为可能,消除了手动操作,并减少了单个或多AZ故障的影响范围,这在容错和降低流量延迟方面至关重要,因为呼叫服务连接到更近的被调用者。

为了实现网络中的容错,路由层使用了一些机制,这些机制已被记录为提供弹性的创新解决方案。其中之一是路径冗余,路由协议发现并维护到目的地的多条路径;通过这种方式,如果主路径失败,流量将自动通过备用路径重新路由。另一种策略是快速重新路由,旨在快速检测故障并收敛到新的路由解决方案,最小化停机时间和服务中断;经典的负载均衡在多条路径上分配流量,防止拥塞并优化网络资源利用。最后,故障检测和恢复,一旦检测到故障,路由协议触发恢复过程以找到备用路径。

3.1 路由层在架构可观察性中的作用

由于单元化系统是分布式的,路由层也显著影响可观察性。由于它是一个集中操作单元的组件,它是提供整个系统健康和性能洞察的最佳候选者。从这个组件观察架构允许在网络的各个点进行流量模式、延迟和错误观察。这使得操作员能够准确定位瓶颈、识别失败的组件,并优化路由决策以获得更好的性能。

此外,路由层可以被仪器化以收集详细的指标和日志,为故障排除和根本原因分析提供有价值的数据。例如,跟踪请求在多个单元中的路径可以揭示延迟发生或错误起源的位置。这种细粒度的可见性对于维护复杂的单元化应用程序的可靠性和效率至关重要。

总之,基于单元架构中的路由层不仅负责指导流量,还作为可观察性的关键组件。监控和分析流量模式提供了对系统行为的有价值洞察,使主动故障排除和优化成为可能。这确保了单元化系统保持弹性和可扩展性,并在不同的工作负载下表现最佳。

4 为单元化架构提供弹性、容错性和可观察性的最佳实践

基于单元架构的可观察性对于维护系统健康和性能至关重要。一个基本的最佳实践是集中日志记录,将来自所有单元的日志聚合到一个统一的存储库中。这种整合简化了故障排除和分析,使操作员能够快速识别和解决整个系统的问题。结构化日志格式进一步提高了这一过程,使日志数据的高效查询和过滤成为可能。

4.1 指标和监控

指标和监控是可观察性的同等重要组成部分。收集有关单元性能、资源利用率和错误率的详细指标为系统行为提供了宝贵的洞察。根据这些指标设置仪表板和警报,可以主动识别异常和潜在瓶颈。像Grafana这样的可视化工具可以有效地显示这些指标,更容易发现可能表明潜在问题的趋势和模式。

4.2 分布式跟踪

分布式跟踪是理解请求流经基于单元架构的另一个重要实践。通过跟踪跨多个单元移动的请求,操作员可以准确定位性能瓶颈、延迟问题以及微服务交互中的故障。像Jaeger、Zipkin或AWS X-Ray这样的分布式跟踪工具可以帮助可视化这些复杂的交互,使诊断和解决单元间通信中出现的问题变得更加简单。

4.3 警报和事件管理

警报和事件管理是全面可观察性策略的一个组成部分。根据日志和指标中的预定义阈值或异常配置警报,可以及时通知潜在问题。这些警报可以通过各种渠道发送,如电子邮件和短信,或集成到像PagerDuty这样的事件管理平台中。拥有明确定义的事件管理流程,确保对警报的快速和有组织的响应,最小化停机时间和对整个系统的影响。

4.4 可观察性的全面方法

除了这些核心实践之外,采用全面的可观察性方法也是有益的。这包括定期审查和完善日志记录、监控和跟踪配置,以适应不断演变的系统需求。此外,将事件事后分析的反馈纳入考虑,可以帮助识别可观察性策略改进的领域。通过不断提升可观察性,组织可以确保其单元化架构保持弹性、性能良好且易于管理。

5 总结

本文由“[单元化架构:如何构建可扩展和弹性系统]”文章系列的一部分。在这个系列中,我们展示了一个发现之旅,并提供了对单元化架构的许多关键方面的全面概述和深入分析,以及将这种方法应用于现有和新架构的实用建议。

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
5月前
|
SQL 前端开发 关系型数据库
如何开发一套研发项目管理系统?(附架构图+流程图+代码参考)
研发项目管理系统助力企业实现需求、缺陷与变更的全流程管理,支持看板可视化、数据化决策与成本优化。系统以MVP模式快速上线,核心功能包括需求看板、缺陷闭环、自动日报及关键指标分析,助力中小企业提升交付效率与协作质量。
|
4月前
|
数据采集 机器学习/深度学习 运维
量化合约系统开发架构入门
量化合约系统核心在于数据、策略、风控与执行四大模块的协同,构建从数据到决策再到执行的闭环工作流。强调可追溯、可复现与可观测性,避免常见误区如重回测轻验证、忽视数据质量或滞后风控。初学者应以MVP为起点,结合回测框架与实时风控实践,逐步迭代。详见相关入门与实战资料。
|
5月前
|
JSON 文字识别 BI
如何开发车辆管理系统中的加油管理板块(附架构图+流程图+代码参考)
本文针对中小企业在车辆加油管理中常见的单据混乱、油卡管理困难、对账困难等问题,提出了一套完整的系统化解决方案。内容涵盖车辆管理系统(VMS)的核心功能、加油管理模块的设计要点、数据库模型、系统架构、关键业务流程、API设计与实现示例、前端展示参考(React + Antd)、开发技巧与工程化建议等。通过构建加油管理系统,企业可实现燃油费用的透明化、自动化对账、异常检测与数据分析,从而降低运营成本、提升管理效率。适合希望通过技术手段优化车辆管理的企业技术人员与管理者参考。
|
5月前
|
消息中间件 缓存 JavaScript
如何开发ERP(离散制造-MTO)系统中的生产管理板块(附架构图+流程图+代码参考)
本文详解离散制造MTO模式下的ERP生产管理模块,涵盖核心问题、系统架构、关键流程、开发技巧及数据库设计,助力企业打通计划与执行“最后一公里”,提升交付率、降低库存与浪费。
|
4月前
|
前端开发 JavaScript BI
如何开发车辆管理系统中的车务管理板块(附架构图+流程图+代码参考)
本文介绍了中小企业如何通过车务管理模块提升车辆管理效率。许多企业在管理车辆时仍依赖人工流程,导致违章处理延误、年检过期、维修费用虚高等问题频发。将这些流程数字化,可显著降低合规风险、提升维修追溯性、优化调度与资产利用率。文章详细介绍了车务管理模块的功能清单、数据模型、系统架构、API与前端设计、开发技巧与落地建议,以及实现效果与验收标准。同时提供了数据库建表SQL、后端Node.js/TypeScript代码示例与前端React表单设计参考,帮助企业快速搭建并上线系统,实现合规与成本控制的双重优化。
|
5月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
5月前
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
758 52
|
4月前
|
机器学习/深度学习 人工智能 缓存
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
本文提出面向边缘通用智能的多大语言模型(Multi-LLM)系统,通过协同架构、信任机制与动态编排,突破传统边缘AI的局限。融合合作、竞争与集成三种范式,结合模型压缩、分布式推理与上下文优化技术,实现高效、可靠、低延迟的边缘智能,推动复杂场景下的泛化与自主决策能力。
399 3
面向边缘通用智能的多大语言模型系统:架构、信任与编排——论文阅读
|
5月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
1343 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
4月前
|
人工智能 自然语言处理 安全
AI助教系统:基于大模型与智能体架构的新一代教育技术引擎
AI助教系统融合大语言模型、教育知识图谱、多模态交互与智能体架构,实现精准学情诊断、个性化辅导与主动教学。支持图文语音输入,本地化部署保障隐私,重构“教、学、评、辅”全链路,推动因材施教落地,助力教育数字化转型。(238字)
802 23

热门文章

最新文章