发明内容
本发明的目的是提供一种云计算平台的调度***及调度方法,以解决上述问题中的至少一个。
根据本发明的一个方面,提供了基于云计算平台的调度***,包括两个以上用网络连接的区域分中心,区域分中心包括工人模块、资源中心、和至少一个调度模块,其中,
工人模块,包括至少一个工人和/或工人团,工人和/或工人团向资源中心发出注册信息和心跳包,工人和/或工人团接收调度模块发送的任务数据。
资源中心,登记工人和/或工人团的注册信息;接收调度人员请求数据,根据调度人员请求数据生成至少一个任务数据,并将生成的任务数据发送给调度模块;接收调度模块的调用请求,将调度模块选取的工人和/或工人团安排给调度模块。
调度模块,接收资源中心发送的任务数据,根据接收的任务数据向资源中心获取工人列表,在工人列表中选取工人和/或工人团,并向资源中心发送调用请求,请求调用选取的工人和/或工人团,并将任务数据发送给资源中心选取的工人和/或工人团。
在一些实施方式中,工人和/或工人团在执行任务数据时,资源中心统计并记录工人和/或工人团在执行任务数据时的资源占用程度,并根据资源占用程度确定资源评估和/或调配工作。
在一些实施方式中,资源中心根据资源占用程度和任务数据执行效率将注册的工人和/或工人团分为三个等级。
在一些实施方式中,调度模块在将任务数据发送给资源中心安排的工人和/或工人团后,调度模块查看资源中心里安排的工人和/或工人团是否退出,如果工人和/或工人团退出,调度模块即在工人列表中重新选取工人和/或工人团向资源中心发送调用请求。
在一些实施方式中,资源中心还包括用于制定消息格式的传输协议的资源管理器,传输协议采用soap协议,消息格式包括:消息发送者、消息接收者、任务名称、是否经过流程、流程名称、发送时间和任务数据。
在一些实施方式中,多个等级包括CPU占用率≦20%、内存占用率≦25%且出错率≦2%的优等;20%<CPU占用率≦45%、25%<内存占用率≦65%且2%<出错率≦4%的中等;以及CPU占用率≧65%、内存占用率≧65%且出错率≧4%的差等。
根据本发明的另一个方面,本发明还提供了一种基于云计算平台的调度方法,包括以下步骤:
工人和/或工人团向资源中心注册并定时发送心跳给资源中心,和资源中心保持联系,以便注册中心检测到工人的状态信息。资源中心登记工人和/或工人团的注册信息。
资源中心接收调度人员请求数据,根据调度人员请求数据生成任务并将该任务发送给调度模块。
调度模块接收资源中心发送的任务,根据任务向资源中心获取符合要求的工人列表,在工人列表中选取技能符合并且评级为优的工人,选择原则按优、中、差三个等级的排列顺序选择工人。并向资源中心发送调用请求,请求调用该选取的工人。
资源中心接收调度模块的调用请求,将调度模块选取的工人安排给调度模块,根据接收到的工人模块发送的心跳包来判断,若调度模块选取的工人已经退出,则根据依据工人等级顺序选取其他在线工人并安排给调度模块。
调度模块将任务发送给资源中心安排的工人,之后,到资源中心里查看该安排的工人是否退出,如果退出就会在工人列表中重新选取工人向资源中心发送调用请求。首先会在工人列表中找到具有与已退出的工人的相同技能的工人,并请求资源中心发送调用该工人的请求和工作任务。资源中心接收到调度模块请求后,调用该工人执行该任务,通过这种方式保证任务执行不会因工人退出而中断。
工人和/或工人团接收调度模块发送的任务,并执行该任务。
采用上述方法,提供给不同地域的终端用户得到的高响应云计算服务,提供给用户优质资源完成自己的请求任务并缩短请求时间,合理地利用本地或远程的云IT资源、节约了使用成本。
具体实施方式
下面结合附图对本发明作进一步详细地说明。
根据本发明的一个方面,提供了基于云计算平台的调度***,如图1所示,包括两个以上用网络连接的区域分中心100,区域分中心100包括工人模块400、资源中心200、和至少一个调度模块300。不同地域的用户可以请求离自己最近的区域分中心,也可以通过网络请求远程的区域分中心。一个区域分中心的三个模块可以部署在一台服务器上,也可以资源中心模块和调度模块部署在一台服务器上,工人模块部署在另一台服务器,不同技能的工人可以部署在一台服务器。模块开发语言选用java,但不局限于此,采用http请求方式。
工人模块400,包括工人403市场和消息接收与发送接口404模块,其中工人403市场至少一个工人403和/或工人团402,工人403和/或工人团402向资源中心200发出注册信息和心跳包,工人403和/或工人团402接收调度模块300发送的任务数据。
资源中心200,登记工人403和/或工人团402的注册信息,接收调度人员请求数据,根据调度人员请求数据生成至少一个任务数据,并将生成的任务数据发送给调度模块300,接收调度模块300的调用请求,将调度模块300选取的工人403和/或工人团402安排给调度模块300。
调度模块300,接收资源中心200发送的任务数据,根据接收的任务数据向资源中心200获取工人列表,工人列表中包括工人403名称、技能名称、工人403状态、等级信息。在工人列表中选取工人403和/或工人团402,并向资源中心200发送调用请求,请求调用选取的工人403和/或工人团402,并将任务数据发送给资源中心200选取的工人403和/或工人团402。
工人403和/或工人团402在执行任务时,资源中心200统计并记录工人403和/或工人团402在执行任务时的硬件资源占用程度及执行任务时的出错率,以此两个指标对工人403和/或工人团402进行评级,分为:优、中、差三个等级,根据硬件资源占用程度低且执行任务时的出错率低两个参数进行评级,资源占用程度包括CPU占用率和内存占用率,当执行任务过程中硬件资源:CPU占用率≦20%、内存占用率≦25%且该工人出错率占它总任务数的出错率≦2%,该工人评级为优等。如果20%<CPU占用率≦45%、内25<内存占用率≦65%且2%<出错率≦4%,该工人评级为中等。如果CPU占用率≧65%、内存占用率≧65%且出错率≧4%,该工人评级为差等。调度模块300根据评级进行资源评估和/或调配工作,调度模块300优先选择评级为优的工人403和/或工人团402来执行任务,以最快的服务器响应速度处理用户请求的任务数据。
调度模块300在将任务数据发送给资源中心200安排的工人403和/或工人团402之后,调度模块300到资源中心200里查看安排的工人403和/或工人团402是否退出。根据工人发送心跳包,资源中心会有个配置文件配置工人发送心跳包的时间间隔,如果超过3次在这个时间间隔内没有接收到工人的心跳就判断该工人已退出,如果工人403和/或工人团402退出,调度模块300就在工人列表中重新选取工人403和/或工人团402向资源中心200发送调用请求,资源中心200则重新选取工人403和/或工人团402安排给调度模块300。从而避免流程执行过程中因其中一个节点停止工作而导致流程进行不下去的情况,为此能提供给客户更快处理响应速度。
上述的资源中心200还包括以下功能模块:
流程公告板,用于记录流程信息,流程信息包括流程名、工作状态、流程最大被同时调度的次数、当前流程被同时调度的次数。
调度市场301,用于登记并保存所有流程公告板的信息,在消息接收与发送接口404接收用户发送的请求消息后,将消息传给资源管理器201,资源管理器201根据请求消息从调度市场301查询并选择调度。
工人403市场,用于统一记录工人403和/或工人团402的注册信息和评级信息,工人403市场将工人403和/或工人团402分为三个等级,即:优等、中等和差等,对于资源占用程度高及任务执行效率差的工人403和/或工人团402评估等级为中、差。资源中心200优先调配等级为优的工人403和/工人团402来执行任务数据。
工人403技能单元,记录工人403和/或工人团402的技能名。
资源管理器201,是本发明的资源中心200的子模块,也是整个调度***的流程调度引擎。调度模块300和工人模块400会定时发送心跳包给资源管理器201来表示两者正常工作并可以接收请求任务,其中发送心跳包的时间用户通过配置文件自定义。资源管理器201维护调度市场301和工人403市场,并负责把退出的或没能在用户自定义的时间内接收到心跳的调度或工人403从调度市场301和工人403市场的记录中清除;资源管理器201制定消息格式协议,该协议采用soap协议:该协议是一种基于简单对象访问协议,是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。消息格式至少包括:消息发送者、消息接收者、任务名称、是否经过流程、流程名称、发送时间和任务数据。用户根据协议发送请求,资源管理器201判断调度人员请求数据消息类型。如果是调度人员请求数据需要经过流程操作的,比如调度人员请求数据数据处理要经过名称为数据处理的流程:数据采集-数据过滤-数据统计-数据上传。资源管理器201会从调度市场301中找到并启用对应已配置好此流程环节的调度。当流程启动,调度模块从资源中心获取工人列表,执行第一步骤数据采集,第二步骤数据过滤,调度模块会从工人列表中选取具有数据采集技能且评级最高的工人并将调度任务发送资源中心,资源中心分配给该工人执行数据采集的任务,调度模块会选择具有数据过滤的工人,第三步骤数据统计,调度模块统计工人的工作情况,CPU占用率、内存占用率以及出错率,第四步骤数据上传,上传第三步中的统计数据到资源中心中进行保存。如果用户的请求只需一种工人403就可以完成,比如用户请只需要数据过滤,资源管理器201则直接从工人403市场查找对应的具有数据过滤功能的工人403完成工作,用以节约资源;
消息接收和发送接口404:负责发送命令及接收信息,引用第三方开源的消息发送工具,本发明采用Akka,但不仅限于此,Akka是一个用Scala编写的库,用于简化编写容错的、高可伸缩性的Java和Scala的Actor模型应用,这个工具提供了线程无阻塞、异步的接收和发送消息接口,从而避免消息并发时导致的线路阻塞的性能瓶颈。
上述调度模块300还包括:
流程配置器302:用于配置流程信息、提供创建流程、子流程的方法以及定时器。定时器是用于实现流程自动启动,如果配置了定时器,在配置的时间点会自动启动这个流程,配置流程的方法可以预先配置好也可以临时手动配置流程。
流程调度器303:用于接收资源中心200发送的请求信息和工人403任务执行完后返回的信息,并且负责装载正在运行任务中的环节对象:其中环节对应流程,对象对应在此流程正在执行任务的工人403。
第二消息接收和发送接口305:负责发送命令及接收信息,提供线程无阻塞、异步的接收和发送消息接口,接收与发送动作可以同时进行,从而避免消息并发时导致的性能瓶颈。
流程调度表304:用于记录正在运行任务中的环节对象。
调度模块300预留一个实时控制/监控的网络接口,用于界面控制人工干预、C/S(客户机和服务器结构)方式的实时监控台,如果下层级调度引擎无法工作,它的上层级调度引擎负责从调度市场301里取的一个合适的调度替代;并且通过上层级给予的信息和数据库输出的记录,重新初始化;当处理机发现调度无连接时,会主动去资源中心200申请负责的调度,最后处理机连接上调度的时候,会核对处于临界状态的任务,如果顶级调度引擎由于比较重要,所以需要实时有备份做同步;当顶级调度无法工作,资源池会自动选举出新的顶级调度,并告诉下层级或处理机新顶级调度的连接。从而避免当前调度失效后,后面的流程环节不能执行的情况。
本发明提供了基于云计算平台的调度***,可以让不同地域的终端用户得到的云计算服务在最短的时间内完成自己的请求,合理地利用云计算资源,节约了使用成本。同时,保证了云计算资源的负载均衡,提高资源的利用率。实现了地理位置无关性,能够远距离为用户提供完全的透明服务。除了能避免单台机的资源中心200或工人模块400等的单点失效,解决网络拥塞问题,提高服务器响应速度,服务就近提供,达到更好的访问质量。
根据本发明的另一个方面,本发明还提供了基于云计算平台的调度方法,如图2所示本发明调度流程,包括以下步骤:
工人403和/或工人团402向资源中心200注册并定时发送心跳给资源中心200,资源中心200登记工人403和/或工人团402的注册信息(步骤501)。
资源中心200接收调度人员请求数据,根据调度人员请求数据生成任务并将该任务发送给调度模块300(步骤502)。
调度模块300接收资源中心200发送的任务,根据任务向资源中心200获取符合要求的工人列表,在工人列表中选取工人403,向资源中心200发送调用请求,请求调用该选取的工人403(步骤504)。
资源中心200接收调度模块300的调用请求,将调度模块300选取的工人403安排给调度模块300,若调度模块300选取的工人403已经退出,则根据依据工人403等级选取工人403安排给调度模块300。
调度模块300将任务发送给资源中心200安排的工人403,之后,到资源中心200里查看该安排的工人403是否退出,如果退出就会在工人列表中重新选取工人403向资源中心200发送调用请求(步骤503)。
工人403和/或工人团402接收调度模块300发送的任务,并执行该任务(步骤505)。
采用上述调度方法,可以让不同地域的终端用户得到的云计算服务在最短的时间内完成自己的请求,合理地利用本地或远程的云IT资源、节约了使用成本。同时,保证了云计算资源的负载均衡,实现了地理位置的无关性,提高IT资源的利用率。
以上所述仅是本发明的一种实施方式。本发明的调度方式不限于手动调度流程的方式和自动化调度流程的种方式。对于本领域的普通技术人员来说,在不脱离本发明创造构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。