专利名称:一种任务分发方法及系统的制作方法
技术领域:
本发明涉及一种任务分发方法及系统,主要适用于网站发布任务的分发领域。
背景技术:
随着互联网技术的发展,新闻门户网站的内容数量成指数增长,并且为了延伸网民的阅读,网站设计者还会在其他页面、区域中放置相关内容的索引链接,吸引网民阅读。随着采集渠道的丰富、内容范围越来越广,内容发布所要更新的页面数量急剧膨胀,随之带来的问题是如何保证大量页面更新状况下,页面生成通道将面临巨大压力,从而导致生成任务不能快速响应。目前解决这类问题的方法主要有两种,监控生成通道状态分配任务和平均分配任务,监控生成通道状态分配任务的方法一般有两种方式,即通过硬件监控服务器状态和通过程序监控服务器状态并分发任务。这两种方法都有自己明显的缺点。通过专业硬件设备监控服务器状态的方法,优点是任务分配精准,可以精确的控制生成任务分发到某一个生成通道,保证各个生成通道负载的相对均衡。缺点也非常明显,如果采用硬件设备监控服务器状态,成本高昂(例如,F5负载均衡设备价格约20万元人民币)。而采用程序监控服务器状态,监控/任务分发程序必须频繁获取服务器负载状态,由于页面生成任务的任务量巨大,一般中型以上门户网站生成页面数量约为每秒1000个页面。因此要想做到任务分配准确,监控/任务分发程序必须实时获取服务端的任务执行情况及负载压力,若满足条件再为其分配任务。这种机制带来的局限是,监控程序轮询时间必须很小,才能保证分配的准确性,而轮询频率越高则服务端开销也会随之提高。另外生成服务器的生成任务需要等待监控/任务分发程序来指定的,因此在面对大量并发更新的情况下,系统性能的瓶颈很容易集中在监控程序。而如果采取集群方式提高监控程序的并发量,由此会对监控程序的复杂性和任务分配算法的准确性提出极高的要求。而平均分配任务的方法是将每个生成任务依次或按一定顺序分配个某一个生成通道。优点是实现简单,缺点也非常明显,即很难保证各个生成通道任务的相对均衡。由于每个任务的页面更新数量具有不确定性,受内容数据和页面间引用关系的影响,会导致某些生成任务实际更新了大量的静态页面,而某些任务仅仅更新了少量几个页面。因此平均分配任务的方式很可能会产生这种情况,某一个生成通道刚收到一个更新页面很多的生成任务,而其他生成通道的任务仅需要更新少量页面,当新任务再次被分发到这个通道,而该通道还没有执行完上次的更新任务时,会导致任务的堆积,负载增大。而同时其他生成通道没有被分配到任务,处于闲置状态,使得硬件服务器资源没有被有效利用。
发明内容
针对现有技术中存在的缺陷,本发明所要解决的技术问题是提供一种负载均衡的任务分发方法及系统。
为解决上述技术问题,本发明采用的技术方案如下:一种任务分发方法,包括以下步骤:生成任务消息文件,并存储在任务消息目录;对于每一个任务处理装置,如果处于闲置状态,则定时扫描任务消息目录,查询是否存在待处理的且没有被锁定的任务消息文件;如果存在,则获取所述任务消息文件并锁定;任务处理装置处理所述任务消息文件。一种任务分发系统,包括任务消息文件生成装置及与所述任务消息文件生成装置连接的若干任务处理装置;所述任务消息文件生成装置用于生成任务消息文件,并存储在任务消息目录;所述任务处理装置用于在闲置状态时获取待处理的且没有被锁定的任务消息文件并处理该获取的任务消息文件。本发明所述方法及系统,多个任务处理装置只有在闲置状态下才会领取任务,当任务数量大于任务处理装置个数后,每个任务处理装置都在处理任务,而没有闲置的任务处理装置,因此可以认为任务的分配满足了各个任务处理装置负载均衡的要求。同时由于采用文件系统存储任务消息文件,从软件层面解决了上述问题,降低了硬件成本和实施成本。
图1是具体实施方式
中任务分发系统的结构框图;图2是具体实施方式
中任务分发方法的流程图;图3是具体实施方式
中将任务消息文件存储在任务消息目录的处理过程流程图;图4是具体实施方式
中处理任务消息文件失败后的处理过程流程图。
具体实施例方式任务分发策略主要考虑如下三个方面因素:任务均衡分配、任务并发处理和异常状况处理。对于任务均衡分配,当存在多个任务处理装置处理任务时,为避免任务量分配不均衡,根据分发策略,将新提交的任务分配到负载最轻的任务处理装置上执行,从而使各个任务处理装置均能维持在基本相同负荷的状态下工作。对于任务并发处理,当同时有多个任务处理装置等待处理任务时,任务仅能分配给其中的一个任务处理装置,即任务不会被其他任务处理装置再次执行。对于异常状况处理,处理任务必须具备事务性,即任务不会被意外删除,并且在任务处理过程中由于错误异常导致处理任务终止或失败后,任务会被标记等待再次分配,而不会丢失。本发明在考虑了上述三个因素的基础上,利用文件锁机制和抢任务的策略将任务分发给负载较轻的任务处理装置。下面结合附图对本发明的具体实施方式
进行详细说明。如图1所示,本实施方式中的任务分发系统包括任务消息文件生成装置1,与任务消息文件生成装置I连接的若干任务处理装置2和失败处理装置(图1中未示出)。所述任务消息文件生成装置I包括存储单元11、第一锁定单元12、复制单元13和解锁单元14。所述任务处理装置2包括扫描单元21、查询单元22、获取单元23、锁定单元24、处理单元25和删除单元26。任务消息文件生成装置I用于生成任务消息文件,并存储在任务消息目录。其中:存储单元11用于将任务消息以文件形式存储在临时目录;第一锁定单元12用于锁定任务消息文件;复制单元13用于将存储在临时目录的任务消息文件复制到任务消息目录;解锁单元14用于在复制成功后,解除对任务消息文件的锁定。任务处理装置2用于在闲置状态时获取待处理的且没有被锁定的任务消息文件并处理该获取的任务消息文件。其中:扫描单元21用于在闲置状态时定时扫描任务消息目录;查询单元22用于查询任务消息目录是否存在待处理的且没有被锁定的任务消息文件;获取单元23用于当任务消息目录存在待处理的且没有被锁定的任务消息文件时,获取任务消息文件;第二锁定单元24用于锁定获取的任务消息文件;处理单元25用于处理任务消息文件。第一锁定单元12和第二锁定单元24锁定任务消息文件的方式为:在任务消息目录建立待锁定的任务消息文件的消息锁文件。删除单元26用于在处理完任务消息后,先删除任务消息目录的任务消息文件,再删除该任务消息文件的消息锁文件。失败处理装置用于在任务处理装置2处理任务消息文件失败后,解除对该任务消息文件的锁定并记录失败次数;如果失败次数超过设定阈值,则将该任务消息文件转存到任务失败目录。如图2所示,采用上述系统实现任务分发的方法包括以下步骤:(I)任务消息文件生成装置I生成任务消息文件,并存储在任务消息目录。首先将任务消息以文件的形式存储在一个能够被各个任务处理装置2都能访问到的文件系统上,即将任务消息目录设置在所述文件系统上,通常是NAS (Network-attachedstorage,网络存储)上的一块空间。如图3所示,本实施方式中,将任务消息文件存储在任务消息目录的过程如下:①存储单元11将任务消息以文件形式存储在临时目录。②第一锁定单元12锁定该任务消息文件。锁定任务消息文件的方法为:在任务消息目录建立待锁定的任务消息文件的消息锁文件。所述消息锁文件与被其锁定的任务消息文件的文件名相同、扩展名不同。消息锁文件可以设定有效期限,超过设定的有效期限消息锁文件便失效。有效期限可根据具体的应用领域确定,在网站发布领域,一般设置为30分钟。③复制单元13将存储在临时目录的任务消息文件复制到任务消息目录。④复制成功后,解锁单元14解除对该任务消息文件的锁定。(2)对于每一个任务处理装置2,如果处于闲置状态,则扫描单兀21定时扫描任务消息目录,查询单元22查询是否存在待处理的且没有被锁定的任务消息文件;如果存在,则获取单元23获取该任务消息文件,第二锁定单元24锁定该任务消息文件。各个任务处理装置2在处理完上一个任务后,处于闲置状态,此时扫描单元21会定时扫描任务消息目录,查询单元22查找是否有待处理的任务消息文件。一般情况下定时轮询时间可根据系统响应要求,设定为I秒。扫描单元21扫描到某一个任务消息文件后,查询单元22查找该任务消息文件的同目录下是否有相同文件名的消息锁文件(与任务消息文件相同的文件名,不同的扩展名)。任务处理装置2只处理没有消息锁文件或者消息锁文件过期的任务消息文件,从而保证该任务不会被再次执行。只有在极端情况下存在任务被多次执行的可能,但根据实际测试发现概率很低,可以忽略不计。(3)任务处理装置2处理任务消息文件。任务处理装置2加载任务消息文件的任务内容,并根据任务内容执行任务。任务处理装置2在处理完任务消息后,先由删除单元26删除任务消息目录的任务消息文件,再删除该任务消息文件的消息锁文件。如图4所示,如果任务处理装置2处理任务消息文件失败,则由失败处理装置删除该任务消息文件的消息锁文件并记录失败次数;此时等消息有效期过期后,该任务会被重新执行。如果失败次数超过设定阈值,则将该任务消息文件转存到任务失败目录,由系统管理员分析处理。阈值优选为3。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其同等技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种任务分发方法,其特征在于,包括以下步骤: 生成任务消息文件,并存储在任务消息目录; 对于每一个任务处理装置,如果处于闲置状态,则定时扫描任务消息目录,查询是否存在待处理的且没有被锁定的任务消息文件;如果存在,则获取所述任务消息文件并锁定; 任务处理装置处理所述任务消息文件。
2.如权利要求1所述的任务分发方法,其特征在于,所述将任务消息文件存储在任务消息目录的过程包括以下步骤: 将任务消息以文件形式存储在临时目录; 锁定该任务消息文件; 将存储在所述临时目录的任务消息文件复制到所述任务消息目录; 复制成功后,解除对该任务消息文件的锁定。
3.如权利要求1或2所述的任务分发方法,其特征在于,锁定任务消息文件的方法为:在任务消息目录建立待锁定的任务消息文件的消息锁文件。
4.如权利要求3所述的任务分发方法,其特征在于:所述消息锁文件与被其锁定的任务消息文件的文件名相同、扩展名不同。
5.如权利要求4所述的任务分发方法,其特征在于:所述消息锁文件设有有效期限,超过所述有效期限消息锁文件失效。
6.如权利要求5所述的任务分发方法,其特征在于,所述查找是否存在没有被锁定的任务消息文件的方法为:查找是否存在没有消息锁文件或者消息锁文件失效的任务消息文件。
7.如权利要求1或2所述的任务分发方法,其特征在于:所述定时扫描的时间间隔为I秒。
8.如权利要求3所述的任务分发方法,其特征在于:在处理完任务消息后,先删除任务消息目录的任务消息文件,再删除该任务消息文件的消息锁文件。
9.如权利要求1所述的任务分发方法,其特征在于:如果任务处理装置处理任务消息文件失败,则解除对所述任务消息文件的锁定并记录失败次数;如果失败次数超过设定阈值,则将该任务消息文件转存到任务失败目录。
10.如权利要求9所述的任务分发方法,其特征在于:所述设定阈值为3。
11.一种任务分发系统,其特征在于:包括任务消息文件生成装置(I)及与所述任务消息文件生成装置(I)连接的若干任务处理装置(2); 所述任务消息文件生成装置(I)用于生成任务消息文件,并存储在任务消息目录;所述任务处理装置(2)用于在闲置状态时获取待处理的且没有被锁定的任务消息文件并处理该获取的任务消息文件。
12.如权利要求11所述的任务分发系统,其特征在于:所述任务消息文件生成装置(I)包括用于将任务消息以文件形式存储在临时目录的存储单元(11);用于锁定任务消息文件的第一锁定单元(12);用于将存储在所述临时目录的任务消息文件复制到所述任务消息目录的复制单元(13);以及用于在复制成功后,解除对任务消息文件锁定的解锁单元(14)。
13.如权利要求11所述的任务分发系统,其特征在于:所述任务处理装置(2)包括用于在闲置状态时定时扫描任务消息目录的扫描单元(21);用于查询任务消息目录是否存在待处理的且没有被锁定的任务消息文件的查询单元(22);用于当任务消息目录存在待处理的且没有被锁定的任务消息文件时,获取任务消息文件的获取单元(23);用于锁定获取的任务消息文件的第二锁定单元(24);以及用于处理任务消息文件的处理单元(25)。
14.如权利要求12或13所述的任务分发系统,其特征在于,所述第一锁定单元(12)和第二锁定单元(24)锁定任务消息文件的方式为:在任务消息目录建立待锁定的任务消息文件的消息锁文件。
15.如权利要求14所述的任务分发系统,其特征在于:所述任务处理装置(2)还包括用于在处理完任务消息后,先删除任务消息目录的任务消息文件,再删除该任务消息文件的消息锁文件的删除单元(26)。
16.如权利要求11 13中任一项所述的任务分发系统,其特征在于:所述系统还包括失败处理装置,用于在所述任务处理装置(2)处理任务消息文件失败后,解除对该任务消息文件的锁定并记录失败次数;如果失败次数超过设定阈值,则将该任务消息文件转存到任务 失败目录。
全文摘要
本发明涉及一种任务分发方法,包括以下步骤生成任务消息文件,并存储在任务消息目录;对于每一个任务处理装置,如果处于闲置状态,则定时扫描任务消息目录,查询是否存在待处理的且没有被锁定的任务消息文件;如果存在,则获取所述任务消息文件并锁定;任务处理装置处理所述任务消息文件。本发明还涉及一种任务分发系统,包括任务消息文件生成装置及与任务消息文件生成装置连接的若干任务处理装置;任务消息文件生成装置用于生成任务消息文件,并存储在任务消息目录;任务处理装置用于在闲置状态时获取待处理的且没有被锁定的任务消息文件并处理该获取的任务消息文件。本发明所述方法及系统能够实现任务处理装置的负载均衡。
文档编号G06F9/46GK103186418SQ20111045617
公开日2013年7月3日 申请日期2011年12月30日 优先权日2011年12月30日
发明者杨炀, 辛洪伟 申请人:北大方正集团有限公司, 北京北大方正电子有限公司