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

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
视觉智能开放平台,视频资源包5000点
NLP自然语言处理_高级版,每接口累计50万次
简介: 【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 总结

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

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
29天前
|
监控 安全 API
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
本文详细介绍了PaliGemma2模型的微调流程及其在目标检测任务中的应用。PaliGemma2通过整合SigLIP-So400m视觉编码器与Gemma 2系列语言模型,实现了多模态数据的高效处理。文章涵盖了开发环境构建、数据集预处理、模型初始化与配置、数据加载系统实现、模型微调、推理与评估系统以及性能分析与优化策略等内容。特别强调了计算资源优化、训练过程监控和自动化优化流程的重要性,为机器学习工程师和研究人员提供了系统化的技术方案。
150 77
使用PaliGemma2构建多模态目标检测系统:从架构设计到性能优化的技术实践指南
|
22天前
|
机器学习/深度学习 算法 数据可视化
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
本文探讨了在量化交易中结合时序特征和静态特征的混合建模方法。通过整合堆叠稀疏降噪自编码器(SSDA)和基于LSTM的自编码器(LSTM-AE),构建了一个能够全面捕捉市场动态特性的交易系统。SSDA通过降噪技术提取股票数据的鲁棒表示,LSTM-AE则专注于捕捉市场的时序依赖关系。系统采用A2C算法进行强化学习,通过多维度的奖励计算机制,实现了在可接受的风险水平下最大化收益的目标。实验结果显示,该系统在不同波动特征的股票上表现出差异化的适应能力,特别是在存在明确市场趋势的情况下,决策准确性较高。
59 5
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
|
1天前
|
存储 消息中间件 前端开发
工厂人员定位管理系统架构设计:构建一个高效、可扩展的人员精确定位
本文将深入探讨工厂人员定位管理系统的架构设计,详细解析前端展示层、后端服务层、数据库设计、通信协议选择等关键环节,并探讨如何通过微服务架构实现系统的可扩展性和稳定性。
18 10
|
1天前
|
消息中间件 监控 小程序
电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
电竞陪玩系统架构涵盖前端(React/Vue)、后端(Spring Boot/php)、数据库(MySQL/MongoDB)、实时通信(WebSocket)及其他组件(Redis、RabbitMQ、Nginx)。通过模块化设计、微服务架构和云计算技术优化,提升系统性能与可靠性。同时,加强全面测试、实时监控及故障管理,确保系统稳定运行。
|
1月前
|
机器学习/深度学习 人工智能 并行计算
【AI系统】Kernel 层架构
推理引擎的Kernel层负责执行底层数学运算,如矩阵乘法、卷积等,直接影响推理速度与效率。它与Runtime层紧密配合,通过算法优化、内存布局调整、汇编优化及调度优化等手段,实现高性能计算。Kernel层针对不同硬件(如CPU、GPU)进行特定优化,支持NEON、AVX、CUDA等技术,确保在多种平台上高效运行。
88 32
|
1月前
|
存储 机器学习/深度学习 人工智能
【AI系统】计算图优化架构
本文介绍了推理引擎转换中的图优化模块,涵盖算子融合、布局转换、算子替换及内存优化等技术,旨在提升模型推理效率。计算图优化技术通过减少计算冗余、提高计算效率和减少内存占用,显著改善模型在资源受限设备上的运行表现。文中详细探讨了离线优化模块面临的挑战及解决方案,包括结构冗余、精度冗余、算法冗余和读写冗余的处理方法。此外,文章还介绍了ONNX Runtime的图优化机制及其在实际应用中的实现,展示了如何通过图优化提高模型推理性能的具体示例。
57 4
【AI系统】计算图优化架构
|
21天前
|
设计模式 监控 Java
分布式系统架构4:容错设计模式
这是小卷对分布式系统架构学习的第4篇文章,重点介绍了三种常见的容错设计模式:断路器模式、舱壁隔离模式和重试模式。断路器模式防止服务故障蔓延,舱壁隔离模式通过资源隔离避免全局影响,重试模式提升短期故障下的调用成功率。文章还对比了这些模式的优缺点及适用场景,并解释了服务熔断与服务降级的区别。尽管技术文章阅读量不高,但小卷坚持每日更新以促进个人成长。
45 11
|
23天前
|
消息中间件 存储 安全
分布式系统架构3:服务容错
分布式系统因其复杂性,故障几乎是必然的。那么如何让系统在不可避免的故障中依然保持稳定?本文详细介绍了分布式架构中7种核心的服务容错策略,包括故障转移、快速失败、安全失败等,以及它们在实际业务场景中的应用。无论是支付场景的快速失败,还是日志采集的安全失败,每种策略都有自己的适用领域和优缺点。此外,文章还为技术面试提供了解题思路,助你在关键时刻脱颖而出。掌握这些策略,不仅能提升系统健壮性,还能让你的技术栈更上一层楼!快来深入学习,走向架构师之路吧!
56 11
|
18天前
|
机器学习/深度学习 存储 人工智能
基于AI的实时监控系统:技术架构与挑战分析
AI视频监控系统利用计算机视觉和深度学习技术,实现实时分析与智能识别,显著提升高风险场所如监狱的安全性。系统架构包括数据采集、预处理、行为分析、实时决策及数据存储层,涵盖高分辨率视频传输、图像增强、目标检测、异常行为识别等关键技术。面对算法优化、实时性和系统集成等挑战,通过数据增强、边缘计算和模块化设计等方法解决。未来,AI技术的进步将进一步提高监控系统的智能化水平和应对复杂安全挑战的能力。
|
23天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
74 3