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

合集下载

任务调度 框架 功能 -回复

任务调度 框架 功能 -回复

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

任务调度模块产品设计

任务调度模块产品设计

任务调度模块产品设计一、功能需求1.任务创建:用户可以通过界面创建任务,包括任务名称、执行者、优先级等信息。

2.任务分配:根据任务的优先级和执行者的负载情况,将任务分配给最合适的执行者。

3.任务调度:根据任务间的依赖关系,确定任务的执行顺序,并在执行者空闲时进行任务调度。

4.任务监控:实时监控任务的执行情况,包括执行时间、执行者等信息,并支持查看历史任务。

5.异常处理:当任务执行失败或超时时,及时发出警报并进行相应的异常处理。

6.任务追踪:记录任务的执行日志和结果,方便后续查看和分析。

7.性能优化:通过合理的算法和数据结构设计,提升任务调度的效率和性能。

二、用户界面设计1.任务列表:展示当前的任务列表,包括任务名称、执行者、优先级等信息。

2.任务详情:点击任务列表中的任务,可以查看该任务的详细信息,包括执行时间、执行者、任务依赖关系等。

3.任务创建:提供创建任务的界面,用户可以填写任务的相关信息,并选择执行者和优先级。

4.任务监控:展示任务的执行情况,包括任务的执行时间、执行者、执行状态等。

5.历史任务:提供历史任务的查询功能,用户可以选择特定的时间范围和执行者进行查询。

6.任务调度配置:提供任务调度的配置界面,包括调度算法、执行者负载均衡策略等。

7.异常处理:当任务执行出现异常时,即时发出警报并提供异常处理界面。

8.权限管理:支持不同用户角色的权限管理,保障系统的安全性和稳定性。

三、性能优化设计1.调度算法:设计合适的调度算法,根据任务的优先级和执行者的负载情况,选择最合适的执行者。

2.任务依赖图:利用任务依赖图来进行任务的调度,减少任务之间的等待时间。

3.执行者负载均衡:通过监控执行者的负载情况,实现负载均衡,避免一些执行者负载过高。

4.并行执行:合理利用多线程或分布式系统的特性,实现任务的并行执行,提升系统的吞吐量和性能。

5.异常处理机制:设计完善的异常处理机制,及时发出警报,并进行相应的异常处理,减少对整个系统的影响。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

任务调度架构

任务调度架构

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

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

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

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

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

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

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

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

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

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

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

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

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

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

大数据平台的架构设计和实现

大数据平台的架构设计和实现

大数据平台的架构设计和实现大数据的时代已经来临,这给企业带来了许多机遇和挑战。

作为一个企业,如何通过更好的管理和利用数据来提高自己的核心竞争力是非常关键的。

在这个过程中,大数据平台的架构设计和实现也变得十分重要。

一、需求分析在设计和实现大数据平台之前,我们首先需要进行需求分析。

这一步非常关键,需要考虑到企业自身的业务需求和数据情况。

一般来说,大数据平台的设计应该包括以下几个方面:1. 数据采集数据采集是大数据平台的第一步,也是最重要的一步。

在这一步中,需要考虑到何种方式采集数据以及采集的数据类型。

常见的数据采集方式包括批量导入和实时采集。

数据类型也非常多样化,可以包括结构化、半结构化和非结构化数据等。

2. 数据存储数据存储是大数据平台的核心。

在这一步中,需要考虑到如何存储数据、如何保证数据的可靠性和如何进行数据的备份和恢复等问题。

目前,大数据平台常用的数据存储方案有Hadoop、HBase、Cassandra等。

3. 数据管理数据管理包括数据的清洗、去重、聚合等工作,旨在提高数据的质量和价值。

在这一步中,需要考虑到如何定期清洗数据、如何设置聚合规则等问题。

4. 数据分析数据分析是大数据平台的最终目的,也是核心竞争力的体现。

在这一步中,需要考虑到如何进行数据分析、如何设置分析算法、如何提高分析效率等问题。

目前,大数据分析常用的算法有聚类算法、决策树算法、贝叶斯算法等。

二、架构设计基于需求分析,我们需要进行大数据平台的架构设计。

在设计时需要考虑如下几个方面:1. 系统架构系统架构是大数据平台的基础,需要从数据存储和处理的角度进行设计。

一般来说,大数据平台分为三层,分别是数据采集层、数据处理层和数据展示层。

2. 数据实时处理随着数据量的增加,实时处理数据成为了大数据平台的一个重要需求。

因此,在设计大数据平台时,需要考虑如何实现数据的实时处理和分析。

3. 数据安全数据安全是大数据平台不可忽视的一个方面。

大数据平台架构设计技术手册

大数据平台架构设计技术手册

大数据平台架构设计技术手册一、引言随着信息时代的到来,大数据已成为当今世界的核心资源之一。

在大数据时代,如何高效地存储、管理和分析海量数据成为一个亟待解决的问题。

大数据平台架构的设计正是为了解决这一问题而产生的,它能够提供高性能、可扩展和可靠的数据处理环境。

二、大数据平台架构概述大数据平台架构是指用于存储、处理和分析大数据的技术框架。

它由多个组件组成,包括数据存储层、计算层、调度层和应用层等。

下面将对这些组件进行详细介绍。

1. 数据存储层数据存储层是大数据平台架构的基础,用于持久化存储大数据。

常用的数据存储技术包括分布式文件系统(如Hadoop HDFS)、列式数据库(如HBase)和分布式关系数据库(如Apache Cassandra)等。

2. 计算层计算层负责对存储在数据存储层中的数据进行计算和分析。

这一层包括数据处理框架、数据处理引擎和数据处理算法等。

常用的计算层技术包括Apache Spark、Apache Flink和MapReduce等。

3. 调度层调度层用于管理和协调大数据平台上的各种任务。

它可以根据任务的优先级和依赖关系进行任务调度,并监控任务的执行情况。

常用的调度层技术包括Apache Mesos、YARN和Kubernetes等。

4. 应用层应用层是大数据平台上的上层应用,用于解决具体的业务问题。

它可以基于计算层提供的数据处理能力进行数据分析、机器学习和人工智能等任务。

常用的应用层技术包括Hadoop、Hive和Presto等。

三、大数据平台架构设计原则在进行大数据平台架构设计时,需要遵循以下原则:1. 可扩展性大数据平台需要具备良好的扩展性,能够根据数据量的增长和业务需求的变化而进行水平和垂直的扩展。

这可以通过使用分布式存储和计算技术来实现。

2. 高性能大数据平台需要提供高性能的数据处理和分析能力,能够在短时间内完成海量数据的计算和响应。

这可以通过使用并行计算和缓存技术来实现。

任务流程调度框架

任务流程调度框架

任务流程调度框架全文共四篇示例,供读者参考第一篇示例:任务流程调度框架是一种用于管理和优化任务执行流程的工具,可以帮助组织高效地分配资源,提高生产效率,实现任务的快速执行和灵活调度。

在当今信息化的时代,任务流程调度框架已经成为很多企业和组织必不可少的功能,它的作用不仅仅是简单的实现任务执行的自动化,更是能够帮助企业提高生产力,降低成本,提供更好的服务。

任务流程调度框架通常包含以下几个主要功能模块:1. 任务管理模块:任务管理模块是任务流程调度框架的核心,它负责管理和执行各种任务。

用户可以在任务管理模块中添加、删除、修改任务,设置任务的执行周期、优先级、依赖关系等属性。

任务管理模块能够根据任务的执行情况实时监控任务的状态,保证任务按照预期顺利执行。

2. 资源管理模块:资源管理模块负责管理任务执行所需的资源,包括服务器、存储设备、网络设备等。

资源管理模块能够智能地分配资源,避免资源浪费,保证任务的高效执行。

在资源管理模块中,用户可以设置资源的使用策略、监测资源的利用率、调整资源的分配等操作。

3. 调度器模块:调度器模块是任务流程调度框架的核心组件之一,它负责根据任务的依赖关系、优先级和资源使用情况对任务进行调度和分配。

调度器模块能够智能地调度任务的执行顺序,保证任务按照合适的顺序执行,避免任务之间的冲突和资源的争用。

4. 监控和报警模块:监控和报警模块用于监控任务执行的状态和资源的使用情况,一旦发现任务执行异常或资源使用过度,监控和报警模块会及时发出警告通知。

用户可以设置监控和报警模块的阈值,当任务执行质量下降或资源利用率超出限定范围时,系统会立即通知相关人员进行处理。

任务流程调度框架的优势在于可以对任务执行流程进行灵活调度和管理,提高了任务处理的效率和质量,降低了人力成本和时间成本。

在实际的应用场景中,任务流程调度框架广泛应用于各种行业和领域,如互联网、电商、金融、物流、医疗等。

通过任务流程调度框架,企业可以实现任务的快速处理,提高工作效率,提升竞争力。

大数据平台功能架构

大数据平台功能架构

大数据平台功能架构大数据平台的功能架构包括数据中台功能架构和数据仓库功能架构。

数据中台是指将企业各个部门的数据集中管理并提供数据服务的平台,而数据仓库是指用于存储和管理大量结构化数据的系统。

下面将详细介绍这两个功能架构。

一、数据中台功能架构数据中台主要包括数据采集、数据存储、数据处理和数据服务四个功能模块。

1.数据采集:数据采集模块负责从各个部门的数据源中采集数据,并将其标准化和清洗。

数据采集可以通过多种方式实现,例如ETL工具、API接口、日志收集器等。

采集到的数据包括结构化数据和非结构化数据。

2. 数据存储:数据存储模块用于存储经过清洗和处理后的数据。

通常会采用分布式存储技术,例如Hadoop、HBase、Cassandra等。

这些技术可以实现大规模数据的高效存储和管理。

3.数据处理:数据处理模块负责对存储在数据中台中的数据进行分析和处理。

常用的数据处理技术包括批处理、流处理和机器学习等。

数据处理可以用于数据挖掘、预测分析、图像识别等任务。

4.数据服务:数据服务模块提供对数据的高效访问和查询。

通过提供API接口和查询语言,可以使不同部门和系统能够方便地访问和使用中台的数据资源。

此外,数据服务还可以提供数据共享和数据协同功能,帮助企业实现数据的整合和共享。

数据仓库主要包括数据抽取、数据转换、数据加载和数据查询四个功能模块。

1.数据抽取:数据抽取模块负责从各个业务系统中将数据抽取到数据仓库中。

抽取的数据可以是全量数据或增量数据,也可以根据需求进行筛选和过滤。

数据抽取可以通过ETL工具、数据库连接器等方式实现。

2.数据转换:数据转换模块对抽取的数据进行清洗、整合和转换。

清洗可以包括去除重复数据、填补缺失值、修复错误数据等操作;整合可以将来自不同数据源的数据进行统一格式化;转换可以将数据从一种结构转换为另一种结构,例如将数据从关系型数据库转换为多维模型。

3.数据加载:数据加载模块将经过转换的数据加载到数据仓库中。

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

苏宁大数据离线任务开发调度平台实践:任务调度模块架构设计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进程与任务子进程通信、任务隔离、对外接口服务等,这块将在后面一节再跟大家详细分享。

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

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

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服务完成从数据库中同步任务流、任务、事件等元数据信息和任务实例、事件实例等实例信息的内存恢复操作。

相关文档
最新文档