容错机制和规模挑战|学习笔记

简介: 快速学习容错机制和规模挑战

开发者学堂课程【分布式系统开发调度技术容错机制和规模挑战笔记与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/367/detail/4370


容错机制和规模挑战

内容介绍:

一、容错机制

1.任务调度的故障恢复

2.资源调度的 failover

二、规模挑战

1.增量的消息通讯

2.异步持续多线程


一、容错机制

在一个大规模的分布式系统当中,故障是常见的

1>来自硬件的故障

1.磁盘:一般有4%的年损坏率

2.主板

3.内存条

等硬件都存在一些异常情况。

2>来自软件的故障

1.存在 BUG

2.内存访问越界

3.进程 crush

4.整机重启

所以一个稳健的分布式系统,应该能够处理这种硬件或软件的故障。角色在恢复时,通常考虑以下四个方面:

1.正在运行的任务不应该被中断

2.对用户是透明的

3.自动故障恢复

4.系统在恢复时依然保持可用性,用户的体验不受影响

1.任务调度的故障恢复

任务调度主要有 app master 和 app worker,这两种角色都可能发生 failover。

1>app worker 发生 failover

instance可以通过重试的机制来挑选另一个 app worker 完成这个 instance 任务。

2>app master 发生 failover

app master 若发生过重启,它的状态首先可以从 walker 往上报的状态里恢复出之前的调度结果,还可以恢复出之前在哪些节点上分配了哪些 instance,而具体到每一个instance在处理数据时所在位置的进度信息,也可被 app master 进行持久化,称为打快照 Checkpoint,它会定期的存在持久化存储上,当 app master 进程发生 failover 时,能够从持久化存储中读取这个快照,从而恢复之前的 instance完成情况,通过这样的机制,整个任务在执行期间,任何角色发生 failover 都可以不影响整个作业的运行。

image.png

2.资源调度的 failover

参与资源调度的主要有 Fuxi master,app master 以Tubo 几个角色。

image.png

Fuxi Master 作为中控节点,恢复所需要的信息是非常大的,信息量很多,在工程实践时考虑一些细节,将这个角色所缺的状态分成两种,一种是可以从状态里恢复的,称之为 soft state(软状态);一种是无法从其他的状态里恢复的,称之为hard state(硬状态),例如用户提交的作业配置信息。

对于硬状态,会将它存储在持久化存储上,类似于前面打快照机制,这些状态变化的是不平凡的。

而 soft state,恢复时会通过命令的方式要求 Tubo 或 app master 将进程死之前的状态再发送一份,从而帮助 Fuxi master 恢复出在进程 crash 之前的状态,

如:

机器列表

每个 app master 的资源请求等信息。

具体的过程如下图,中间的 Fuxi Master 如进程发生重启要恢复之前的状态,一方面可以从每个 Tubo 上报的状态里恢复出之前给每个机器上分配的资源;另外一方面从每个 app master 上报的状态里恢复出在进程挂之前每个应用所产生的资源请求,从消息状态里就可以恢复出 soft state。

另外一方面,通过读取存储在持久化介质上的 checkpoint 可恢复出进程在挂之前用户提交上的所有作业的配置情况。

image.png

以上是关于资源调度和任务调度发生硬件或软件故障造成进程重启之后,如何恢复出之前的状态,称为容错的各种机制。


二、规模挑战

分布式系统设计目标之一是横向扩展,Scale-out。一为增量的消息通讯,另一为异步持续多线程的问题。主要包括多线程异步如何优化及增量资源调度。

1. 异步持续多线程

如下图一个作业所对应的 app master,实际上有两种通讯,一个和 FuxiMaste 进行资源的申请、释放等交互,另外一方面,需要和为数众多的 Tubo 进行通讯来起或停止 app worker。

在分布式计算当中,通常是通过RPC(远程调用)机制实现两个异地的进程进行通讯。假若在 app master 里将 FuxiMaster 和众多的 Tubo 对于 RPC 消息的处理,全部放在一个线程,虽然使用了线程池增加并发度,但由于 FuxiMaster 只有一个,而 Tubo 通常有5000个

规模之多,所以大量的RPC消息若拥挤在一个线程池里,则 FuxiMaster 重要的消息,可能会被处理的几率会大大降低,甚至为1/5000的概率。

因此为了避免 Fuximaster 该类重要消息得不到处理,采取的手段是在 app master里单独给 FuxiMaster 分配一个线程池来处理来自 FuxiMaster 的消息,而其他为数众多的Tubo的消息则用另外一个线程池来处理,这样可以避免在分布式系统中常见的堆头阻塞的问题。

等我这种手段,FuxiMaster 和 app master 间关于资源的申请和释放这一协议的通讯变得非常通畅。

在一个5000台规模的集群中 FuxiMaster 所完成的事情及处理的逻辑是非常复杂的,一方面需处理每个 app master 所发的资源请求,有时达上万个,另一方面需监控5000个Tubo 节点的健康状态,因此如何提高 FuxiMaster 这一个节点的处理速度,如何简化消息通讯的协议,是提高规模扩展性的非常重要的技术手段。

image.png

2.增量资源调度

如下图,当一个 app master 向 FuxiMaste 发起资源请求“需要1000份资源”,FuxiMaster 完成调度后,会部分的给一部分200份资源,app master 则再次发起请求“需要800个”,FuxiMaster 给150个,通过这样一来一往的消息通讯,1000个全部满足可能需达三个或四个交互来回,链度很长,这是常规的主从架构设计里面临的问题。在阿里云的实践里,采取了一种新的方式,增量的,在起初时app master 发起请求“需要1000分资源”,消息发送到 FuxiMaster 会被记录下来,FuxiMaster 了解 app master 最初的资源请求状况,当部分资源释放后,FuxiMaster将资源调度给 app master,则会给 app master 发送请求“可以分配200个资源”。

之后由于 FuxiMaster 已经记录了 app master 的资源请求,当有更多新的资源释放出时,例如又有新的150个资源出来后,这时 FuxiMaster 只需发送一次请求告知app master“又新分配150个资源”,从而省去中间 app master 再次提起请求,避免了冗余的交互过程,通过增量的通讯调度的协议之后,网络中所发起的RPC消息将会大大减少,从而有利于提高整体集训的规模。

image.png

相关文章
|
3月前
|
存储 缓存 负载均衡
高并发系统架构的设计挑战与应对策略
【8月更文挑战第18天】高并发系统架构设计是一项复杂而重要的任务。面对性能瓶颈、稳定性与可靠性、并发控制和可扩展性等挑战,开发人员需要采取一系列有效的策略和技术手段来应对。通过负载均衡、缓存技术、数据库优化、异步处理、并发控制、弹性设计及监控与调优等手段,可以设计出高性能、高可用和高可扩展性的高并发系统架构,为用户提供优质的服务体验。
|
6月前
|
消息中间件 存储 Java
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的低延迟可用性机制方案实现
在充满挑战的2023年度,我们不可避免地面对了一系列棘手的问题,例如响应速度缓慢、系统陷入雪崩状态、用户遭受不佳的体验以及交易量的下滑。这些问题的出现,严重影响了我们的业务运行和用户满意度,为了应对这些问题,我们所在团队进行了大量的研究和实践,提出了低延迟高可用的解决方案,并在分布式存储领域广泛应用。
75 2
【亿级数据专题】「分布式消息引擎」 盘点本年度我们探索服务的低延迟可用性机制方案实现
|
3月前
|
存储 NoSQL MongoDB
(四)成为分布式高手必经之路:理解那些工作在分布式系统底层的一致性模型
在分布式领域里,一致性成为了炙手可热的名词,缓存、数据库、消息中间件、文件系统、业务系统……,各类分布式场景中都有它的身影,因此,想要更好的理解分布式系统,必须要理解“一致性”这个概念。本文就展开聊聊 分布式系统里的一致性模型。
|
3月前
|
人工智能
就AI 基础设施的演进与挑战问题之保证AttachInstances请求的幂等性的问题如何解决
就AI 基础设施的演进与挑战问题之保证AttachInstances请求的幂等性的问题如何解决
|
4月前
|
弹性计算 运维 负载均衡
构建高可用性的分布式系统:技术与策略
【7月更文挑战第1天】构建高可用分布式系统涉及负载均衡、容错处理和数据一致性等关键技术,遵循冗余、模块化及异步设计原则,并通过监控告警、自动化运维和弹性伸缩策略确保稳定性。
|
5月前
|
算法 安全 区块链
混合共识机制中有哪些常见的设计挑战
混合共识机制融合多种算法,如PoW、PoS等,需克服算法兼容性、稳定性及节点选择的挑战。它必须确保数据一致性、抗攻击性,同时兼顾效率与能源效率。还需适应业务和技术变化,并满足合规性要求。TrueChain的实例显示了这些平衡点的重要性。
|
5月前
|
存储 云安全 安全
云端数据在哪些方面可以提高其可用性?
【6月更文挑战第23天】云端数据在哪些方面可以提高其可用性?
64 6
|
6月前
|
存储 架构师 安全
构建高效可靠的后端系统:挑战与应对
在当今数字化时代,后端系统作为支撑着各种网络服务和应用的核心组成部分,承担着巨大的压力和责任。本文探讨了构建高效可靠的后端系统所面临的挑战,并提出了应对这些挑战的策略和方法,旨在帮助开发人员和系统架构师更好地应对日益复杂的技术环境。
|
6月前
|
存储 运维 物联网
【专栏】OceanBase 是一款先进的分布式数据库系统,以其分布式架构、高扩展性、高可用性和强一致性特点,应对大规模数据处理挑战
【4月更文挑战第29天】OceanBase 是一款先进的分布式数据库系统,以其分布式架构、高扩展性、高可用性和强一致性特点,应对大规模数据处理挑战。它支持混合负载,适用于金融、电商和物联网等领域,提供高性能、低成本的解决方案。尽管面临技术复杂性、数据迁移和性能优化等问题,通过合理策略可克服挑战。随着技术发展,OceanBase 在数字化时代将持续发挥关键作用。
250 1
|
6月前
|
消息中间件 数据采集 缓存
探索分布式限流:挑战与解决方案
分布式限流是现代系统设计中的重要挑战之一。本文将探讨分布式限流的背景和意义,以及在实施分布式限流时需要注意的关键问题,并提供一些解决方案。
下一篇
无影云桌面