2025-01-20利用基于 Cell 的架构构建弹性和容错系统

基于单元的架构在过去几年已成为新兴范式,为不少公司所采用,比如 Slack(将关键的面向用户服务从单体架构迁移至基于单元的架构)、Flickr(用联合方法将用户数据存储在多个服务的分片或集群上)、Salesforce(依据 Pod 设计解决方案,其独立功能由 50 个节点构成)和 Facebook(提出使用名为 cells 的服务构建块,每个 cell 包含一个集群、一个元数据存储和 Zookeeper 中的控制器)。这些公司利用这种架构应对弹性和容错方面的挑战。这种架构流行的原因包括故:故障隔离、可扩展性提升、维护简化、容错能力增强、灵活性和成本效益。

在实现弹性和容错时,基于单元的架构的支持者一直依靠可观测性,它在补充实施中起着关键作用。Interact 就是典型例子,它是最早记录可观测性对保障健康的基于单元的架构至关重要的公司之一。Interact 的工程团队利用可观测性深入了解系统行为,从而主动检测问题,并加快从故障中恢复。具体而言,他们根据托管客户端的最大数量和每个单元的最大日请求数来创建新基础设施和现有架构。

本文将探讨采用基于单元架构在弹性和容错方面的优势,重点关注可观测性。第一部分解答一个常见问题:如果微服务已具备弹性和容错能力,为何还要使用基于单元的架构?基于该内容,第二部分聚焦可观测性和分析基于 Cell 架构输入输出的注意事项。最后,对最佳实践和要点进行回顾,从而实现早期问题发现、快速问题诊断,为增强弹性和容错能力做出明智决策提供必要的可见性。

如果微服务已具备弹性和容错能力,为何还要使用基于单元的架构?

实际上,微服务因采用可独立部署的小单元,降低了单个错误致使整个系统瘫痪的风险。这种模式可使微服务内的故障不影响整个应用程序。但处理因服务间通信产生的复杂性会降低弹性和容错水平,这也是客观情况。微服务虽适合处理大型企业应用中模块化和可管理性相关问题,但在对模块化、可扩展性和资源效率要求极高的场景中,基于单元的架构更具优势。这就是 Tumblr 在几个月内从初创公司发展成成功企业时,宁愿从单体架构转向基于单元的架构而非微服务架构的原因。对他们而言,可扩展性是首要任务,因为在处理月流量大幅增长问题的同时,还必须发展基础设施。

▏基于单元的策略:满足快速增长需求的高可用性

选择微服务架构需仔细权衡其优缺点。它虽提高了可扩展性、容错能力且操作更简便,但也带来了实施和管理的复杂性。而基于单元的架构非常适用于优先考虑高可用性、需要快速发展,或重视单个组件扩展和故障隔离能力的系统。

基于单元的架构并非通用解决方案,而是与特定业务和技术需求相符的战略选择。图 1 阐释了微服务架构如何将大型系统拆分为封装有界上下文业务域的组件。图 2 展示了基于 Cell 的架构如何简化这些服务间通信的复杂性,其中每个 Cell 都相同,代表可独立扩展的整个堆栈。

关于图 2,实现基于 Cell 的架构有两种视角:一种是 Cell 为共同提供服务的不可变组件;另一种是每个 Cell 都相同,代表整个服务。从第一个角度看,Cell 之间可相互通信。从第二种情况看,由于单元间无通信,所以单元作为完整单元独立构建、部署和管理。

基于单元的架构能提供更高的弹性和容错能力,但运营者如何确定系统是否具备这些优势呢?答案是可观测性

基于 Cell 架构的观测要点

基于单元的架构为构建弹性系统提供了一种有力方法,其通过隔离、自治和复制的核心原则来达成这一目标。每个单元独立运行,管理自身资源并自主决策。数据和关键服务在单元内复制,以此增强可用性。

这些架构将单元分布于多个区域或数据中心,以此保障弹性和容错能力,预防区域性中断。持续的运行状况检查与监控能尽早发现故障,断路器可防止级联故障。负载均衡可确保高效的流量分配,平稳降级则能在部分故障期间保障基本功能优先。混沌工程通过模拟故障来定期测试弹性。

可观测性是了解当前实现状态和内部工作原理的先进工具。即便系统没有此功能也能运行,但收集、处理、聚合和展示实时定量指标可提升弹性和容错能力,这也是它成为站点可靠性工程原则的原因之一。

▏可观测性:优秀架构的支柱

除作为了解系统行为的策略外,可观测性对于实现良好架构目标也至关重要,尤其在卓越运营、可靠性和性能效率方面。图 3 阐释了良好架构框架的常见支柱以及它们与可观测性的关系。在卓越运营方面,可观测性提供了解系统性能、识别潜在问题和做出优化决策所需的见解。为实现性能效率,可观测性使组织能够找出系统中的瓶颈和低效之处,从而采取行动提升性能、降低成本。最后,对于可靠性而言,通过监控系统行为和尽早检测异常,可观测性有助于预防故障、最大程度减少停机时间。

在观测基于单元架构的过程中,第一步是明确目标并确定指标,如平均故障间隔时间(MTBF)、平均修复时间(MTTR)、可用性和恢复时间目标(RTO),这些指标很适合评估弹性和容错能力水平。明确指标后,下一步骤是提供包含日志记录、指标收集、跟踪和事件跟踪的检测机制来收集相关数据,然后构建强大的基础设施以有效收集和聚合这些数据。接着,观测者通常将收集的数据存储于合适的存储库(如时间序列数据库)中,并通过筛选、转换和扩充来处理数据。分析工具和可视化效果可获取见解、识别模式和检测异常,这些见解会被整合到开发和运营工作流程中,建立反馈回路,推动系统设计和性能改进。最后,对流程进行迭代优化,依据反馈和不断变化的需求持续调整检测、数据收集和分析环节。下图展示了完整的流程。

▏为基于 Cell 架构定制可观测性

基于单元架构的可观测性需要量身定制的方法,以应对这种分布式系统设计带来的独特挑战和机遇。考虑到可观测性涉及监控、跟踪和日志记录,单元感知检测包括在单元层面收集指标,即一般要捕获资源利用率(CPU、内存、网络)、请求延迟、错误率以及与每个单元功能相关的自定义业务指标。分布式跟踪是实施跟踪以跨越单元边界追踪请求,为交互流提供见解并查明瓶颈。最后,日志聚合应从单个单元汇聚到一个集中式系统,以便在整个架构中进行关联和分析。

第二个考虑因素是创建针对每个单元特定功能和关键绩效指标(KPI)定制的单元级仪表板,以实现恰当的监控和故障排除。通过这种配置,基于单元格特定阈值和异常的单元格特定警报可确保及时通知影响单个单元格的问题。

与可观测性最佳实践相关的第三个考虑因素是需要一个独特的项目:将来自各种单元级可观测性工具的数据集成到一个集中式平台,以便进行整体监控和分析。这样能更轻松地利用集中式平台关联各个单元的事件和指标,从而揭示依赖关系和潜在的级联故障。

最后一个考虑因素是单元分离,即测试单个单元以确定其特定功能的性能瓶颈和故障模式。鉴于此,预计要设计和开发混沌实验,以便在单元层面进行受控中断(如网络延迟、资源限制),从而评估弹性并识别弱点。

通过实施这些实践,组织能够深入了解其基于单元架构的行为,进而实现主动监控、更快地故障排除,并提升整体系统可靠性和性能。需始终牢记,单元本身的构成可能因企业而异,这可能是个优势,因为多样性正是基于单元架构的好处之一。

路由层如何保障弹性、容错与可观测性

在基于 Cell 的架构中,除了Cell 和控制平面外,Cell 路由对保障弹性和容错能力至关重要。它的职责是依据分区键将请求分发至正确的单元,从而为客户端提供单一端点。据 DoorDash 称,该组件有诸多益处,包括保持流量平衡,即便服务在可用区的分布不均也不受影响。这使得在 Pod 间动态设置流量权重成为可能,进而消除了手动操作,并减小了单个或多个可用区中断的影响范围,这对于容错和减少流量延迟意义重大,因为调用方服务能连接到更近的被调用方。

为在网络中实现容错能力,路由层运用了多种机制,这些机制已被视作提供弹性的创新方案。其中包括路径冗余,即路由协议能发现并维护通往目的地的多条路径,如此一来,若主路径故障,流量会自动通过备用路径重新路由。另一种策略是快速重新路由,旨在快速检测故障并切换至新的路由方案,从而最大程度减少停机时间和服务中断。还有经典的负载均衡,可在多条路径间分配流量,防止拥塞并优化网络资源利用率。最后是故障检测与恢复,路由协议在检测到故障后触发恢复流程以寻找备用路径。

▏路由层在架构可观测性方面的作用

鉴于基于Cell的系统是分布式的,路由层对可观测性影响显著。它作为统筹Cell操作的组件,是了解系统整体健康状况和性能的关键切入点。通过该组件观测架构,可掌握网络各节点的流量模式、延迟和错误情况,这有助于运维人员查明瓶颈、识别故障组件,进而优化路由决策以提升性能。

此外,还可对路由层进行检测,收集详细的指标和日志,为故障排查和根本原因分析提供有价值的数据。例如,跨多个 Cell 跟踪请求路径能够找出延迟发生的位置或错误来源。这种精准的可见性对于维持基于单元的复杂应用程序的可靠性和效率至关重要。

总之,基于 Cell 架构中的路由层不仅负责引导流量,还是可观测性的关键部分。对流量模式的监控与分析能为系统行为提供宝贵见解,从而实现主动故障排查和优化。这确保了基于单元的系统保持弹性和可扩展性,在不同工作负载下都能发挥最佳性能。

基于 Cell 架构实现弹性、容错和可观测性的最佳实践

在基于单元的架构中,可观测性对维护系统运行状况和性能极为关键。首要的最佳实践是集中式日志记录,即将所有单元的日志汇聚到统一的存储库。这种整合方式简化了故障排查与分析流程,能让运维人员快速发现并解决整个系统内的问题。结构化的日志记录格式可支持对日志数据进行高效查询和筛选,进一步强化该流程。

▏指标和监控

指标与监控是可观测性的重要组成部分。收集单元性能、资源利用率和错误率等详细指标,有助于深入了解系统行为。依据这些指标设置控制面板和警报,可主动识别异常情况和潜在瓶颈。像 Grafana 之类的可视化工具能够有效展示这些指标,更易发现预示潜在问题的趋势和模式。

▏分布式跟踪

分布式跟踪是了解基于单元架构中请求流的关键方法。通过追踪请求在多个单元间的转移情况,运维人员可以确定微服务交互过程中的性能瓶颈、延迟问题和故障。Jaeger、Zipkin 或 AWS X - Ray 等分布式跟踪工具可将这些复杂交互可视化,更便于诊断和解决因单元间通信引发的问题。

▏警报和事件管理

警报和事件管理是全面可观测性策略的必要部分。依据预定义阈值或日志、指标中的异常情况设置警报,能及时告知潜在问题。这些警报可通过电子邮件、短信等多种渠道发送,也可集成到 PagerDuty 等事件管理平台。明确的事件管理流程可确保对警报做出快速且有序的响应,从而最大程度减少停机时间和对整个系统的影响。

▏可观测性的整体方法

除上述核心实践外,采用整体性的可观测性方法也大有裨益。这包括定期审查和优化日志记录、监控和跟踪配置,以适应系统不断变化的要求。此外,整合事件事后分析反馈,有助于确定可观测性策略中需改进之处。通过持续增强可观测性,组织可确保其基于单元的架构保持弹性、高性能且易于管理。

https://baijiahao.baidu.com/s?id=1816663483940372652&wfr=spider&for=pc

https://www.infoq.com/articles/cell-based-architecture-resilient-fault-tolerant-systems/

https://www.163.com/dy/article/JFTQMSGQ0511D3QS.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容