大数据平台任务调度的任务调度模式有哪些

16263人阅读
& & & & 对于互联网和电子商务领域而言,由于存在大数据、高并发的特点,相对比较消耗时间的业务逻辑都会从用户行为中被剥离开来进行异步处理,一来可以提高用户体验,二来也可以增大系统的可扩转性,因此得到大量的应用了。由于业务的需要我们选择了淘宝p9的架构师玄难大师写的tbschedule来作为我们的异步任务处理系统,至今有接近一年的运维与使用实践,由于最近有业务需要一个任务分配系统,直接使用tbschedule是不满足要求的,在考虑具体实现的时候决定再次通读一次tbschedule的源代码,在对的源代码又再次研读一番之后有了一些新的认识和思考。
& & & & tbschedule具有如下特性:
1、tbschedule的目的是让一种批量任务或者不断变化的任务,能够被动态的分配到多个主机的JVM中,不同的线程组中并行执行。所有的任务能够被不重复,不遗漏的快速处理。
2、调度的Manager可以动态的随意增加和停止。
3、可以通过JMX控制调度服务的创建和停止。
4、可以指定调度的时间区间。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:510209次
积分:6087
积分:6087
排名:第2904名
原创:91篇
转载:31篇
评论:207条
(1)(3)(1)(1)(1)(2)(1)(1)(1)(1)(2)(1)(4)(1)(1)(4)(1)(3)(2)(1)(1)(1)(2)(2)(1)(1)(4)(1)(4)(4)(6)(6)(2)(1)(4)(1)(6)(1)(2)(16)(4)(8)(9)(3)面向服务的大数据分析平台解决方案
面向服务的大数据分析平台解决方案
  本文针对日益增长的大数据分析与信息服务的应用需求,提出基于数据中心和互联网、面向服务的大数据分析平台解决方案,为开展大数据分析相关的研究和实践提供借鉴和参考。首先对国内外大数据技术的产业现状进行回顾,然后给出基于数据中心和互联网的大数据分析平台拓扑架构,讨论大数据分析平台的系统功能和关键技术,最后阐述该平台系统的应用和产业化前景。
  近年来,大数据处理与分析已经成为全球性问题,引起欧美各国政府和产业界高度重视,美国政府于2012年3月率先发布了《大数据研究与发展计划》,Google, Amazon、Facebook、IBM、EMC、SAP等国际领先互联网和仃公司都在相关技术领域和应用进行布局,力图在大数据产业浪潮中抢得先机。
  随着我国经济社会信息化和自动化水平不断提高,在政府管理、公共服务、科学研究、商业应用等许多领域也而临大数据问题,亚需各种有针对性和经济有效的解决方案,快速提升我国在大数据领域的整体实力和国际竞争力。
  木文结合中国科学院战略性技术先导专项“而向感知中国的新一代信息技术”中“海云数据系统”的研制实践,提出基于互联网和数据中心、而向服务的大数据分析平台解决方案,以满足日益增长的用户需求,为我国开展大数据分析技术的研究和实践提供借鉴和参考。
  一、大数据技术发展现状
  大数据时代来临,工业界是技术争霸的主战场。全球大数据产业界针对大数据特有的海量、非结构化、关系复杂、动态时变等特性以及不断涌现的各种新型应用需求,围绕海量复杂数据的存储、管理、整合、处理、分析、展现、应用等主要环节,已经形成了新的大数据产业体系。
  从发展路线角度看,业界将大数据产业划分为三大阵营:一类是以IB M、微软、惠普、ORACLE,EM C等为代表的传统仃领导厂商,通过“硬件十软件十数据”整体解决方案向用户提供以平台为核心的完备的基础架构与服务,并通过密集地并购大数据分析企业,以迅速增强和扩展在大数据分析领域的实力和市场份额;一类是以SA S, SPSS等为代表的专业商务智能公司,专注于智能数据分析;还有一类是以G oogle,Am azon, Facebook等互联网公司为代表,基于自身的应用平台、庞大用户群和海量用户信息,提供精准营销和个性化推荐等商业活动。以上三大阵营各有特点和优势,形成了大数据时代三足鼎立的格局。
  1.招体平台解决方案厂向
  以IB M、微软、惠普、ORACLE, EMC等为代表的传统IT巨头,通过“硬件+软件+数据”的整体平台向用户提供大数据一站式解决方案。IBM在过去几年连续投入160亿美元,收购了30 多家与大数据相关的企业,初步实现了大数据行业应用的布局。目前IBM在软件架构层而,收购了商务智能软件供应商Cognos、统计分析软件SPSS、数据库分析供应商Netezza。结合IBM的DB2数据库,推出了支持Apache Hadoop的Info Sphere BigIn sights软件,支持大数据的应用。在硬件架构层而,IBM发布了集成了刀片服务器、存储、网络设备及相应软件系统的大数据一体机Pure Data,提供数据仓库、和数据分析等功能。
  为了应对行业竞争,数据库龙头企业ORACLE推出了0racle大数据一体机。该一体机集成了0racle Exalogic中间件云服务器, 0racle Exadata数据库云服务器和0racle Exalytics商务智能云服务器形成了ORACLE企业级端到端大数据的产品线。
  通过收购 Vertica 公司,惠普推出针对大数据的Vertica 6.1 数据分析平台,突破了传统数据仓库和数据库无法实现纵向扩展的瓶颈。在大数据管理方面,Vertica 信息优化平台实现高速度、高性能、高可扩展,通过内嵌 R 语言包实现了分析功能。Vertica 数据分析平台以软件的形式存在,可以加载在不同的计算资源上运行,包括一体机,同构或异构的硬件集群,甚至是公有云环境。
  存储服务器厂商 EMC 依托其 Greenplum 数据库推出了第一款 Greenplum 一体机产品(Appliance),对原有的EMC硬件和Greenplum 软件进行了整合。Greenplum 采用不同于Oracle,DB2等数据库产品的shared-nothing 大规模并行处理(Massive Parallel Process,MPP) 架构,特别适用于大数据分析场景,可以通过增加节点方式进行横向扩展,从而有效控制成本和性能。Greenplum 包含支持结构化数据处理的 Greenplum Database 和非结构化数据处理的Greenplum HD (Hadoop)。
  整体平台解决方案厂商依靠自身原有的软件、硬件或技术优势,通过收购及整合不同公司的产品线,实现对大数据各个领域的覆盖。但是这种堆砌式的系统整合,并不能彻底的突破大数据分析的瓶颈。只有通过对自身产品和技术的原始创新,才能实现对大数据处理问题的彻底解决。
  2. 商务智能专业厂商
  以 SAS、Teradata、Hyperion、Business Objects、Cognos、SPSS 等为代表的商务智能专业厂商长期专注于智能数据分析领域,具有技术实力强、产品线丰富、深刻理解传统行业(如银行、电信、零售)应用需求等优势。近年来,随着大数据分析竞争日趋激烈,该类厂商成为传统 IT 巨头的争夺焦点,早在 2007年至 2009 年,Oracle、SAP、IBM 等 IT 巨头就已完成对商务智能前四大厂商 Hyperion、Business Objects、Cognos、SPSS 的并购。
  商务智能专业厂商在大数据时代的发力点在结构化数据处理。在大数据时代,这些厂商开始加大在高可扩展计算、非结构化数据处理、以及与业务运营集成的实时处理(即操作型商务智能)等方面的投入和创新。例如,SAS 在 2012 年推出了基于内存计算的高性能数据分析方案,核心部件包括:SAS 高性能分析服务器、SAS 可视化分析和 SAS DataFlux 数据流处
  理引擎。SAS 高性能分析服务器采用库内分析和内存计算两种解决方案。库内分析技术在数据库内实现分析的过程,用户过去开发的 SAS 程序可以直接移植使用,而且这样的分析过程无需提取数据,避免了数据传输的额外开销,分析能力极大地提高。内存计算技术则利用大内存服务器的优势,减少数据从硬盘加载到内存的机会,把数据和分析程序直接放置在内存中执行,特别适合具有迭代和嵌套模式的分析算法,极大地提高了建模处理的速度。除此之外,SAS 公司最新推出的高性能分析解决方案还采用了“SAS Visual Analytics”技术,即可视化分析,让用户及时地查看分析结果。
  Teradata 公司针对大数据处理提出了统一数据架构 (Teradata Unified Data Architecture,UDA)下的 Aster 大数据分析平台该平台继承了Teradata公司统一数据架构在数据管理方面的优势,它与大数据的收集、处理等工作紧密相连,为企业提供一个完善的数据源。UDA 通过 Hadoop 实现数据存储管理,通过 Aster 实现数据探索和分析,通过 Teradata实现统
  一的数据架构,将存储、分析与整合相互结合,实现大数据价值的一个完整的闭环。
  商务智能专业厂商(如 SAS、Teradata)凭借在数据分析领域的长期积累,在大数据的分析建模方面仍然处于行业领导地位。但是,这些产品的大数据处理能力往往依赖于高性能服务器的处理能力,虽然他们也在向 Hadoop 等分布式平台迁移,但是实际的效果还有待观察。
  3. 互联网公司
  大型的互联网巨头,如国外的 Google、Facebook、Amazon,国内的阿里巴巴、百度、腾讯等,基于自身海量的用户信息和互联网处理平台,依托大数据提供精准营销和个性化广告推介等商业活动。十年前,Google发表的 GFS(Google File System)、MapReduce、和 BigTable论文催生了大数据处理的事实标准Hadoop。目前,Google 通过自身开发的 Caffeine平台,直接将索引放置在分布式数据库 BigTable 上。Google 还向用户提供了大数据的虚拟服务器业务,用户可以把数据上传到 Google,采用 Google 提供的BigQuery和 Google Compute Engine等服务和基础设施完成数据查询和分析。
  Facebook 目前运行着世界上最大的 Hadoop 服务器集群,存储的数据超过了 100PB,每30 分钟可以处理的数据超过了 105TB。然而,爆炸式增长的数据使Facebook 的 Hadoop 服务器集群难以承受,出现数据雪崩问题 (avalanche of data)。为此,Facebook 开发出两种全新软件平台处理大数据的挑战,第一种叫做“Corona ( 日冕 )”,它可以实现在数目庞大的
  Hadoop 服务器之间运行大量的任务,并且不用担心软件错误会导致整个服务器集群出现崩溃。第二种叫做“Prism ( 棱镜 )”,它实现了不同地域服务器的数据自动复制和传输,使 Facebook 遍布全球数据中心的Hadoop 服务器集群的数据得到同步,形成更加庞大的Hadoop 数据集群。
  云计算服务提供商 Amazon 推出了 Amazon 弹性MapReduce(Amazon Elastic MapReduce)。弹性MapReduce 是一项能够迅速扩展的 Web 服务,运行在亚马逊弹性计算云(Amazon EC2)和亚马逊简单存储服务平台上(Amazon S3)上。作为业界领先的云计算服务提供商,Amazon 提供网页检索、日志分析、数据挖掘、金融建模等数据密集型的任务需要的弹性云服务,动态地满足用户对于计算资源的需求。
  相对于国外互联网企业在大数据技术上的不断创新,国内互联网企业主要在大数据应用模式上创新。阿里巴巴利用旗下淘宝网的历史交易数据,推出了“淘宝指数”,相对于国外互联网企业在大数据技术上的不断创新,国内互联网企业主要在大数据应用模式上创新。阿里巴巴利用旗下淘宝网的历史交易数据,推出了“淘宝指数”,商家可以参考该指数指导生产、制定价格和控制库存。百度面对大数据时代企业需求,从数据、工具及应用三个层面规划大数据时代的企业战略。腾讯利用自身强大的社会网络通讯平台资源,通过大数据技术挖掘社会网络中的商业价值,实现了不同产品营销平台,为用户推荐感兴趣的产品和内容。
  综上所述,当前的大数据技术领域以产业引领为主,在大数据集中的领域推出相应的产品和服务。学术界主要围绕其中的难点问题展开基础性研究。目前,围绕大数据的科学研究、技术创新、系统开发和实际应用刚刚起步,无论产业界还是学术界,正处在群雄并起的“大数据春秋时期”。可以预计,在未来五至十年,大数据领域将会发展成若干核心团队、公司、典型应用的“大数据战国时代”。
  二、大数据分析平台体系架构
  大数据没有一个明确的定义,是一个相对的概念,取决于当前所具有的数据处理能力。如果一个用户所面对的数据超出该用户所拥有的数据存储、处理和分析的能力,致使该用户不能有效地利用数据,该用户就面对大数据问题。在大数据时代,个人、企业和机构都会面临大数据的问题。建设面向服务的大数据平台,为众多的中小企业和个人用户提供大数据处理和分析的能力,将成为大数据产业发展的重要方向。
  面向服务的大数据分析平台以区域性智能数据中心及高速互联网为基础设施,以互联网服务体系为架构,以大数据存储、处理、挖掘和交互式可视化分析等关键技术为支撑,通过多样化移动智能终端及移动互联网为用户提供数据存储、管理及分析服务。
  大数据分析平台的拓扑架构如图 1 所示。其中部署在多个地方的智能数据中心提供大数据存储及计算平台,通过平台服务器提供系统调用功能。门户服务中心将整合所有的智能数据中心存储和计算资源,并通过 web 应用服务器和 Open API 服务器以 web 调用和Open API 调用的方式提供大数据存储、管理及挖掘服务。终端用户利用移动智能终端通过互联网访问门户服务中心,使用其提供的大数据存储、管理及挖掘服务。
  图1.大数据分析平台拓扑示意图
  大数据分析平台的系统架构如图 2 所示。系统包含 3 个层次:平台层为整个大数据分析平台提供基础平台支持;功能层提供基本的大数据存储和挖掘功能;服务层为用户提供基于互联网的大数据服务。具体包括:
  图2.大数据分析平台系统架构
  (1)平台层:为大数据存储和挖掘提供大数据存储和计算平台,为多区域智能中心的分析架构提供多数据中心调度引擎;
  (2)功能层:为大数据存储和挖掘提供大数据集成、存储、管理和挖掘功能;
  (3)服务层:基于 Web 和 Open API 技术提供大数据服务。
  三、大数据分析平台关键技术
  建设面向服务的大数据分析平台,需要研究和开发一系列关键技术(如图 3 所示),主要包括:
  图3.大数据分析平台关键技术
  1. 平台层
  (1)大数据分布式存储系统:针对数据不断增长的挑战,需要研究大规模、非结构化数据的存储问题,突破大数据的存储、管理和高效访问关键技术,当前需要构建至少 PB 级存储能力的大数据平台才能满足一般的科研和应用需求。
  (2)分布式数据挖掘运行时系统:针对大数据挖掘算法运行的挑战,突破 MapReduce 技术的局限,研究有效支持迭代、递归、层次及集成机制的海量数据挖掘编程模型和运行时系统,构建大数据运行时系统。
  (3)智能数据中心联合调度技术:针对大数据存储和挖掘的挑战,研究多数据中心的智能联合调度、负载均衡技术,整合多个数据中心的存储和计算资源,构建基于多智能中心的大数据服务平台。
  2. 功能层
  (1)高可扩展性大数据挖掘算法:针对大数据挖掘的挑战,研究基于云计算的分布式大数据处理与挖掘算法,构建高可扩展的大数据处理与挖掘算法库,实现 TB 级数据的建模能力。
  (2)大数据安全与隐私保护技术:针对数据挖掘“软件即服务”(SaaS)模式的需求,研究开发数据挖掘在云环境下的隐私保护、数据审计和节点数据挖掘技术,确保大数据挖掘过程中的数据安全,保证用户的隐私不被泄露。
  (3)分布式工作流引擎:针对大数据挖掘分布式调度的挑战,研究基于云计算的分布式工作流调度、负载均衡技术,构建高效分布式工作流执行引擎。
  (4)交互式可视化分析技术:针对传统分析方法交互性和可理解性不足的问题,研究启发式、人机交互、可视化数据挖掘新技术,实现大数据挖掘的高度人机交互功能。
  3. 服务层
  (1)基于 Web 的大数据挖掘技术:突破传统的基于单机软件的数据挖掘技术,创新基于 Web 的大数据挖掘方法和流程,实现易于使用的基于 Web 的大数据挖掘技术,构建基于 Web 的大数据分析环境。
  (2)基于 Open API 的大数据挖掘技术:突破传统的基于软件的数据挖掘技术,创新基于 Open API 的大数据挖掘方法,研究大数据挖掘开放接口、开放流程,构建基于 Open API 的大数据分析模式。
  为广大用户提供大数据处理和分析的服务功能,大数据分析平台要突破传统的基于软件和高端服务器的数据挖掘传统技术体系,采用基于云计算的大数据存储和处理架构、分布式数据挖掘算法和基于互联网的大数据存储、处理和挖掘服务模式。实现这一目标需要做如下创新:
  (1)系统架构创新:突破传统的基于软件和高端服务器的数据挖掘技术体系,研发基于互联网和云计算的大数据存储、处理和挖掘的数据中心系统架构,支持多用户、多任务的大数据分析环境;
  (2)服务模式创新:突破传统的一次性软件销售或软件租赁的高价格解决方案,创新基于互联网的大数据存储、处理和分析服务模式,为用户提供按需、廉价的大数据存储、处理和分析服务;
  (3)使用模式创新:突破传统的使用单机软件的方式,创新基于互联网的大数据存储、管理和分析服务,提供多终端(台式机、笔记本、平板电脑、手机等)、多途径(浏览器访问,Open API 调用等)的用户使用模式。
  四、大数据分析平台应用与产业化
  商业应用是大数据分析平台的发展目标。随着我国企业信息化程度和水平不断提高,越来越多的企业需要大数据分析的能力以提高竞争力。在互联网、电子商务、金融、电信、零售、物流等数据驱动型行业,客户分群、客户行为分析、客户关系管理、市场营销、广告投放、业务优化、风险管理等企业核心业务越来越依赖于对数据的有效分析与挖掘。正如在《大数据:国家选择与产业方向》一书中所说,“大数据时代公司的价值,与其拥有的数字资产的规模、活性成正比,与其解释、运用数据的能力成正比”。因此,如何从海量业务数据中挖掘有价值的信息和知识,从而指导商业运营与决策、提高企业运营效率和盈利能力,成为每个企业都将面临的重要挑战。
  大数据分析平台基于分布式海量数据存储与计算环境,提供图形化交互式数据处理和分析工具,丰富的数据分析与挖掘算法,以及交互式可视化分析工具,通过互联网服务方式向用户提供服务。这种系统实现策略不仅符合大数据应用的发展趋势,同时也满足中小企业和个人用户对于数据分析系统的可用性、时效性和低成本等方面的要求。
  目前,在大数据处理与分析领域,国际上三支主要力量在不断地竞争与融合,即大型互联网公司(如Google、Amazon)、 传 统 商 务 智 能 公 司( 如 SAS、SPSS)和传统 IT 公司(如 IBM、ORACLE、SAP)。三方从各自优势出发,不断增强针对大数据的分析智能性、计算扩展性和非结构化数据处理能力。尽管一些公司在上述领域取得突破并抢得市场先机,但国际大数据产业整体上仍然处于起步阶段,据 IDC 公司预测未来 5 年大数据分析产业年增长率高达 9.8%,到 2016年全球产业规模将超过 500 亿美元。同时,越来越多的大数据创新公司不断涌现并发展迅速,也证明了该领域蕴含着巨大的发展潜力和广阔的市场前景。
  大数据分析平台所采用的技术路线和应用模式融合了智能分析技术、高可扩展计算技术、非结构化数据处理技术和软件即服务(SaaS)应用模式,符合当前国际大数据产业的发展趋势和产业化应用要求。一方面,系统通过互联网服务方式向用户提供高可用、高易用和一站式的海量数据分析服务,可有效降低企业应用门槛和成本,通过专业化服务外包满足企业个性化需求。另一方面,由于是开放架构的系统平台,商业用户和其他软件提供商可通过系统提供的互联网服务开发接口(Open API)开发面向行业商务智能应用的解决方案,孵化新型咨询公司、软件公司和信息服务公司,有助于形成以平台为核心的大数据分析产业生态环境。
发表评论:
TA的最新馆藏[转]&[转]&[转]&[转]&[转]&[转]&任务和调度:理解批量处理的关键设计
任务和调度:理解批量处理的关键设计
& 14:39:19&&&&&
转载本文需注明出处:EAII企业架构创新研究院,违者必究。如需加入微信群参与微课堂、架构设计与讨论直播请直接回复公众号:“EAII企业架构创新研究院”。(微信号:eaworld)
一、背景1.1.什么是批量处理1.2.批量处理拥有广泛的使用场景1.3.批量处理需要良好的架构设计
二、批量处理中的关键设计
2.1从SpringBatch看批量任务设计模式2.2任务调度设计
1.1.什么是批量处理
维基百科给批量处理的定义是指在没有人工干预的情况下,由一个计算机程序基于一份批量的输入执行一系列的任务的一种处理模式。这句话可能有点拗口,简单来说,批量处理是一种处理模式,这种模式在进行数据处理时,输入数据一般包含多条,处理过程中一般没有人工交互。而另一种主流的处理模式,联机处理与批量处理的最主要区别就是,联机处理中一般一条输入数据就产生一次处理过程,然后直接将结果反馈给调用方。批量处理曾经在早期的计算机处理模式中占据统治地位。
1.2.批量处理拥有广泛的使用场景
我们先来看下批量处理的特点:
批量处理单次执行就可以处理大量数据,而联机处理中单次执行一般只能处理少量数据。
批量处理每次需要处理大量的数据,执行时间将较长,而联机系统需要实时、快速响应调用方的请求。
批量处理不需要维持与调用方的连接,执行结果一般通过报告等形式通知调用方,资源利用率比较高。
批量处理可以选择将处理时间放在计算资源不那么紧张的时间段,更好的利用系统资源。
从批量处理的特点我们可以看到,在实时性、交互性要求不高,同时待处理的数据量比较大的场景下,就可以考虑使用批量处理的模式。而实际各种业务系统中通常都会存在大量适合使用或者正在使用批量处理的场景,常见的如银行的对账、网银的批量待发工资、日志系统中批量备份日志等。我们大家可能都会有从支付宝里提现至银行卡的经历,通常提现并不是实时的,支付宝会给你一个deadline,这中间支付宝与银行之间数据对账就是采用批量处理完成的。
1.3.批量处理需要良好的架构设计
在最简单的批量处理场景下,我们可以通过编写脚本,在类Unix系统中通过cron程序定时启动执行。但是这种模式仅仅适合单机处理的情况,没有分布式处理的能力,同时也没有办法进行统一的监控管理。在实际使用时,可能同时存在数量巨大的批量任务,如何管理与调度这些任务将是个巨大的挑战。设计良好的批量处理框架可以简化批量任务开发过程,减少配置时间,提高整体稳定性。笔者曾经参与过某银行BPM系统批量处理框架的设计,一开始设计比较简单,在各个服务器部署批量脚本,基于cron执行,通过数据库进行结果统计,在项目上线初始阶段,由于批量任务比较少,所做的工作也比较简单,该设计能够基本满足需求,但是随着项目上线后,批量任务越来越多,场景越来越复杂(比如需要支持数据库服务器HA切换时批量任务不重复执行),原有设计已经越来越力不从心,最后只有推倒重新设计,费时又费力,由此可见一个好的批量处理框架设计是多么的重要。本文将通过分析批量处理中的两个关键环节,结合一些开源的批量处理框架,来聊一聊如何更好地进行批量处理型架构的设计。
二、批量处理中的关键设计
批量处理中两个关键环节是批量任务设计和任务调度设计:
批量任务设计:统一规定了作业的定义、编排、执行等过程,良好的作业模型可以隐藏了内部复杂性,简化具体作业开发难度,更好的支持调度过程。
任务调度设计:通俗的说调度就是控制作业在什么时候由那些资源(节点、线程等)去执行,同时还包含作业执行失败后的处理等内容。
2.1从SpringBatch看批量任务设计模式
2.1.1传统批量作业结构
我们首先来看一下过去几十年间已经被广泛使用的批量作业结构:
图1 批量作业结构
这个架构图非常简单,传递了批量作业中最重要的几个领域概念:
JobLauncher:该领域对象是Job的启动器,其作用就是启动Job。
Job:定义,配置批处理任务的领域对象,该对象的作用,是做Step的容器,配置该批处理任务需要的Step,以及他们之间的逻辑关系。
Step:定义批处理任务中一个对立的逻辑任务处理单元。基本上的业务逻辑处理代码都是封装在Step中的,这种形式定义了一个Step的流程必须是“ItemReader- ItemProcessor(可选)-ItemWriter”。
JobRepository:该领域对象会为Job的运行数据提供一种持久化机制,为所有的Job提供CRUD的操作接口,并为所有的操作提供事务支持。
在这种设计模式下,任务的定义执行过程变得非常清晰,使用这只需要关注于每个Step中的具体业务实现即可,通过简单的配置就能完成任务的设计。
2.1.2.&&SpringBatch中的任务设计模式:
传统批量作业结构在好几代平台和编程语言中已经被证明为非常合理和有效。著名Java开源批处理框架SpringBatch就是实现了这种作业结构,不过除此之外,SpringBatch还加入了自身一些设计:
图2 SpringBatch作业模型
上图展现了SpringBatch中的几个概念模型:
JobInstance:该领域概念和Job的关系与Java中实例和类的关系一样,Job定义了一个工作流程, JobInstance就是该工作流程的一个具体实例。一个Job可以有多个JobInstance,多个JobInstance之间的区分就要靠另外一个领域概念JobParameters了。
JobParameters:是一组可以贯穿整个Job的运行时配置参数。不同的配置将产生不同的JobInstance,如果你是使用相同的JobParameters运行同一个Job,那么这次运行会重用上一次创建的JobInstance。
JobExecution:该领域概念表示JobInstance的一次运行,JobInstance运行时可能会成功或者失败。每一次JobInstance的运行都会产生一个JobExecution。同一个JobInstance(JobParameters相同)可以多次运行,这样该JobInstance将对应多个Jobexecution。JobExecution记录了一个JobInstance在一次运行时的发生的所有事情,因此,一个JobExecution需要包含很多的属性,并且需要持久化,这样才能很好的支撑Restart等Spring Batch特性。
StepExecution:&类似于JobExecution,该领域对象表示Step的一次运行。Step是Job的一部分,因此一个StepExecution会关联到一个Jobexecution。另外,该对象还会存储很多与该次StepExecution运行相关的所有数据,因此该对象也有很多的属性,并且需要持久化以支持一些Spring Batch的特性。
同时,为了提高作业运行时效率, SpringBatch中还同时提供了几种并行处理方案:
多线程处理,一个Step的处理过程可以配置一个包含多个线程资源的线程池处理。
并行Step处理,根据任务的特点,可以将任务中的多个不同的Step进行分组,形成多个流,这多个流可以并行处理。
Step远程分片处理,下图为Step远程分片模型:
图3 远程分片模型
在远程分片模型中,某一个Step中由Master节点去读取数据,但是处理的过程,由Master分配给多个Slaves去处理,在这种模型中,Master节点的读取能力不能成为整个Step的瓶颈。
Step分区处理,这种模式跟远程分片处理过程很类似,不同是,分区处理中Master节点不负责读取数据,而是由该Step中的各个分区独立去读取和处理,当然这种模式下如何将数据进行合适的分区很重要,并不是所有Step都适合这种模式去处理。
2.1.3 SpringBatch的不足
可以看到SpringBatch中提供了一套非常完善的批量任务设计模式,但是SpringBatch也有不足的地方:
SpringBatch本身不提供调度的能力,调度依赖于quartz,quartz虽然可以进行集群调度作业,一个节点挂了可以将任务漂移给其他节点执行从而避免单点故障,但是不支持分布式作业,一旦达到单机处理极限也会存在问题。
SpringBatch中虽然提供了一些并行处理方案,但是分片、多线程这些方案都非常依赖于任务配置,没有提供一种自动化的机制去灵活地进行资源的调度。
2.2任务调度设计
2.2.1两种调度模式
常见分布式调度系统在设计上主要有中心化和去中心化两种模式:
2.2.1.1.&&&中心化的调度模式
下图为中心化的调度模式结构图:
图4中心化的调度模型
如上图所示,在中心化的调度模式下,一般都有一个Leader节点用来负责拉取任务的调度信息,然后向各个Follower节点分派任务,由Follower节点完成任务的执行。同时为了保证整个系统的高可用,Leader节点一般会采取主备模式,当一个Leader节点失效时,备用节点会接管Leader节点工作。
2.2.1.2. 去中心化的调度模式
下面再来看一下去中心化模式:
图5去中心化的调度模型
在去中心化的调度模式下,没有调度中心节点这个概念,所有节点都是工作节点,节点之间通过注册中心进行分布式协调,但是在这种模式下,一般会有一个主节点用于处理一些集中式任务,如分片,清理运行时信息等,并无调度功能,定时调度都是由作业节点自己触发执行。
下面对比一下两种调度模式各自的优缺点:
触发时间统一控制
异构语言支持
表1 中心化和去中心化调度比较
2.2.2.&TBSchedule中的调度设计
TBSchedule是由Taobao开源的一款非常优秀的高性能分布式调度框架,TBSchedule的使用非常广泛,目前被应用于淘宝、京东、国美、等很多互联网企业的调度系统。TBSchedule有如下特点:
支持集群、分布式
灵活的任务分片
动态的服务扩容和资源回收
任务监控支持
TBSchedule支持Cluster,可以宿主在多台服务器多个线程组并行进行任务调度,或者说可以将一个大的任务拆成多个小任务分配到不同的服务器。
TBSchedule的分布式机制是通过Sharding方式实现的,比如可以按所有数据的ID按10取模分片、按月份分片等等,根据不同的需求,不同的场景由客户端配置分片规则。TBSchedule的宿主服务器可以进行动态扩容和资源回收,这个特点主要是因为它后端依赖的ZooKeeper,这里的ZooKeeper对于TBSchedule来说是一个NoSQL,用于存储策略、任务、心跳信息数据,它的数据结构类似文件系统的目录结构,它的节点有临时节点、持久节点之分。调度引擎上线后,随着业务量数据量的增多,当前Cluster可能不能满足目前的处理需求,那么就需要增加服务器数量,一个新的服务器上线后会在ZooKeeper中创建一个代表当前服务器的一个唯一性路径(临时节点),并且新上线的服务器会和ZooKeeper保持长连接,当通信断开后,节点会自动摘除。下图为TBSchedule的基本结构图,从图上可以到,TBSchedule从整体上来说遵循的是去中心化的调度模式,每个节点都可以从ZooKeeper中拉取任务去执行。
图6 TBSchedule结构图
TBSchedule提供了两个核心组件ScheduleServer、TBScheduleManagerFactory。
ScheduleServer即任务处理器,的主要作用是任务和策略的管理、任务采集和执行,由一组工作线程组成,这组工作线程是基于队列实现的,进行任务抓取和任务处理。每个任务处理器和ZooKeeper有一个心跳通信连接,用于检测Server的状态和进行任务动态分配。
调度服务器TBScheduleManagerFactory的主要工作ZooKeeper连接参数配置和ZooKeeper的初始化、调度管理。
TBSchedule中的用户目标任务是通过实现任务接口实现的,任务接口中包含selectTasks和execute两个方法,分别对应任务的采集和执行过程。
2.2.3.&TBSchedule的不足
尽管TBSchedule已经很优秀,尤其是资源调度这块,但是TBSchedule也有不足的地方:
TBSchedule中对于批量任务开发的指导比较欠缺,这点SpringBatch中做的很好。
TBSchedule中任务执行是相互独立的,而在在实际使用场景中很多任务执行必须依赖于另一个任务,甚至可能多个任务之间都有相互关系,形成任务流这种形式,任务流需要以可视化的方式进行编排和执行时的管理,TBSchedule没有提供这种能力。
目前TBSchedule中如果上线一个新服务器,需要通过手动的方式去启动,没有结合这几年流行的容器技术,实现服务资源的动态伸缩。
随着计算机技术的发展,在C/S和B/S软件体系结构中,联机处理模式已经慢慢成为最主要的数据处理模式,尽管如此,批量处理作为一种古老的处理模式,任然以其高吞吐、高性能的特性占据着一席之地。
本文从批量处理的概念出发,结合开源批量框架SpringBatch和TBSchedule,简要介绍了批处理型服务架构的设计。可以看到目前虽然有很多已经被广泛使用的批量处理框架,但是还是存在着很多不完善的地方。
冰冻三尺非一日之寒,任何事物的发展和完善都不是一朝一夕的事,对于批量处理框架设计而言也是如此。我们自己在设计时可以考虑站在巨人的肩膀上,借鉴成熟的框架设计,同时结合具体的业务场景,加入符合需求的功能特性,完善出功能强大、运行稳定和易于使用的批量处理框架。
本文仅仅是抛砖引玉,对于具体设计时的很多细节问题并没有进行深入讨论。希望本文对于正在设计批量处理框架的同学能有那么一点帮助和指导。
现任普元信息SOA产品部开发工程师,普元新一代数字化企业云平台开发团队成员,参与云平台中UMC领域系统开发。过去两年中曾参与了浦发银行新一代BPM业务流程管理平台项目开发。
EAII(Enterprise&Architecture&Innovation&Institute)企业架构创新研究院,致力于软件架构创新与实践,加速企业数字化转型。
eaworld项目(微信号:eaworld,长按二维码关注)
eaworld是EAII的官方微信账号。
与本文相关的实践案例&
与本文相关的媒体文章&

我要回帖

更多关于 大数据平台的调度模式 的文章

 

随机推荐