首页> 中国专利> 决策问题的云化解决方法、系统、服务器及存储介质

决策问题的云化解决方法、系统、服务器及存储介质

摘要

本发明实施例公开了一种决策问题的云化解决方法、系统、服务器及存储介质。该方法包括:获取用户上传的问题数据和配置信息;根据问题数据和配置信息生成待运行的任务模板;根据配置信息基于内置的拆分规则和任务模板生成多个子任务,以多个子任务构成任务实例;获取用户发送的任务运行命令,并根据任务运行命令对任务实例中的子任务进行容器化打包和微服务封装以微服务分布式运行,得到决策结果;向用户返回决策结果。本发明实施例对任务实例进行分布式拆分和运行,对于不同的问题或不同规模的同类问题实现了性能和代价之间的平衡,并且除开发者之外其他人员也能方便使用,无需针对决策问题单独设计演化算法,提高了决策问题的规划效率。

著录项

  • 公开/公告号CN113110930A

    专利类型发明专利

  • 公开/公告日2021-07-13

    原文格式PDF

  • 申请/专利权人 深圳市凌雀智能科技有限公司;

    申请/专利号CN202110521544.2

  • 发明设计人 李皈颖;杨鹏;唐珂;

    申请日2021-05-13

  • 分类号G06F9/48(20060101);G06F9/50(20060101);G06F9/54(20060101);G06N3/00(20060101);

  • 代理机构11332 北京品源专利代理有限公司;

  • 代理人潘登

  • 地址 518000 广东省深圳市龙华区民治街道民乐社区星河WORLD二期E栋2201D

  • 入库时间 2023-06-19 11:49:09

说明书

技术领域

本发明涉及计算机技术领域,尤其涉及一种决策问题的云化解决方法、系统、服务器及存储介质。

背景技术

随着社会的飞速发展,各种各样的决策问题将不断涌现,现有的算法框架需要设计者对算法有深入的理解并熟练掌握各种框架的特性,还要对领域知识有充分的了解;针对某一问题设计一种专用程序并在特定的云平台上运行的传统方法将耗费大量的人力和物力,而且由于硬件的专用性使得部分硬件常常处于闲置状态,造成计算资源的浪费。

现有的决策问题的云化解决方案的主要不足有:无法支持大规模分布式计算,并行化通常限于单机;没有对决策问题提供良好的支持和优化;问题、算法覆盖不足,不支持插件式扩展;界面不友好,开发者以外的用户难以使用。这些不足也导致这些框架难以为实际问题提供实用的计算服务。

发明内容

有鉴于此,本发明提供了一种决策问题的云化解决方法、系统、服务器及存储介质,无需针对决策问题单独设计演化算法,提高了决策问题的规划效率。

第一方面,本发明提供了一种决策问题的云化解决方法,该方法包括:

通过交互模块获取用户上传的问题数据和配置信息;

通过任务管理模块根据所述问题数据和配置信息生成待运行的任务模板;

通过任务管理模块根据所述配置信息基于内置的拆分规则和任务模板生成多个子任务,以所述多个子任务构成待运行的任务实例;

通过交互模块获取用户发送的任务运行命令,并根据所述任务运行命令通过资源管理模块对所述任务实例中的子任务进行容器化打包和微服务封装并以微服务分布式运行,以得到决策结果;

通过交互模块向用户返回所述决策结果。

第二方面,本发明提供了一种决策问题的云化解决系统,包括由运行在不同节点上的微服务实现的交互模块、任务管理模块和资源管理模块,其中:

所述交互模块,用于获取用户上传的问题数据和配置信息;

所述任务管理模块,用于根据所述问题数据和配置信息生成待运行的任务模板;

所述任务管理模块,还用于根据所述配置信息基于内置的拆分规则和任务模板生成多个子任务,以所述多个子任务构成待运行的任务实例;

所述交互模块还用于获取用户发送的任务运行命令;

所述资源管理模块还用于根据所述任务运行命令对所述任务实例中的子任务进行容器化打包和微服务封装并以微服务分布式运行,以得到决策结果;

所述交互模块还用于向用户返回所述决策结果。

第三方面,本发明提供了一种服务器,包括:

一个或多个处理器;

存储系统,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器能够实现如本发明任一实施例所提供的决策问题的云化解决方法。

第四方面,本发明提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被执行时实现本发明任一实施例所提供的决策问题的云化解决方法。

本发明提供的决策问题的云化解决方法,先获取用户上传的问题数据和配置信息,根据问题数据和配置信息生成待运行的任务模板,再基于内置的拆分规则将任务模板拆分成多个子任务,以多个子任务构成待运行的任务实例,在接收到用户发出的任务运行命令后,调用云平台的分布式计算节点对任务实例中的子任务进行容器化打包和微服务封装并以微服务分布式运行以得到决策结果,最终将决策结果返回给用户,该方法基于云平台进行决策问题的云化解决,可以进行分布式部署,对于不同的问题或不同规模的同类问题柔性选择资源数量以实现性能和代价之间的平衡,提供了良好的用户交互方式,除开发者之外其他人员也能方便使用,无需针对决策问题单独设计演化算法,提高了决策问题的规划效率。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本申请的部分实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1是本发明实施例一提供的一种决策问题的云化解决方法的流程图;

图2是本发明实施例二提供的一种决策问题的云化解决方法的子流程图;

图3是本发明实施例二提供的一种决策问题的云化解决方法的子流程图;

图4是本发明实施例二提供的一种决策问题的云化解决方法的子流程图;

图5是本发明实施例三提供的一种决策问题的云化解决系统的结构示意图;

图6是本发明实施例四提供的一种服务器的结构示意图。

具体实施方式

下面结合本申请实施例中的附图,对本申请实施中的技术方案进行清楚、完整的描述。可以理解的是,此处所描述的具体实施例仅仅是本申请一部分实施例,而不是全部的实施例,仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。

此外,术语“第一”、“第二”等可在本文中用于描述各种方向、动作、步骤或元件等,但这些方向、动作、步骤或元件不受这些术语限制。这些术语仅用于将第一个方向、动作、步骤或元件与另一个方向、动作、步骤或元件区分。举例来说,在不脱离本发明的范围的情况下,可以将第一区域称为第二区域,且类似地,可将第二区域称为第一区域。第一区域和第二区域两者都是区域,但其不是同一区域。术语“第一”、“第二”等而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。需要说明的是,当一个部被称为“固定于”另一个部,它可以直接在另一个部上也可以存在居中的部。当一个部被认为是“连接”到另一个部,它可以是直接连接到另一个部或者可能同时存在居中部。本文所使用的术语“垂直的”、“水平的”、“左”、“右”以及类似的表述,只是为了说明的目的,并不表示是唯一的实施方式。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时处理可以被终止,但是还可以具有未包括在附图中的附加步骤。处理可以对应于方法、函数、规程、子例程、子程序等等。

实施例一

本实施例提供了一种决策问题的云化解决方法,用于通过云平台服务对各种决策问题进行规划,避免用户需要单独针对决策问题设计规划防方案,减少了开发时间,提高了效率,该方法基于能够执行决策问题的任务实例的云平台实现。本实施例中的云平台采用分布式架构,包括云平台底层的分布式集群(包括多个分布式节点)、资源管理模块、任务管理模块和交互模块,所述交互模块、任务管理模块和资源管理模块由运行在不同分布式节点上的微服务实现。

基于上述云平台本实施例提供了一种基于云平台的的决策问题的云化解决方法,参见图1,该方法包括以下步骤:

S110、通过交互模块获取用户上传的问题数据和配置信息。

交互模块即对接用户的RESTful server,用于响应用户请求并返回相应的结果。问题数据包括决策问题的全部数据,例如已知参数、约束条件等,用于描述决策问题,配置信息包括问题数据在云平台中的位置、任务的类型以及任务需要使用的硬件资源数,用于描述决策问题需要调用的资源情况,具体可以包括任务计算过程中所需要的计算节点的数量以及每个计算节点使用的CPU数、GPU数和内存大小等。应当理解的是,此处所指的任务是云平台进行决策问题的任务实例。

具体的,本实施例中的云平台可以通过web等途径向用户提供交互界面,以通过交互界面建立用户与云平台的交流通道,从而获取用户上传的问题数据和配置信息。示例性的,交互界面中提供有数据集上传渠道,用户通过数据集上传渠道上传需要解决的问题数据,交互界面中还提供有配置表,用户填写完表并提交后,云平台即可确定用户时上传的配置信息。具体的,用户在上传问题数据后,可以获得问题数据在云平台上的唯一资源地址,用户在填写配置信息时,可以直接将唯一资源地址填入。

S120、通过任务管理模块根据所述问题数据和配置信息生成待运行的任务模板。

任务管理模块即Job controller,用于记录任务配置、管理任务队列、追踪任务状态。任务管理模块用于对交互模块接收的消息进行解析,当接收到用户上传的问题数据和配置信息后,会根据问题数据和配置信息以及可以调用的计算资源通过算法模型对任务进行规划,生成待运行的任务模板,其中计算资源由资源管理模块进行监听和分配。任务模板用于描述如何根据问题数据和配置信息调用云平台的资源完成决策问题的云化解决任务,具体的,任务模板将决策任务规划为由多个子任务完成(本步骤只确定子任务数量),而每个子任务实际上是由微服务完成的。

本实施例中当云平台获取到问题数据和配置信息之后,对问题数据和配置信息进行分析,根据问题数据和配置信息确定具体的决策任务,并确定决策任务对应的子任务数量,也即确定对应的任务模板。

S130、通过任务管理模块根据所述配置信息基于内置的拆分规则和任务模板生成多个子任务,以所述多个子任务构成待运行的任务实例。

子任务是根据任务模板拆分生成的,任务模板中只是一个描述决策任务输入、数据、和组成部分的一个文件,但是每个子任务的具体参数、配给的数据等信息并没有确定,即子任务具体如何运行还没有确定,步骤是130就是对每个子任务进行具体配置,设置每个子任务的参数、配给的数据、相互之间的关联关系和运行命令,配置好之后的所有子任务称构成了任务实例。

具体的,在根据任务模板进行子任务拆分时,需要针对不同的情况进行不同的拆分。为了提高针对不同问题的适应性,本实施例中设置了预设的算法库用于进行拆分得到子任务,预设的算法库中存储有至少一个算法模型,算法模型实际上是分布式演化算法框架,用于确定决策问题的云化解决时的整个演化算法的流程,通过向分布式演化算法框架中填入适合的成分就能组装成对应的分布式演化算法实例,也称为任务实例,而分布式演化算法实例就是一个决策问题的具体规划过程,任务实例中具体确定了每个子任务如何通过分布式的微服务运行。

在确定了任务模板后,云平台继续通过任务管理模块定义任务模板中每个子任务的参数、配给的数据、相互之间的关联关系和运行命令等,并对其进行分布式运行必须的封装等操作,得到可以直接运行的任务实例。

S140、通过交互模块获取用户发送的任务运行命令,并根据所述任务运行命令通过资源管理模块对所述任务实例中的子任务进行容器化打包和微服务封装并以微服务分布式运行,以得到决策结果。

任务运行命令用于确定执行任务实例,任务执行命令中可以包含任务标识(任务ID,任务ID可以在步骤S120完成后由云平台反馈给用户),以供云平台确定执行哪一个任务实例。资源管理模块即Resource Manager,用于监控分布式集群(由分布式计算节点组成,分布式计算节点简称为分布式节点),分布式计算节点是云平台的硬件资源,任务实例中的每个子任务如何使用硬件资源完成由具体的资源配置信息决定,资源配置信息用于确定在执行任务实例时所用的工作节点(即分布式计算节点)数量,以及每个节点使用的CPU和GPU、内存的数量等。具体的,本实施例中,资源管理模块在运行任务实例时,将任务实例通过容器化和微服务化拆分,并在不同分布式节点上实现基于容器的微服务调度,从而完成整个任务实例,得到决策结果,决策结果为决策问题的规划结果,示例性的对于路径决策问题,决策结果为确定的行经路线。在本实施例中,任务实例的实际运行是通过对子任务的运行实现的,子任务是以微服务的形式分布式运行完成的,因此在执行任务运行命令时,云平台根据任务运行命令找到对应的任务实例,并将其中的全部子任务进行容器化打包和微服务封装,再根据打包结果和封装结果调用分布式计算资源运行,实现任务实例的分布式运行,得到运行结果作为决策结果。

具体的,云平台具有多个分布式计算节点,作为硬件资源用于完成任务实例,当云平台根据问题数据和配置信息确定了任务实例后,会等待用户的命令,当接收到用户发送的任务运行命令后,会对任务实例进行容器化和微服务化(实际是对子任务进行容器化和微服务化),并调用相应的分布式计算节点完成计算,以确定决策结果。

S140、通过交互模块向用户返回所述决策结果。

当云平台完成任务实例得到决策结果后,会将决策结果发送给用户,相应的,如果没有任务实例执行出错需要向用户发送错误提示。

本实施例中,交互模块为用户的任务操作提供后台支持,提供的RESTful-API可供用户通过浏览器调用,以获取用户上传的问题数据和配置信息;任务管理模块为交互模块提供后台数据,用于根据问题数据和配置信息进行作业配置,确定对应的任务实例;资源管理模块用于对云平台所能使用的硬件资源进行管理和调度,该微服务由若干并行的进程构成,用于在需要执行任务实例时调用硬件资源完成任务实例,最后再由交互模块将服务结果提供给用户。

更具体的,在一些实施例中预设的算法库中提供有多种演化算法,也即提供了多种分布式演化算法框架,至少包括主从分布式演化计算框架、岛屿分布式演化算法框架和混合分布式演化算法框架三种常见的分布式演化算法框架中的一种或多种:

在主从分布式演化算法中,从节点仅负责对个体进行评估操作并返回个体的适应度值,而主节点则负责演化计算中其他部分,包括选择、杂交、变异、分发个体并收集个体的适应度等。

主从分布式演化计算框架实现比较简单,主节点在任务运行时启动,同时开启端口监听服务,用于接受来自用户的任务控制信息和来自从节点的注册信息。主节点在内存中维护了记录从节点通信端口和工作负载状态的列表,在收到从节点的注册信息时添加表项,若从节点失去连接则从表中删除对应表项。在任务运行到计算种群中个体适应度值时,主节点将从列表中选择空闲节点发送个体信息并等待返回结果,通过设计该选择方式可以在不同性能从节点之间的负载均衡。

主从分布式演化计算框架的种群操作全部在同一节点上进行,因此非常适合于需要依据种群个体之间的相互关系进行后代筛选的算法,比如负相关搜索算法。

在岛屿分布式演化算法框架中,由于演化计算的随机性高,而且结果的质量和运算效率比较依赖初始解的位置,因此,运行相同的演化算法若干次从中选取最好的结果也是提高演化计算解质量的一种常见方法。基于这一假设,从解空间中生成若干随机种群,让这些种群在不同的工作节点上进行独立的演化,并返回各自的最优解,选择其中最佳者作为整个演化计算的最后结果返回。

岛屿分布式演化算法框架的通用性很强,适合用于实现各种演化算法,并且可以通过调整该框架的实现细节形成其他算法框架,这些变体框架可能对特定问题效率更高。比如,在每隔若干个纪元(epoch)就在所有计算节点之间按照一定的策略进行个体交换,使得种群的演化不再是孤立的。这种有交流的岛屿变体模型相比原来的孤岛模型来说,其收敛速度更快,因此也可能存在过早收敛的现象,可以针对实际问题和需求自由选择。

混合分布式演化算法框架综合了主从式和岛屿式演化算法框架的特点,构成两层分布式框架。

岛屿-主从分布式演化算法框架:在第一层构成于岛屿框架相同,但是在计算个体适应度值时不再由本节点完成,而是嵌套了一层主从结构框架,将个体发送给从节点进行计算并收集适应度值,这种框架进一步加速了岛屿分布式演化框架的计算。

主从-岛屿分布式演化算法框架:在该框架下,主节点分发的不是个体,而是子种群。各个从节点将基于该子种群进行独立演化并返回最优解,主节点手机这些最优解并通过杂交、变异等操作生成新的子种群集合,进入下一个循环。这种框架加快了算法收敛的速度。

当然上述三种分布式演化算法框架仅为示例,实际还有很多其他的分布式演化算法框架,以及它们互相节后后产生的新混合分布式演化算法框架,这些都可以由开发者编写后通过接口加入到云平台的算法库中。

算法框架的组件主要包括以下几个类别:

初始化组件:该组件可以从问题实例解空间中随机获得若干个解组成初始种群,不同的演化算法框架需要的初始化组件可能不一样。例如,对于主从、岛屿等分布式框架,只需要初始化一个种群即可,而主从-岛屿模型则需要初始化生成一个由若干子种群组成的大种群。

父代选择组件:从种群中按照一定策略选择两个或多个父代个体,并返回这些个体。

杂交组件:该组件根据不同需要接受两个或多个个体,生成一个或多个新个体,并返回这些新个体。

变异组件:变异组件接受一个个体,根据一定的概率对个体的一些属性进行随机改变,根据需要生成一个或多个新个体,并返回这些新个体。

选择组件:该组件接受一个种群,并根据所需策略选择若干个个体形成一个新种群并返回该种群。

以上组件根据不同的需求和不同的策略有不同的变体,算法库中将保存这些不同组件,用户可以针对问题实例通过选定算法框架及其组件形成对应的算法实例。

为了便于理解,在一个具体示例中给出了云平台的具体架构,该云平台底层为若干异构的物理机构成的节点,基于Hadoop构成分布式系统的基础架构,并利用了Hadoop实现了分布式文件系统(Hadoop Distributed File System,HDFS),该Hadoop集群由YARN进行管理。在Hadoop底层架构上使用了Kubernetes(简称“K8s”)对该基础架构上的容器化应用进行管理,K8s作为一个强大的开源容器编排引擎为云平台提供了应用部署、规划、更新和维护的机制。本实施例中的云平台则架构在该K8s层上,向上层提供用户、开发者界面,向下通过K8s的接口启动容器并运行服务和任务,并对任务运行状态、云平台物理资源等进行监控。

本实施例中的云平台包括存储层、容器层和用户层:

1.存储层

存储层的功能主要由开源的Hadoop架构提供,Hadoop最底层为分布式文件系统HDFS,数据在HDFS上被分成大小相同的若干个数据块,并由HDFS决定数据块存储在集群的哪些节点上,节点内部通过标准的TCP/IP协议进行通信交换数据。该HDFS对外表现为一个传统的文件系统,用户可以在此文件系统中进行创建、删除、移动或重命名等操作而不需要理解数据被分布式存储的具体实现,也无需知道数据被存放在那个位置。一个数据块可能在多个节点上具有备份,一方面可以加速数据访问的速度(并行访问),另一方面可以提高数据的可靠性(防止某一节点出错后数据损坏)。

HDFS提供的永久存储功能将保存用户上传的数据集和任务配置,此后用户可以随时调取数据和任务配置运行任务。而在任务运行时的容器产生的数据和日志会被存储在内存中,如非必要将会在任务运行结束后被自动释放。

2.容器层

容器层承载了云平台的主要功能和服务,容器层由Kubernetes编排引擎管理,通过K8s我们可以按需创造多个容器,一个或多个容器组成微服务,多个微服务构成一个应用实例。K8s可以对开启的容器进行管理,对失败或出错的容器进行重启,并对上层提供负载均衡策略,依据工作节点任务负载分发新任务。

云平台通过容器层提供三大类型服务:

管理服务:主要包括作业管理微服务、执行管理微服务、资源管理微服务和临时容器管理。

监控服务:主要包括云平台性能监控、云平台日志处理和报警处理服务。

数据服务:主要包括对HDFS的存取服务。

3.用户层

对于容器层提供的各种服务,在用户层都将以Web应用的方式对用户提供交互界面。在该层次上,用户可以查看云平台的资源、任务的运行状态和运行日志、存取数据和配置运行任务等。开发者则可以在该层上对云平台进行扩展(扩充问题库、算法库等)。

本实施例提供了一种决策问题的云化解决方法,先获取用户上传的问题数据和配置信息,根据问题数据和配置信息生成待运行的任务模板,再基于内置的拆分规则将任务模板拆分成多个子任务,以多个子任务构成待运行的任务实例,在接收到用户发出的任务运行命令后,调用云平台的分布式计算节点对任务实例中的子任务进行容器化打包和微服务封装并以微服务分布式运行以得到决策结果,最终将决策结果返回给用户,该方法基于云平台进行决策问题的云化解决,可以进行分布式部署,对于不同的问题或不同规模的同类问题柔性选择资源数量以实现性能和代价之间的平衡,提供了良好的用户交互方式,除开发者之外其他人员也能方便使用,无需针对决策问题单独设计演化算法,提高了决策问题的规划效率。

实施例二

本实施例在实施例一的基础上对决策问题的云化解决方法中部分流程进行了进一步的解释和举例,具体包括:

步骤S110包括步骤S111-113(图未示):

S111、通过进程间通信机制获取用户发出的网络请求。

获取网络请求的具体方式包括采用Socket实现等。

S112、将所述网络请求放入外部消息队列。

S113、通过消息推送机制或者更新查看机制,获取外部消息队列中的消息更新,识别用户上传的问题数据和配置信息。

步骤S111-113实际是任务管理模块完成的作业监控微服务:当用户上传问题数据和配置信息说明用户需要新的任务实例。作业监控服务由若干独立运行的进程共同组成,在一些具体示例中通过进程间通信机制获取用户发出的任务请求采用端口监听进程,通过消息推送机制或者更新查看机制获取外部消息队列中的消息更新采用消息分发进程:

端口监听进程:在指定的端口监听网络请求,并把接收到的所有请求置于外部消息队列中,该外部消息队列可以由任务监控服务中的若干进程共享。

消息分发进程:轮询外部消息队列,如果有消息则把消息进行拆包查看并根据消息中的类型字段将该消息分发给对应的工作进程处理,也即识别用户上传的问题数据和配置信息。

更具体的,在一些实施例中,步骤S120如图2所示包括步骤S121-124:

S121、解析所述问题数据,确定所述问题数据对应的决策任务。

S122、根据所述决策任务的决策任务类别,确定需要设置的决策任务参数变量类别与类型。

S123、解析用户上传的配置信息,结合所述决策任务参数变量类别与类型确定需要设置的决策任务参数变量取值。

S124、依照所述决策任务和所述决策任务参数变量取值,生成所述任务模板。

步骤S121-124为根据问题数据和配置信息确定任务模板的过程,任务模板主要用于确定需要求解的决策问题,以及对决策问题对应的决策任务拆分相关的变量,具体的,生成的任务模板中将问题数据抽象成决策任务,并配置了将决策任务拆分的子任务数量,在这步已经将子任务当做微服务以计算子任务的合适数量。

更具体的,在一些实施例中,步骤S130如图3所示包括步骤S131-133:

S131、解析分布式存储中的任务模板得到任务信息,所述任务信息用于描述决策任务,基于预设的算法库根据所述模板信息对所述决策任务进行微服务化拆分生成子任务以及对应的微服务描述。

S132、对所述子任务进行容器化封装,生成容器镜像文件。

S133、将所述微服务描述与对应的容器镜像文件存储到容器编排工具中,构成待运行的任务实例。

步骤S131-133是生成任务实例的过程,步骤S121-124得到的任务模板中只是确定了需要解决的决策任务,但是决策任务具体如何在云平台上通过微服务进行分布式运行仍未确定,因此步骤S131-133根据配置信息以及与平台当前可调用的计算资源对决策任务如何运行进行规划。具体就是先将任务模板中决策任务的具体任务信息提取出来,包括决策任务的各种数据以及需要拆分的子任务数量等,在根据任务信息和内置的拆分规则对决策任务进行具体拆分,设置每个子任务的参数、配给的数据、相互之间的关联关系和运行命令,为每个子任务生成了具体的微服务描述,再根据微服务描述,为每个微服务(对应子任务)打包容器镜像文件,而微服务描述和容器镜像文件一起构成任务实例,这两项是任务实际运行的“参数”和“可执行文件”,他们决定了决策任务通过云平台如何完成。

更具体的,任务实例中确定了需要启动的容器数量、每个容器占用的硬件资源以及容器的运行脚本,任务实例生成后,会存储到作业配置表中并同步到分布式存储中,以等待任务运行命令唤醒。

任务管理模块提供的作业监控微服务中,除了端口监听进程和消息分发进程外,还包括用于实现步骤S121-124以及步骤S131-133的作业配置分析进程和任务监控进程:

作业配置分析进程在在自身内存中维护了作业配置表,并且和数据库中对应的表进行同步,接收到的消息是用户提交的问题数据和配置信息,作业配置分析器对其进行解析,问题数据用于描述决策问题,以确定决策任务,配置信息用于描述用户确定的计算需求,根据解析得到的内容生成一份任务配置并将任务配置存储到作业配置表中并同步到HDFS上的数据库中,处理完成后将获得的任务配置ID返回消息分发进程,并由消息分发进程回复至指定地址。具体的,作业配置分析进程在接收到问题数据后,根据问题数据确定决策任务,并根据配置信息以及资源管理模块反馈的计算资源对决策任务进行容器化和微服务化,从而得到需要启动的容器数量、每个容器占用的硬件资源以及每个容器的具体任务等信息,也即任务配置。

容器化和微服务化是基于云原生的架构思想,用于将一个决策问题对应的决策任务通过统一的框架进行抽取、封装再拆分成可以方便分布式节点运行的任务实例,任务配置就是用于描述如何通过基于容器微服务调度解决决策问题。当然,在对决策任务进行容器化和微服务化时,需要使用算法库中的算法框架,将具体的配置信息和计算资源等信息填入对应的框架即可完成。

任务监控进程在自身内存中维护了两个列表:所有任务列表和正在运行任务列表。所有任务列表会与数据库中的任务列表进行同步,任务状态将不会再发生变化的任务将会被记录在该表中(已中止、运行成功和运行失败的任务)。正在运行任务表则记录了状态还会发生变化的任务,任务监控进程在启动任务时会在正在运行任务表中生成一个表项,任务监控进程会定时对正在运行任务表中的表项进行轮询并用最新的任务状态更新对应表项。任务监控进程会接收用户提交的任务配置Id和控制信息,控制信息包括启动、停止和查询三种:

启动任务:任务监控进程将根据该任务配置Id到数据库中获取对应的任务配置,根据任务配置信息运行一个任务实例,并将这个任务实例的Id返回到指定地址,此外,还将该任务记录到正在运行的表项中。

停止任务:任务监控进程将停止和销毁所有与任务有关的容器,将任务所占有的硬件资源释放,然后将该表项从正在运行的任务表中移到所有任务表中,如果对应的任务不存在或状态不能变为停止则返回错误信息。

查询任务:对内存中的两个任务表进行查询,并返回对应的表项,如果不存在则返回错误信息。

更具体的,在一些实施例中,步骤S140如图4所示包括步骤S141-144:

S141、通过进程间通信机制获取用户发送的任务运行命令。

S142、根据所述任务运行命令调取所述任务实例对应的微服务描述与容器镜像文件。

步骤S141-142对应任务监控进程中启动任务的过程,任务运行命令中包括任务配置ID和启动控制信息,在接收到任务运行命令后,云平台会直接调取任务实例中的微服务描述与容器镜像文件。

S143、根据所述微服务描述查询可分配资源列表,并判断资源是否足够,如果资源足够则将该消息出队,进行处理后放入提交队列中等待被运行,并在可分配资源列表中减少对应资源的数量。

S144、通过消息推送机制或者更新查看机制,获取提交队列中的消息更新,依序根据所述任务配置通过微服务将对应的容器镜像文件调度到具体的分布式节点上运行,以确定决策结果。

步骤S143-144基于资源管理模块提供的资源监控和调度服务完成,用于运行任务实例,资源监控和调度服务用于对云平台所能使用的硬件资源进行管理和调度,在调取了任务实例中的微服务描述与容器镜像文件,基于微服务描述与容器镜像文件完整子任务对应的微服务,从而实现整个任务实例的运行。该微服务也由若干并行的进程构成,这些进程共享外部消息队列、可分配资源列表、容器列表、任务和容器映射表和提交队列五种数据结构:

外部消息队列:用于存储从其他微服务接收的消息等待处理。

可分配资源列表:包括云平台上所有可供调配的物理资源的数量信息。

容器列表:包括已经在云平台上运行的所有容器的列表,临时容器和长期容器的信息都在该表中记录,每个容器都有唯一的容器Id,可以查询表中的容器信息访问容器中任务运行的状态,临时容器在停止和销毁后对应表项将会从该表中移除。

任务和容器映射表:该表保存了任务Id和与其相关的所有容器的容器Id,在进行任务状态查询时可以通过该映射表访问对应容器并获得实时的任务运行状态。

提交队列:该队列中保存了所有用户提交的任务信息。其他进程可以将任务信息入队或者出队进行处理。

资源监控和调度服务具体提供的进程包括端口监听进程、消息处理进程、脚本提交生成进程和提交进程,其中:

端口监听进程,类似作业监控微服务中的端口监听进程,在指定的端口监听网络请求,并把收到的所有请求至于外部消息队列中。

消息处理进程将轮询外部消息队列,将消息进行拆包并分配给对应的进程。

脚本提交生成进程:当该进程收到任务配置消息,将查询可分配资源列表,如果资源足够则将该消息出队,进行处理后放入提交队列中等待被运行,并在可分配资源列表中减少对应资源的数量,若资源不能够满足任务需求则阻塞该消息,直至云平台释放出足够的资源再进行处理。

提交进程用于轮询提交队列,提交队列中的任务都是满足运行需求的任务,提交队列中的任务信息是详细的任务运行信息,包括任务中每一个容器的Id及其将运行于集群中的哪个节点、通信端口等,任务被提交后,任务的追踪任务将转交给监控器,提交进程则继续查询提交队列将其中的任务实际运行起来。

可选的,在一些实施例中,资源监控和调度服务化提供有监控进程,该进程将接收提交进程转交的任务信息,对任务状态进行追踪,并维护微服务中的容器列表、可分配资源列表和任务于容器映射列表,当任务被中止或完成时负责更新对应的数据结构,以保证这些资源在云平台各个微服务中的一致性。监控进程还接收来自查询消息,通过任务Id查询并返回对应任务的运行状态。此外,监控进程将定时轮询所有任务及其容器,当任务状态发生改变时,监控进程会更新对应的数据结构,如果任务状态发生异常变化(出错或被中止)则会触发警报,任务会被标记为异常并向日志警报记录微服务发送异常消息。基于监控进程,在一些实施例中,步骤S144之后,还包括步骤S145(图未示):

S145、对所述任务实例的任务状态进行追踪,以根据用户的查询请求返回对应的任务状态。

基于上述监控进程,在一些实施例中还可以实现根据任务执行情况进行报警的步骤S146(图未示):

S146、通过任务状态监听机制监听所有任务实例,当出现任务状态发生改变时,更新对应的数据结构,如果任务状态发生异常变化则触发警报,并将出现异常变化的任务实例标记为异常,所述异常变化包括出错或中止。

考虑到实际存在用户需要在任务实例执行的中途放弃任务实例的情况,需要提供一个停止任务的方式,即可以获取用户发送的停止任务消息,并且云平台响应该停止任务消息释放相应资源,结束对应的任务实例。具体的,资源监控和调度服务化提供有停止进程,通过定时轮询、状态变化提醒、状态更新推送等方式监听所有任务实例,当停止进程收到停止任务消息时,将根据消息中的任务Id从任务与容器映射表中索引到所有相关容器Id,并根据容器Id信息在容器列表中找到容器对应的IP和端口,通过对应的API接口停止容器。当所有容器都被中止并释放后向指定的地址发送任务结束成功信息。

为了便于统计管理报警信息,处理异常事故,在一些实施例中,云平台还提供有日志警报微服务,负责记录云平台的运行状况,包括配置传输记录、任务运行记录、任务中止记录、任务结束记录和任务异常记录。

日志报警微服务也包含一个端口监听进程收取消息,并对收到的消息进行处理。如果是查询请求,则返回对应任务相关的日志,如果是任务记录信息则对将消息写入记录中备查。

本实施例提供的决策问题的云化解决方法在实施例一的基础上,进一步给出了通过作业监控微服务配合资源监控和调度服务实现:监控用户上传的问题数据和配置信息、根据问题数据和配置信息基于预设的算法库确定对应的任务实例、监控用户发送的任务运行命令以及根据任务运行命令完成任务实例的具体实现方式,并且提供了任务监控、异常报警的实现方式,是的云平台的运行更稳定高效。

实施例三

图5为本发明实施例三提供的一种决策问题的云化解决系统的结构示意图,如图5所述,该系统包括由运行在不同分布式节点上的微服务实现的交互模块310、任务管理模块320和资源管理模块330:

所述交互模块310,用于获取用户上传的问题数据和配置信息。

所述任务管理模块320,用于根据所述问题数据和配置信息生成待运行的任务模板,还用于根据所述配置信息基于内置的拆分规则和任务模板生成多个子任务,以所述多个子任务构成待运行的任务实例。

所述交互模块310,还用于获取用户发送的任务运行命令。

所述资源管理模块330,还用于根据所述任务运行命令对所述任务实例中的子任务进行容器化打包和微服务封装并以微服务分布式运行,以得到决策结果;

所述交互模块310还用于向用户返回所述决策结果。

更具体的,在一些实施例中,交互模块310具体用于:

通过进程间通信机制获取用户发出的网络请求;

将所述网络请求放入外部消息队列;

通过消息推送机制或者更新查看机制,获取外部消息队列中的消息更新,识别用户上传的问题数据和配置信息。

更具体的,在一些实施例中,任务管理模块320具体用于:

解析所述问题数据,确定所述问题数据对应的决策任务;

根据所述决策任务的决策任务类别,确定需要设置的决策任务参数变量类别与类型;

解析用户上传的配置信息,结合所述决策任务参数变量类别与类型确定需要设置的决策任务参数变量取值;

依照所述决策任务和所述决策任务参数变量取值,生成所述任务模板。

更具体的,在一些实施例中,任务管理模块320具体还用于:解析分布式存储中的任务模板得到任务信息,所述任务信息用于描述决策任务,基于预设的算法库根据所述模板信息对所述决策任务进行微服务化拆分生成子任务以及对应的微服务描述;

对所述子任务进行容器化封装,生成容器镜像文件;

将所述微服务描述与对应的容器镜像文件存储到容器编排工具中,构成待运行的任务实例。

更具体的,在一些实施例中,交互模块310具体用于:

通过进程间通信机制获取用户发送的任务运行命令;

资源管理模块330具体用于:

根据所述任务运行命令调取所述任务实例对应的微服务描述与容器镜像文件;

根据所述微服务描述查询可分配资源列表,并判断资源是否足够,如果资源足够则将该消息出队,进行处理后放入提交队列中等待被运行,并在可分配资源列表中减少对应资源的数量;

通过消息推送机制或者更新查看机制,获取提交队列中的消息更新,依序根据所述任务配置通过微服务将对应的容器镜像文件调度到具体的分布式节点上运行,以确定决策结果。

更具体的,在一些实施例中,资源管理模块330还用于在依序根据所述任务配置消息执行对应的任务实例以确定决策结果之后:

对所述任务实例的任务状态进行追踪,以根据用户的查询请求返回对应的任务状态。

更具体的,在一些实施例中,所述交互模块、任务管理模块和资源管理模块由运行在不同分布式节点上的微服务实现。

更具体的,在一些实施例中,还包括报警模块,用于通过任务状态监听机制监听所有任务实例,当出现任务状态发生改变时,更新对应的数据结构,如果任务状态发生异常变化则触发警报,并将出现异常变化的任务实例标记为异常,所述异常变化包括出错或中止。

更具体的,在一些实施例中,所述预设的算法库中提供有主从分布式演化计算框架、岛屿分布式演化算法框架和混合分布式演化算法框架三种中的一种或多种。

本实施例提供了一种决策问题的云化解决系统,先获取用户上传的问题数据和配置信息,根据问题数据和配置信息生成待运行的任务模板,再基于内置的拆分规则将任务模板拆分成多个子任务,以多个子任务构成待运行的任务实例,在接收到用户发出的任务运行命令后,调用云平台的分布式计算节点对任务实例中的子任务进行容器化打包和微服务封装并以微服务分布式运行以得到决策结果,最终将决策结果返回给用户,该方法基于云平台进行决策问题的云化解决,可以进行分布式部署,对于不同的问题或不同规模的同类问题柔性选择资源数量以实现性能和代价之间的平衡,提供了良好的用户交互方式,除开发者之外其他人员也能方便使用,无需针对决策问题单独设计演化算法,提高了决策问题的规划效率。

实施例四

图6为本发明实施例四提供的一种服务器400的结构示意图,如图6所示,该服务器包括存储器410、处理器420,服务器中处理器420的数量可以是一个或多个,图6中以一个处理器420为例;服务器中的存储器410、处理器420可以通过总线或其他方式连接,图6中以通过总线连接为例。

存储器410作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的决策问题的云化解决方法对应的程序指令/模块(例如,决策问题的云化解决系统中的交互模块310、任务管理模块320、和资源管理模块330)。处理器420通过运行存储在存储器410中的软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述的决策问题的云化解决方法。

其中,所述处理器420用于运行存储在存储器410中的计算机可执行程序,以实现如下步骤:步骤S110、通过交互模块获取用户上传的问题数据和配置信息;步骤S120、通过任务管理模块根据所述问题数据和配置信息基于预设的算法库生成待运行的任务实例;步骤S130、通过交互模块获取用户发送的任务运行命令,并根据所述任务运行命令通过资源管理模块对所述任务实例进行分布式拆分和分布式运行,以得到决策结果;步骤S140、通过交互模块向用户返回所述决策结果。

当然,本发明实施例所提供的一种服务器,该服务器不限于如上所述的方法操作,还可以执行本发明实施例任意实施例所提供的决策问题的云化解决方法中的相关操作。

存储器410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器410可进一步包括相对于处理器420远程设置的存储器,这些远程存储器可以通过网络连接至服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

本实施例提供了一种服务器,基于云平台进行决策问题的云化解决,基于云原生的云平台进行决策问题规划,将决策问题得到的任务实例进行分布式拆分和分布式运行,对于不同的问题或不同规模的同类问题柔性能够抽象出一个通用的框架,从而以更高效的方式完成用于解决决策问题的任务实例,选择资源数量以实现性能和代价之间的平衡,提供了良好的用户交互方式,除开发者之外其他人员也能方便使用,无需针对决策问题单独设计演化算法,提高了决策问题的规划效率。

实施例五

本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种决策问题的云化解决方法,该决策问题的云化解决方法包括:

通过交互模块获取用户上传的问题数据和配置信息;

通过任务管理模块根据所述问题数据和配置信息生成待运行的任务模板;

通过任务管理模块根据所述配置信息基于内置的拆分规则和任务模板生成多个子任务,以所述多个子任务构成待运行的任务实例;

通过交互模块获取用户发送的任务运行命令,并根据所述任务运行命令通过资源管理模块对所述任务实例中的子任务进行容器化打包和微服务封装并以微服务分布式运行,以得到决策结果;

通过交互模块向用户返回所述决策结果。

当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的决策问题的云化解决方法中的相关操作。

通过以上关于实施方式的描述,所述领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机服务器(可以是个人计算机,服务器,或者网络服务器等)执行本发明各个实施例所述的方法。

值得注意的是,上述决策问题的云化解决系统的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号