基于任务分配的自动出票系统的制作方法
【技术领域】
[0001]本发明涉及一种基于任务分配的自动出票系统。
【背景技术】
[0002]现有的自动出票系统工作时通常只有一个服务器,这严重影响了出票业务的处理速度和效率,对于具有大吞吐量需求的出票业务,现有的自动出票系统已经渐渐无法满足需求。
【发明内容】
[0003]本发明要解决的技术问题是为了克服现有技术中自动出票系统出票业务的处理速度和效率很慢,无法满足大吞吐量需求的缺陷,提供一种基于任务分配的自动出票系统。
[0004]本发明是通过下述技术方案来解决上述技术问题的:
[0005]本发明提供了一种基于任务分配的自动出票系统,其特点在于,包括:
[0006]任务分配模块,用于在接收到表征出票任务的外部请求时,根据任务类型将不同的出票任务分别置入对应的消息队列中,所述消息队列采用先进先出的数据结构;
[0007]任务取出模块,用于从所述消息队列中取出出票任务;
[0008]多个任务处理模块,每个任务处理模块均包括一组可自动扩展的处理线程,每个处理线程中均包含出票任务的处理逻辑,所述任务处理模块用于通过执行处理线程来处理出票任务。
[0009]较佳地,所述自动出票系统还包括管理模块,用于执行数据监控及报警、任务处理模块的配置和管理及连接池的管理。
[0010]较佳地,所述自动出票系统还包括日志模块,用于记录所述自动出票系统的所有运行日志。
[0011 ] 较佳地,所述运行日志的存储格式包括文本日志、数据库日志、TraceLog ( 一种日志格式)及CentralLog ( 一种日志格式)。
[0012]较佳地,所述消息队列采用异步通信机制。
[0013]较佳地,所述自动出票系统还包括数据库,用于存储所述消息队列。
[0014]较佳地,所述自动出票系统还包括消息队列管理模块,用于对所述消息队列进行监控和管理,包括日志查询、计时计数器查询、消息队列积压情况的监控和报警以及配置信息的查询和修改。
[0015]较佳地,所述任务处理模块还用于在所述消息队列的任务量超过一第一阈值时自动增加处理线程,并在任务量低于一第二阈值时自动减少处理线程。
[0016]较佳地,所述自动出票系统为分布式系统,采用不同的服务器执行不同任务类型的出票任务。
[0017]本发明的积极进步效果在于:本发明的自动出票系统是一种高性能、高可用、可扩展的分布式自动出票系统,具有出票任务顺序存储及分配、大吞吐量、日志传输、支持异常报警等特性,同时具有很好的平台无关性,并能够很好地支持并发与异步调用,适用于大吞吐量、顺序任务和日志数据传输等场景。
【附图说明】
[0018]图1为本发明的较佳实施例的基于任务分配的自动出票系统的模块示意图。
【具体实施方式】
[0019]下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
[0020]如图1所示,本发明的基于任务分配的自动出票系统包括任务分配模块1、任务取出模块2、多个任务处理模块3、管理模块4、日志模块5、数据库6及消息队列管理模块7。[0021 ] 本发明的自动出票系统以WebService ( 一种平台独立的、低耦合的、自包含的、基于可编程的应用程序)方式对外提供服务,调用方可以采用不同语言与平台进行调用,这样就彻底解决了客户端与服务端的耦合,并且很好地形成了对服务的重用。
[0022]所述任务分配模块I用于在接收到用于表征出票任务的外部请求时,根据任务类型将不同的出票任务分别置入指定的对应的消息队列中,对于不同的应用,可以同时部署多个消息队列,不同的消息队列会接收不同的消息,例如Register、Pay、Issue、Ticket、Query等消息队列,当某个消息队列出现异常时,不会对其他消息队列中的出票任务处理产生影响。
[0023]所述消息队列采用先进先出的数据结构,因此能保证数据按照特定的顺序来处理。为了保持数据持久化,所述消息队列会被存储到所述数据库6中,这样一旦系统出现故障,消息队列中未处理的出票任务也不会丢失,等到系统故障解决后,可以从第一条未处理的出票任务开始继续执行。
[0024]所述任务取出模块2会从所述消息队列中取出对应的出票任务,因为消息队列提供了 “只取出一次”的保证,因此无论有多少进程从队列中取数据,每一个出票任务只会被处理一次,所述任务取出模块2同时提供了数据缓存、延迟取出、批量取出以及轻量级路由等功能,保证了数据处理的多样性。
[0025]每个任务处理模块3均包括一组可自动扩展的处理线程,每个处理线程中均包含出票任务的处理逻辑,所述任务处理模块3用于通过执行处理线程来处理出票任务。所述任务处理模块3还在所述消息队列的任务量超过一第一阈值时自动增加处理线程,并在所述消息队列的任务量低于一第二阈值时自动减少处理线程,其中所述第一阈值和所述第二阈值均可以根据需要进行设置,且所述第一阈值大于或等于所述第二阈值,从而实现对系统资源的合理利用。
[0026]所述管理模块4则用于执行数据监控及报警、任务处理模块的配置和管理以及连接池的管理等操作,通过对连接池的控制,可以缓解对外部资源的大量冲击和浪费。其中,所述管理模块4与所述多个任务处理模块3可集成在同一个主处理程序中。
[0027]所述日志模块5则用于记录所述自动出票系统的所有运行日志,并且提供便捷的配置来实现多种不同形式的日志存储方式,所述运行日志的存储格式具体包括文本日志、数据库日志、TraceLogN CentralLog 等。
[0028]所述消息队列管理模块7用于对所述消息队列进行监控和管理,包括日志查询、计时计数器查询、消息队列积压情况的监控和报警以及配置信息的查询和修改等。
[0029]本发明的自动出票系统是分布式系统,通过将不同任务类型的出票业务操作与数据处理以不同的服务形式部署并运行在不同的服务器上,从而能够有效地缓解单个服务器的压力,进而可以有效地分配与利用服务器资源。
[0030]当自动出票系统需要处理的都是执行时间较长的出票任务时,本发明中引入消息队列使之成为出票任务处理的缓冲区,而所述消息队列采用异步通信机制,使得发送方和接收方都不用等待对方返回成功消息,就可以继续执行下面的处理,从而提高了数据处理的能力。
[0031]在任务量和数据量较大的情况下,本发明的自动出票系统可以自动增加处理线程来保证出票任务处理的及时性,也可以结合消息队列与后台配置,有效降低数据库处理数据的负荷,避免高峰期对内部系统及外部资源造成冲击。
[0032]虽然以上描述了本发明的【具体实施方式】,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
【主权项】
1.一种基于任务分配的自动出票系统,其特征在于,包括: 任务分配模块,用于在接收到表征出票任务的外部请求时,根据任务类型将不同的出票任务分别置入对应的消息队列中,所述消息队列采用先进先出的数据结构; 任务取出模块,用于从所述消息队列中取出出票任务; 多个任务处理模块,每个任务处理模块均包括一组可自动扩展的处理线程,每个处理线程中均包含出票任务的处理逻辑,所述任务处理模块用于通过执行处理线程来处理出票任务。2.如权利要求1所述的自动出票系统,其特征在于,所述自动出票系统还包括管理模块,用于执行数据监控及报警、任务处理模块的配置和管理及连接池的管理。3.如权利要求1所述的自动出票系统,其特征在于,所述自动出票系统还包括日志模块,用于记录所述自动出票系统的所有运行日志。4.如权利要求3所述的自动出票系统,其特征在于,所述运行日志的存储格式包括文本日志、数据库日志、TraceLog及CentralLog。5.如权利要求1所述的自动出票系统,其特征在于,所述消息队列采用异步通信机制。6.如权利要求1所述的自动出票系统,其特征在于,所述自动出票系统还包括数据库,用于存储所述消息队列。7.如权利要求1所述的自动出票系统,其特征在于,所述自动出票系统还包括消息队列管理模块,用于对所述消息队列进行监控和管理,包括日志查询、计时计数器查询、消息队列积压情况的监控和报警以及配置信息的查询和修改。8.如权利要求1所述的自动出票系统,其特征在于,所述任务处理模块还用于在所述消息队列的任务量超过一第一阈值时自动增加处理线程,并在任务量低于一第二阈值时自动减少处理线程。9.如权利要求1所述的自动出票系统,其特征在于,所述自动出票系统为分布式系统,采用不同的服务器执行不同任务类型的出票任务。
【专利摘要】本发明公开了一种基于任务分配的自动出票系统,包括:任务分配模块,用于在接收到表征出票任务的外部请求时,根据任务类型将不同的出票任务分别置入对应的消息队列中,消息队列采用先进先出的数据结构;任务取出模块,用于从消息队列中取出出票任务;多个任务处理模块,每个任务处理模块均包括一组可自动扩展的处理线程,每个处理线程中均包含出票任务的处理逻辑,任务处理模块用于通过执行处理线程来处理出票任务。本发明的自动出票系统是一种高性能、高可用、可扩展的分布式自动出票系统,具有出票任务顺序存储及分配、大吞吐量、日志传输、支持异常报警等特性,同时具有很好的平台无关性,并能够很好地支持并发与异步调用。
【IPC分类】G06F9/48
【公开号】CN105183549
【申请号】CN201510536338
【发明人】潘卫华, 苏杰
【申请人】携程计算机技术(上海)有限公司
【公开日】2015年12月23日
【申请日】2015年8月27日