苏宁大数据平台任务调度模块架构设计

合集下载

紫金大数据平台架构之路(一)----大数据任务开发和调度平台架构设计

紫金大数据平台架构之路(一)----大数据任务开发和调度平台架构设计

紫⾦⼤数据平台架构之路(⼀)----⼤数据任务开发和调度平台架构设计⼀、总体设计初来公司时,公司还没有⼤数据,我是作为⼤数据架构师招⼊的,结合公司的线上和线下业务,制定了如下的⼤数据架构路线图。

⼆、⼤数据任务开发和调度平台架构设计在设计完总体架构后,并且搭建完hadoop/yarn的⼤数据底层计算平台后,按照总体架构设计思路,⾸先需要构建的就是⼤数据开发平台。

这也是⼀个⾮常核⼼的平台,也是最基础最重要的⼀个环节。

⼀开始设计的架构图如下所⽰。

架构设计解释说明如下:MasterServer:MasterServer采⽤分布式⽆中⼼设计理念,MasterServer主要负责 DAG 任务切分、任务提交监控,并同时监听其它MasterServer和WorkerServer的健康状态。

MasterServer服务启动时向Zookeeper注册临时节点,通过监听Zookeeper临时节点变化来进⾏容错处理。

该服务内主要包含:Distributed 分布式调度组件,主要负责定时任务的启停操作,当Distributed调起任务后,Master内部会有线程池具体负责处理任务的后续操作MasterScheduler是⼀个扫描线程,定时扫描数据库中的 command 表,根据不同的命令类型进⾏不同的业务操作MasterExecThread主要是负责DAG任务切分、任务提交监控、各种不同命令类型的逻辑处理MasterTaskExecThread主要负责任务的持久化WorkerServer:WorkerServer同样也采⽤分布式⽆中⼼设计理念,WorkerServer主要负责任务的执⾏和提供⽇志服务。

WorkerServer服务启动时向Zookeeper注册临时节点,并维持⼼跳。

该服务包含:FetchTaskThread主要负责不断从Task Queue中领取任务,并根据不同任务类型调⽤TaskScheduleThread对应执⾏器。

苏宁大数据平台任务调度模块架构设计

苏宁大数据平台任务调度模块架构设计

苏宁大数据离线任务开发调度平台实践:任务调度模块架构设计weixin_34262482 2019-02-01 08:00:00 375 收藏2作为国内最大的电商平台之一,苏宁每天要处理数量巨大的数据。

为了更快速高效地处理这些数据,苏宁调度平台采取了哪些措施呢?本文是苏宁大数据离线任务开发调度平台实践系列文章之上篇,详解苏宁的任务调度模块。

目录1.绪言\t12.设计目标与主要功能\t23.专业术语\t34.调度架构设计\t55.服务重启和任务状态恢复\t65.1 Master Active 组合服务\t75.2 Master HA高可用设计\t75.3 Recover任务状态恢复设计\t76.Web API接口服务\t97.后续\t101.绪言在上一篇文章《苏宁大数据离线任务开发调度平台实践》中,从用户交互功能、任务调度、任务执行、任务运维和对外服务等几方面,宏观层面进行了理论和实践的概述。

产品的用户功能重点需要把握用户实际的任务开发运维需求,合理的规划设计产品功能,在使用和运维上便于用户操作,降低用户的开发使用成本。

简单的说就是主要保证用户任务、任务流等关键元数据的配置信息的准确性,以及任务状态的查询和干预能力,技术上实现不存在难点,在此不再详细说明。

任务执行模块侧重于任务被领取后,如何根据任务类型选择不同的执行器(Executer)提交任务执行,并将任务的执行状态及时准确的返回,由任务调度服务根据返回状态做相应的下一步处理,除此以外还涉及到任务资源加载、任务配置解析与转换、自身健康状态检查与汇报、worker进程与任务子进程通信、任务隔离、对外接口服务等,这块将在后面一节再跟大家详细分享。

任务运维模块主要关注平台的自身稳定性、健壮性等各个指标的监控与预警、平台任务执行异常的监控、任务运行诊断分析、动态扩缩容和应急降级等方面,涉及到的内容也很多,后续章节会陆续跟大家分享。

今天我们重点详细阐述苏宁大数据离线任务调度开发平台的核心模块—任务调度模块的架构设计以及开发实践过程中的关键功能点。

任务调度 框架 功能 -回复

任务调度 框架 功能 -回复

任务调度框架功能-回复任务调度框架是一种用于管理和调度应用程序中各种任务的工具。

它可以帮助开发人员更高效地安排和执行任务,提高应用程序的性能和可靠性。

在本文中,我们将深入研究任务调度框架的功能和用途,并逐步介绍它是如何工作的。

第一步:概述任务调度框架的功能任务调度框架的主要功能是安排和执行各种任务。

它可以根据预定的计划、优先级和依赖关系来安排任务的执行。

此外,任务调度框架还提供了监视和报告功能,以便开发人员可以了解任务的执行情况和性能状况。

以下是一些常见的任务调度框架功能:1. 计划任务:任务调度框架可以根据指定的计划安排任务的执行。

它可以处理一次性任务,也可以处理定期或周期性重复任务。

通过有效地计划任务的执行,开发人员可以确保任务按时进行并且不会出现冲突。

2. 优先级管理:任务调度框架允许开发人员为不同的任务设置优先级。

这些优先级可以用于在有限资源的情况下分配任务执行的顺序。

通过管理任务的优先级,开发人员可以优化任务的执行顺序,从而提高整个应用程序的性能和响应能力。

3. 依赖管理:一些任务可能依赖于其他任务的完成或产生的结果。

任务调度框架可以提供依赖管理的功能,以确保依赖任务在它们所依赖的任务完成之后才会执行。

这可以帮助开发人员更好地管理任务之间的依赖关系,并减少潜在的错误和问题。

4. 异常处理:在任务执行过程中,可能会出现各种异常和错误。

任务调度框架可以提供异常处理的功能,以帮助开发人员捕获和处理这些异常。

这可以提高应用程序的可靠性,并减少由于任务执行错误而导致的问题。

5. 监视和报告:任务调度框架可以为任务的执行提供监视和报告功能。

它可以记录任务的执行时间、完成情况和执行结果等信息,并生成相应的报告。

通过监视和报告功能,开发人员可以实时了解任务的执行情况,并及时进行必要的调整和优化。

第二步:任务调度框架的用途任务调度框架在各种不同类型的应用程序中都有广泛的应用。

以下是几个常见的用途:1. 批处理任务:许多企业应用程序需要定期执行批处理任务,例如生成报表、数据导入和导出等。

调度构架方案

调度构架方案

调度构架方案随着科技的不断进步和信息化的迅速发展,调度构架在各个领域中扮演着至关重要的角色。

无论是在交通运输、能源产业还是工业生产等领域,高效的调度构架都能够提升资源利用效率,优化生产运营,实现可持续发展。

本文将介绍一种调度构架方案,旨在提供一个有效的指导原则,帮助企业或组织实现协调、高效、可持续的运作。

一、调度构架的概念与目标调度构架是指在特定领域内,通过优化资源配置、任务分配和实时监控等方式,确保各个环节之间的协调配合,使整个系统能够按照既定目标高效运作的框架。

其主要目标是降低运营成本、提高资源利用效率、减少时间浪费、保障运营安全等。

二、调度构架的关键要素1. 数据采集与处理:调度构架需要通过传感器、监测设备等手段进行实时数据采集,并利用先进的数据处理技术对数据进行分析和预测,为决策提供可靠的依据。

2. 任务分配与调度算法:通过合理的任务分配和调度算法,将任务以最优的方式分配给对应的资源,并根据实时情况进行灵活调整,以提高任务完成效率。

3. 通信与协同机制:调度构架需要建立稳定高效的通信网络,实现各个环节间的信息传递和协同工作。

这可以通过物联网、云计算等技术手段来实现,在海量数据的处理和交互方面提供支持。

4. 决策支持系统:基于采集和处理的数据,调度构架需要建立决策支持系统,通过数据可视化和智能分析来帮助决策者做出准确、可行的决策,全面提升决策水平。

三、调度构架方案的设计与应用1.需求分析:在设计调度构架方案之前,需要充分了解需求和目标,明确系统需要解决的问题和目标。

例如,在物流行业中,可能需要解决的问题包括:最短路径规划、货物跟踪和监控、运输流程优化等。

2. 架构设计:根据需求分析的结果,设计合适的调度构架架构。

例如,可以采用分布式架构,将系统分为采集层、处理层、决策层、执行层等不同模块,实现数据的传递和处理。

3. 技术选型:在确定架构设计后,需要进行技术选型,选择适合系统要求的技术工具和平台。

高并发任务调度系统的架构设计

高并发任务调度系统的架构设计

高并发任务调度系统的架构设计随着互联网的迅猛发展,越来越多的应用场景需要处理大量的并发任务。

为了能够高效地处理这些任务,高并发任务调度系统应运而生。

本文将围绕高并发任务调度系统的架构设计展开讨论,并介绍其核心组件和工作流程。

一、架构设计概述高并发任务调度系统的架构设计旨在实现任务的快速调度和高效处理。

它通常由调度器、任务队列、执行器和监控器等核心组件构成。

1. 调度器:调度器是整个系统的核心,负责根据任务的优先级和调度策略,将任务分配给可用的执行器进行处理。

调度器需要具备高并发处理能力和动态可调度的特性,以应对不同任务场景的需求。

2. 任务队列:任务队列用于存储待执行的任务,它可以是基于内存的队列或分布式消息队列。

任务队列的设计应考虑到高并发情况下的并发读写和数据一致性等问题。

3. 执行器:执行器是任务的实际执行者,它负责从任务队列中获取任务并执行。

执行器需要具备高并发执行能力和任务执行状态的监控与管理能力,以确保任务能够按时完成并保证任务执行的质量。

4. 监控器:监控器用于监控整个任务调度系统的运行状态和性能指标。

它能够实时采集系统的运行数据并进行分析,以便及时发现和解决潜在的问题。

二、任务调度流程高并发任务调度系统的核心工作流程如下:1. 任务提交:用户通过接口或其他方式将任务提交到任务调度系统。

2. 任务分配:调度器根据任务的优先级和调度策略,将任务分配给可用的执行器。

任务分配可以采用轮询、负载均衡或其他算法。

3. 任务执行:执行器从任务队列中获取任务,并根据任务的类型和要求进行具体的执行。

执行过程中,执行器需要记录任务的执行状态和结果。

4. 任务完成:任务执行完成后,执行器将执行结果返回给调度器,并将任务标记为已完成。

5. 监控与管理:监控器实时采集任务调度系统的运行数据,并进行分析和展示。

同时,监控器还能够对任务执行状态和系统性能进行监控和管理。

三、关键技术和挑战在设计高并发任务调度系统时,需要考虑以下关键技术和挑战:1. 并发处理:高并发任务调度系统需要具备高并发处理能力,能够同时处理大量的任务请求。

大数据平台架构设计

大数据平台架构设计

大数据平台架构设计概述大数据平台架构设计是指为了满足大数据处理需求而设计的系统架构。

该架构应该能够有效地收集、存储、处理和分析大量的数据,以提供有价值的信息和洞察力。

设计原则在设计大数据平台架构时,需要考虑以下原则:1. 可扩展性:架构应该能够轻松地扩展以应对不断增长的数据量和用户需求。

2. 可靠性:平台应该能够在面临硬件故障或其他故障时保持稳定运行,不丢失数据。

3. 高性能:平台应该能够快速地处理和分析大量的数据,以尽快提供结果。

4. 安全性:平台应该有良好的安全机制,保护用户的数据免受未经授权的访问和恶意攻击。

架构组件一个典型的大数据平台架构包括以下组件:1. 数据采集层:用于收集各种数据源的数据,并将其转换为适合存储和处理的格式。

常见的数据源包括传感器、日志文件、数据库等。

2. 存储层:用于存储大量的原始和处理后的数据。

常用的存储技术包括分布式文件系统(如HDFS)和NoSQL数据库(如Cassandra)。

3. 处理层:用于对数据进行处理和分析。

常见的处理技术包括MapReduce、Apache Spark等。

4. 查询和分析层:用于提供用户界面和工具,使用户能够查询和分析数据。

常见的工具包括Hive、Presto等。

5. 可视化层:用于将数据可视化并呈现给用户。

常用的可视化工具包括Tableau、Power BI等。

示例架构下面是一个简单的大数据平台架构设计示例:1. 数据采集层:使用Flume收集各种传感器和日志文件的数据。

2. 存储层:使用HDFS存储原始数据,使用Cassandra存储处理后的数据。

3. 处理层:使用Apache Spark进行数据处理和分析。

4. 查询和分析层:使用Presto提供用户界面和查询工具。

5. 可视化层:使用Tableau将数据可视化并提供丰富的报表和图表。

总结大数据平台架构设计是一个复杂且关键的任务,需要综合考虑数据采集、存储、处理和分析等多个方面。

任务调度架构

任务调度架构

任务调度架构摘要:1.任务调度架构的概述2.任务调度架构的组成3.任务调度架构的工作流程4.任务调度架构的优势和应用场景正文:【1.任务调度架构的概述】任务调度架构是一种用于管理并调度任务的系统架构,它的主要目的是为了更有效地分配任务,提高任务的处理效率和系统的资源利用率。

在现代计算机系统中,任务调度架构已经成为了操作系统的核心功能之一。

【2.任务调度架构的组成】任务调度架构主要由以下几个部分组成:(1)任务存储:用于存储待处理的任务,包括任务的基本信息,如任务ID、任务类型、任务状态等。

(2)调度器:是任务调度架构的核心部分,负责根据任务的状态和系统资源情况,选择合适的任务进行处理。

(3)任务处理模块:负责实际处理任务,将任务的输入数据转化为输出数据。

(4)任务状态监控模块:用于监控任务的状态,根据任务状态的变化,及时调整任务的处理策略。

【3.任务调度架构的工作流程】任务调度架构的工作流程主要分为以下几个步骤:(1)任务提交:用户或应用程序将任务提交给任务调度架构。

(2)任务调度:调度器根据任务的状态和系统资源情况,选择合适的任务进行处理。

(3)任务处理:任务处理模块处理选中的任务,并将处理结果返回给用户或应用程序。

(4)任务结束:任务处理完成后,任务状态监控模块将任务状态更新为已完成,并将任务从任务存储中移除。

【4.任务调度架构的优势和应用场景】任务调度架构的优势主要体现在以下几个方面:(1)提高系统资源利用率:通过合理分配任务,可以有效地提高系统的资源利用率。

(2)提高任务处理效率:通过及时调度任务,可以缩短任务的等待时间,提高任务的处理效率。

(3)支持多任务处理:任务调度架构可以同时处理多个任务,满足用户的多任务需求。

任务调度架构的应用场景非常广泛,几乎所有的计算机系统都需要任务调度架构来管理任务。

大数据平台的架构与搭建指南

大数据平台的架构与搭建指南

大数据平台的架构与搭建指南随着科技的迅速发展和信息的爆炸性增长,大数据已经成为当今社会中不可忽视的一个重要领域。

大数据分析对企业决策、市场预测、用户行为分析以及社会趋势的研究等起着至关重要的作用。

为了处理和分析这些庞大的数据集,建立一个强大而可靠的大数据平台是非常重要的。

本文将介绍大数据平台的架构与搭建指南,帮助您了解如何构建一个符合需求的大数据平台。

一、架构设计1. 数据采集层:大数据平台的第一层是数据采集层,用于从不同的数据源中收集和获取数据。

这包括传感器、移动设备、日志文件等。

数据采集层需要考虑数据的格式、频率和可靠性等方面。

常见的数据采集工具包括Flume、Kafka和Logstash等。

2. 数据存储层:数据存储层用于存储从数据采集层收集的原始数据或已经处理的中间数据。

常见的数据存储技术包括传统的关系型数据库MySQL、NoSQL数据库(如MongoDB、Cassandra等)以及分布式文件系统(如Hadoop的HDFS)。

根据数据的类型和需求,可以选择合适的数据存储技术。

3. 数据处理层:数据处理层是大数据平台的核心组件,用于处理和分析存储在数据存储层的数据。

该层包括批处理和流式处理两种方式。

批处理可以通过Hadoop的MapReduce或Spark等技术来进行,用于处理大量的离线数据;而流式处理可以使用Apache Storm或Flink等技术,实时处理数据流。

此外,数据处理层还可以使用机器学习算法和人工智能技术来进行复杂的数据分析。

4. 数据可视化与应用层:数据可视化与应用层用于展示和应用数据处理结果。

通过数据可视化工具(如Tableau、Power BI等),可以将数据以图表、报表等形式直观地展示出来,帮助决策者更好地理解和利用数据。

此外,数据可视化与应用层还可以开发相应的应用程序或服务,满足不同的业务需求。

二、搭建指南1. 硬件与网络:搭建大数据平台需要考虑合适的硬件和网络基础设施。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

—苏宁大数据离线任务开发调度平台实践:任务调度模块架构设计2019-02-01 08:00:00 375 收藏 2作为国内最大的电商平台之一,苏宁每天要处理数量巨大的数据。

为了更快速高效地处理这些数据,苏宁调度平台采取了哪些措施呢本文是苏宁大数据离线任务开发调度平台实践系列文章之上篇,详解苏宁的任务调度模块。

目录…1.绪言\t12.设计目标与主要功能\t23.专业术语\t34.调度架构设计\t5\5.服务重启和任务状态恢复\t6Master Active 组合服务\t7Master HA高可用设计\t7Recover任务状态恢复设计\t7API接口服务\t9~7.后续\t101.绪言在上一篇文章《苏宁大数据离线任务开发调度平台实践》中,从用户交互功能、任务调度、任务执行、任务运维和对外服务等几方面,宏观层面进行了理论和实践的概述。

产品的用户功能重点需要把握用户实际的任务开发运维需求,合理的规划设计产品功能,在使用和运维上便于用户操作,降低用户的开发使用成本。

简单的说就是主要保证用户任务、任务流等关键元数据的配置信息的准确性,以及任务状态的查询和干预能力,技术上实现不存在难点,在此不再详细说明。

任务执行模块侧重于任务被领取后,如何根据任务类型选择不同的执行器(Executer)提交任务执行,并将任务的执行状态及时准确的返回,由任务调度服务根据返回状态做相应的下一步处理,除此以外还涉及到任务资源加载、任务配置解析与转换、自身健康状态检查与汇报、worker进程与任务子进程通信、任务隔离、对外接口服务等,这块将在后面一节再跟大家详细分享。

【任务运维模块主要关注平台的自身稳定性、健壮性等各个指标的监控与预警、平台任务执行异常的监控、任务运行诊断分析、动态扩缩容和应急降级等方面,涉及到的内容也很多,后续章节会陆续跟大家分享。

今天我们重点详细阐述苏宁大数据离线任务调度开发平台的核心模块—任务调度模块的架构设计以及开发实践过程中的关键功能点。

2.设计目标与主要功能调度模块的核心目标要保证任务能够按照用户配置的调度时间、依赖关系准实时调度和执行,同时也允许用户根据实际需要随时启动和停止任务调度,调整任务执行计划。

所谓准时实调度,指的是调度模块会按照各个上线的任务流的调度时间生成调度执行计划,当触发时间到了,平台会按照调度执行计划精确的生成任务流实例和任务实例。

但是在任务执行上,并不保证准实时的分配机器执行。

实际上平台以整体资源使用情况为最高原则,并按照一定的限流策略控制任务的执行,比如:任务优先级、任务组并发度、平台任务并发数、任务特定执行时间等因素。

在保证平台资源允许的情况下,尽量按时执行任务。

为了保障任务的实时性,必须保障任务资源的可用性和计划可控性。

#调度模块的主要核心服务功能包括以下几点:服务重启和任务状态恢复功能在调度服务重启、主备切换后,系统状态以及任务运行状态能否准确的恢复。

比如,主节点崩溃或维护期间,发生状态变更的任务在主节点恢复以后,能否正确更新状态等等。

Web API接口服务用户通过Web控制后台管理作业,而Web控制后台与Master服务器之间的交互透过Rest 服务来执行,Rest服务也可以给Web控制后台以外的其它系统提供服务(用于支持外部系统和调度系统的对接)。

另外为了便于监控和调查分析调度异常和问题,提供Master内存关键信息的查询和人工干预的接口能力。

(数据信息缓存服务缓存上线任务流、任务、事件、系统配置、服务器的关键元数据信息,这些信息一般在任务流上线后不会经常发生变更,没必要实时从数据库中读取。

并对外提供这些元数据信息的同步接口服务,保证缓存信息与数据库的一致性。

缓存任务流实例、任务实例、事件实例等中间状态信息,同时持久化到数据库中。

便于在任务状态切换、任务依赖执行快速找到对应的运行中的关键数据。

并在任务实例数上升一定量级以后可以快速的从内存中缓存的中间状态数据完成依赖检查和触发执行逻辑,降低对数据库因为频繁访问造成的压力。

任务调度服务主要负责上线任务流的配置检查、生成任务流执行计划、按照执行计划生成任务流与任务实例,生成任务实例状态机和节点之间的依赖触发关系。

除了这些系统调用主要功能外,还提供人工干预任务执行的服务功能,比如:任务流上下线、任务补数据、任务重跑、任务杀死、失败重试等》任务状态机管理任务流按照调度服务的执行计划会在每个调度周期内生成需要执行的任务流实例和任务实例信息,这些实例在调度过程中存在多种临时状态,并具备一定的生命周期。

状态切换的时候触发一定的业务逻辑,比如:任务实例由新建状态切换到待分配状态,由待分配状态切换到已分配状态,由执行中状态切换到执行结束状态都可能需要完成一定的处理。

这里我们采用了状态机的管理机制来确保任务执行状态的持续性和完整性。

任务状态分析服务任务实例在调度过程中存在多种临时状态的切换,每次状态切换必须成功才能保证状态变化的持续性和完整性,从而保证任务实例从生成到结束的完整生命周期。

如果状态切换过程中发生意外或者长时间停滞在某个状态不变,可能会导致调度异常和用户使用恐慌,为了准确及时的分析任务实例的状态停滞原因,需要在任务状态生成和切换的时候进行检查校验,把不能切换的原因及时记录,便于分析问题。

任务状态发布服务平台上的任务处理的是数据,数据处理的及时性和准确性对业务系统是有极大的影响。

而平台的任务运行状态往往只会记录在本平台数据库中,外部系统无法感知。

在很多场景下,业务系统需要根据任务的执行状态来执行自己的特定业务逻辑,通过传统的任务状态查询接口又存在延迟性和性能问题,比如:任务状态的变更,执行时间长短会因为多种因素而变得不确定;多个外部系统调用平台接口可能会导致平台自身压力的不确定性。

可以在任务实例生成和状态切换的时候,将任务实例状态按照用户的配置要求,及时的发布出去,业务系统根据需要进行订阅,确保任务状态更新的及时性,又降低对平台的侵入和压力。

:任务分配与流控服务主要负责满足执行条件的任务实例的分配,以及在任务执行高峰、资源紧张的情况下如何智能有效的进行相应的流控。

在以整体资源使用情况为最高原则,并按照一定的限流策略控制任务的执行,比如:任务优先级、任务组并发度、平台任务并发数、任务特定执行时间等因素。

在保证平台资源允许的情况下,尽量按时执行任务。

为了保障任务的实时性,必须保障任务资源的可用性和计划可控性。

事件触发服务主要解决复杂业务场景里,跨任务流依赖、跨系统平台依赖的调度执行问题。

比如:平台内部多个系统多个任务流之间的依赖调度,以及外部业务系统在某种条件下需要通知调度平台执行自己的任务。

另外需要解决各种频率之间的依赖关系,比如:天依赖天、天依赖小时、周月依赖天等.主机健康监控服务@负责管理可以执行任务的机器资源,并根据各机器的健康度合理的分配任务。

主要包括:worker机器的发现与管理、worker机器的健康度评估、worker检活、主机黑白名单(加入黑名单的机器不能领取和执行任务)等异步更新服务平台中存在大量的持久化操作,比如:任务实例的生成与状态更新、事件的触发实例生成、任务流的启停状态、任务运行状态原因分析等。

有些持久化操作需要伴随业务逻辑同步更新,确保操作的事务完整性,比如:任务流上下线、任务实例的状态切换,必须保证内存和数据库一致性。

有些操作则不要求高度一致性和实时性,甚至有些数据的更新错误或者丢失也可以忽略不计。

同步更新在确保事务、数据的完整和一致性外,带来了平台性能的一定下降。

而异步更新服务可以提高平台的运行性能和并发能力,这些低有求的操作和数据同步服务就可以采用异步更新服务来完成。

比如:任务运行状态停滞原因分析、任务状态的对外发布等3.专业术语苏宁大数据离线任务开发调度平台具有和业内同款平台产品的共性,也具备自己的特殊性和专业性。

在理解和使用我们的平台之前,需要了解平台常见的专业术语,以免造成理解和使用上的分歧。

`任务流实例的中间运行状态,主要包括:待调度、执行中、执行失败、执行成功。

任务实例的中间运行状态,主要包括:待调度、待分配、已分配、已领取、参数检查错误、资源准备失败、执行中、杀死、执行失败、失败重试、执行成功、忽略失败。

4.调度架构设计)从系统架构的角度出发,模块化的设计有利于功能隔离,降低组件耦合度和单个组件的复杂度,提升系统的可拓展性,一定程度上有利于提升系统稳定性,但带来的问题是开发调试会更加困难,从这个角度来说又不利于稳定性的改进。

所以各个功能模块拆不拆,怎么拆往往是需要权衡考虑的。

平台采用常见的主从式架构,按照功能模块划分清晰,职责单一而不紧耦合,避免繁重复杂的业务耦合设计。

调度模块在系统架构上分为web接口服务、重启恢复服务、数据缓存服务、任务状态发布服务、事件触发服务、异步更新服务、任务调度服务、任务状态机管理、任务分配服务、主机健康监控服务以及任务实例状态监听服务等十几个主要服务功能。

每个服务模块负责的功能清晰,互相耦合度低,具有良好的扩展性、稳定性和容错性。

调度的整体架构设计如下图所示。

调度模块涉及到多种功能服务,这些功能服务内部涉及到大量复杂的、交互的事件处理、状态转换,同时,这些事件调度和状态转换又对实时性和效率提出了极高的要求。

可以想见,没有一个规整的、通用型良好的调度器,平台代码无论是对读者,还是对开发者,都将变成一场灾难,同时平台的运行效率也会变得无法忍受。

统一的、设计良好的、通用的和共用的调度器,对于调度模块不同组件的开发者来说是一种解脱,大大降低了平台在事件调度、状态转换的底层出错的可能性,提高了代码稳定性和可读性。

如何组装、如何进行有效的接口调用来支撑平台百万级的任务高效稳定的执行。

在组装设计上需要慎重选型。

一般多服务调用分为函数调用和事件驱动两种模式。

<相比于基于函数调用的编程模型,这种编程方式具有异步、并发等特点,更加高效,因此更加适合大型分布式系统。

调度模块的十几个服务之间的大部分服务调用也基本是基于事件驱动的编程模型进行设计。

开发实践过程中,Hadoop的核心调度器AsyncDispatcher的设计和实现同Hadoop状态机一样,这个通用调度器设计得十分通用,完美可扩展可重用,我们在自己的项目中完全可以使用Hadoop的调度器实现我们自己的事件调度逻辑。

5.服务重启和任务状态恢复该服务主要是将调度模块的所有服务组件进行统一的注册和管理,并按照平台的业务逻辑顺序进行顺序初始化和启动。

并通过HAService服务往ZK抢注Master的服务器节点目录,来完成主备Master的状态切换。

通过RecoverService服务完成从数据库中同步任务流、任务、事件等元数据信息和任务实例、事件实例等实例信息的内存恢复操作。

相关文档
最新文档