实时数据的计算方法及装置
技术领域
本申请涉及计算机应用领域,尤其涉及一种实时数据的计算方法及装置。
背景技术
相关技术中,在实时数据处理平台中,通常都会搭载独立的算法平台,利用算法平台提供的通用解决方案,给业务运营方提供相关的算法服务;例如,以阿里集团自主研发的实时数据处理平台ODPS(Open Data Processing Service,开放数据处理服务)为例,在ODPS平台内通常都会搭载诸如XLib,PAI等算法平台,面向阿里集团提供各种类型的算法服务。
实时数据处理平台中搭载的算法平台,通常会利用平台中集成的消息中间件,通过采集业务系统产生的日志文件,来收集原始的业务数据,并将收集到的原始的业务数据回传到实时数据处理平台。而在大数据处理平台中,通常会配置一个或多个任务,对这些原始的业务数据进行数据处理,将这些原始的业务数据处理成为标准的格式化数据作为算法平台的数据输入。在算法平台中,可以利用算法库中的相关算法对输入的业务数据进行实时计算,再将计算结果回写至实时数据处理平台,在实时数据处理平台中相关的数据表中进行存储;最后,与实时数据处理平台对接的下游业务系统,可以通过读实时数据处理平台中的数据表来调用实时计算的计算结果。
然而,在以上方案中,虽然在某种程度上可以满足实时的计算需求,但至少存在以下的缺陷:
一方面,虽然在现有的实时数据处理平台中,也能通过做相关的算法开发对算法平台中的算法库进行扩展,但由于平台现有的算法库中所支持的算法种类有限,因此仅适合面向一些稳定型的业务做算法支持,对于那些快速变化的业务场景(比如短时间内的大型促销业务)来说,难以很好地支持。
另一方面,在现有的实时数据处理平台中,原始的业务数据从采集到回传到实时数据处理平台,需要较长的延迟;而且,原始的业务数据经过算法的计算处理后,再将计算结果回写到实时数据处理平台,由对接的下游业务系统调用,也会导致处理延时急剧增加,因此使得平台整体的业务稳定性以及时效性难以保障,仅能适应一些离线的计算任务。
发明内容
本申请提出一种实时数据的计算方法,应用于在线业务系统;其中,所述在线业务系统搭载了基于python语言的算法运行环境以及算法库;所述方法包括:
在线业务系统从对接的实时数据处理平台中获取实时业务数据;
基于所述算法库中的目标算法为所述实时业务数据生成python计算任务;
基于预设的调度策略为所述python计算任务分配计算节点设备,并将所述python计算任务下发至所述计算节点设备进行执行;
通过可视化界面输出所述计算节点设备返回的所述python计算任务的计算结果。
本申请还提出一种实时数据的计算装置,应用于在线业务系统;其中,所述在线业务系统搭载了基于python语言的算法运行环境以及算法库;所述装置包括:
获取模块,从对接的实时数据处理平台中获取实时业务数据;
生成模块,基于所述算法库中的目标算法为所述实时业务数据生成python计算任务;
下发模块,基于预设的调度策略为所述python计算任务分配计算节点设备,并将所述python计算任务下发至所述计算节点设备进行执行;
输出模块,通过可视化界面输出所述计算节点设备返回的计算结果。
本申请中,在线业务系统可以搭载基于python语言的算法运行环境以及算法库,当需要针对实时业务数据进行计算时,在线业务系统可以从对接的实时数据处理平台中获取实时业务数据,并基于搭载的算法库中的目标算法为所述实时业务数据生成python计算任务,以及基于预设的调度策略为该python计算任务分配计算节点设备,并将该任务下发至该计算节点设备进行执行,然后通过可视化界面输出该计算节点设备返回的计算结果;
一方面,通过将实时计算任务从传统的实时数据处理平台分离出来,使得与实时数据处理平台对接的在线业务系统,也可以对实时数据处理平台中的实时业务数据进行实时计算,因此可以有效降低将原始的业务数据回传至实时数据处理平台进行计算而造成的系统延时,可以提升实时计算的时效性和系统的稳定性;
另一方面,通过在在线业务系统中搭载基于python语言的算法运行环境以及算法库,可以充分利用基于python语言的算法运行环境支持的算法种类较丰富的特点,使得普通的在线业务系统也具有运行一些高端算法对实时业务数据进行进行实时计算的能力,从而可以灵活的支持快速变化的业务场景。
附图说明
图1是本申请一实施例示出的一种实时数据的计算方法的流程图;
图2是本申请一实施例示出的一种在线业务系统的原理框架图;
图3是本申请一实施例示出的另一种在线业务系统的原理框架图;
图4是本申请一实施例示出的一种实时数据的计算装置的逻辑框图;
图5是本申请一实施例提供的承载所述一种实时数据的计算装置的在线业务系统的硬件架构图。
具体实施方式
本申请旨在提出一种将实时计算任务从传统的实时数据平台中分离,利用与实时数据平台对接的在线业务系统中搭载的基于python语言的算法运行环境以及算法库,来完成针对实时数据平台中的实时业务数据的计算任务的实时数据处理方案。
在实现时,在线业务系统可以搭载基于python语言的算法运行环境以及算法库,当需要针对实时业务数据进行计算时,在线业务系统可以从对接的实时数据处理平台中获取实时业务数据,并基于搭载的算法库中的目标算法为所述实时业务数据生成python计算任务,以及基于预设的调度策略为该python计算任务分配计算节点设备,并将该任务下发至该计算节点设备进行执行,然后通过可视化界面输出该计算节点设备返回的计算结果;
一方面,通过将实时计算任务从传统的实时数据处理平台分离出来,使得与实时数据处理平台对接的在线业务系统,也可以对实时数据处理平台中的实时业务数据进行实时计算,因此可以有效降低将原始的业务数据回传至实时数据处理平台进行计算而造成的系统延时,可以提升实时计算的时效性和系统的稳定性;
另一方面,通过在在线业务系统中搭载基于python语言的算法运行环境以及算法库,可以充分利用基于python语言的算法运行环境支持的算法种类较丰富的特点,使得普通的在线业务系统也具有运行一些高端算法对实时业务数据进行进行实时计算的能力,从而可以灵活的支持快速变化的业务场景。
例如,在一些短时间内的大型促销业务中,业务运营方通常需要基于实时数据处理平台,对业务运营过程中所产生的实时业务数据进行实时计算,来提前预估出一些数据指标(比如促销业务活动当天各行业的交易值,预算的消耗完成时间等),从而使得业务运营方的决策者可以通过这些预估出的数据指标,提前做出相应的决策,对促销业务的运行状况进行及时的调整。
然而,基于实时数据处理平台中现有的实时数据处理机制,由于平台的算法库中支持的的算法种类有限,因此通常仅适合面向一些稳定型的业务做算法支持,无法适应快速变化的业务场景;而且,由于实时数据处理平台中对原始的业务数据的数据处理和实时计算相互分离,整体的数据处理链路较长,在算法的实效性上也较差,无法在短时间内得到计算结果。
而在本申请的技术方案中,可以在与实时数据处理平台对接的在线业务系统中,搭载基于python语言的算法运行环境以及算法库,使得在线业务系统也可以支持诸如深度学习算法等高端算法。
在上述大型促销业务的运营过程中,在线业务系统可以从对接的实时数据处理平台中获取实时业务数据,并基于算法库中搭载的深度学习算法,对获取到的实时业务数据进行预测计算,从而可以在短时间内预估出相关的数据指标,并通过可视化界面(比如大型促销活动的前台大屏)向用户进行展示,从而可以克服实时数据处理平台中现有的实时数据处理机制,无法适应快速变化的业务场景,以及算法实效性较差的问题。
下面通过具体实施例并结合具体的应用场景对本申请进行描述。
请参考图1,图1是本申请一实施例提供的实时数据的计算方法,应用于在线业务系统;其中,所述在线业务系统搭载了基于python语言的算法运行环境以及算法库;所述方法执行如下步骤:
步骤101,从对接的实时数据处理平台中获取实时业务数据;
步骤102,基于所述算法库中的目标算法为所述实时业务数据生成python计算任务;
步骤103,基于预设的调度策略为所述python计算任务分配计算节点设备,并将所述python计算任务下发至所述计算节点设备进行执行;
步骤104,通过可视化界面输出所述计算节点设备返回的所述python计算任务的计算结果。
上述在线业务系统,包括任意类型的与在线业务运营相关的业务系统;例如,在一些短时间内的大型促销业务的应用场景中,上述在线业务系统,具体可以是一个对该大型促销业务的整体运营状况进行实时监控的在线监控系统。在本申请中,上述在线业务系统,可以预先搭载基于python语言的算法运行环境以及算法库;而上述在线业务系统所采用的基础开发语言,可以是python语言以外的其它编程语言;比如,可以是java语言、C++语言,或者其它类型的编程语言。
Python是目前算法开发活跃度最高的语言,通过在在线业务系统中搭载基于python语言的算法运行环境以及算法库,可以充分利用基于python语言的算法运行环境支持的算法种类较丰富的特点,使得普通的在线业务系统也具有运行一些高端算法,对实时业务数据进行实时计算的能力,从而可以灵活的支持快速变化的业务场景。
其中,上述在线业务系统所采用的系统架构,在本申请中不进行特别限定;例如,上述在线业务系统可以采用spring架构,或者以spring架构为内核的sofa架构。
在本申请中,上述在线业务系统可以从对接的实时数据平台中获取实时业务数据,并基于获取到的实时业务数据的具体类型从搭载的上述算法库中选择相应的算法,为获取到的实时业务数据生成python计算任务;其中,python计算任务,是指需要在基于python语言的算法运行环境中执行的计算任务。
进一步的,上述在线业务系统中还可以预配置若干台计算节点设备,作为支撑上述在线业务系统生成的python计算任务的底层运算环境。而上述在线业务系统,还可以基于预配置的任务调度策略,对这些计算节点设备进行调度管理;
例如,以承载上述在线业务系统的硬件环境为服务器集群为例,上述若干计算节点设备,具体可以是服务器集群中能够参与实时计算的若干台物理服务器。当上述在线业务系统为获取到的实时业务数据生成了python计算任务后,可以基于上述任务调度策略,为生成的python计算任务分配最佳的物理服务器,并将该生成的python计算任务下发至分配的物理服务器进行算法任务执行。
进一步的,上述在线业务系统还可以在前台提供一个可视化界面,当上述在线业务接收到上述计算节点设备返回的上述python计算任务的计算结果后,可以将该计算结果通过上述可视化界面向用户输出。
例如,以上述在线业务系统为对大型促销业务的整体运营状况进行实时监控的在线监控系统为例,上述可视化界面具体可以是系统在前台面向用户提供的监控大屏;上述计算结果具体可以是采用了诸如深度学习算法针对实时业务数据执行了相应的预测计算得到的预估数据指标;
在这种情况下,该在线监控系统在收到上述计算节点设备返回的计算完毕的预估数据指标后,可以将这些预估数据指标通过上述监控大屏输出,供业务运营方的决策者参考,进而业务运营商的决策者可以基于这些预估数据指标及时的做出相应的决策,对该促销业务的运行状况进行调整。
上述实时数据处理平台,是指由业务运营方搭建的,可以面向业务运营方提供诸如数据存储、数据管理、数据计算等各种数据服务的业务平台;其中,上述实时数据处理平台的所采用的系统架构,在本申请中也不进行特别限定;例如,可以采用传统的分布式架构。
在本申请中,上述实时数据处理平台,可以预先搭建一个用于存储实时业务数据的业务数据库。在实际应用中,可以利用平台中集成的消息中间件,通过采集业务系统产生的日志文件,来收集实时的业务数据,并将收集到的实时的业务数据在该业务数据库中进行集中存储和维护。
例如,仍以阿里集团自主研发的实时数据处理平台ODPS为例,可以通过在ODPS平台中搭建数据仓库,对阿里集团相关的各种类型的业务数据进行集中存储和维护。
其中,需要说明的是,承载上述在线业务系统以及上述实时数据处理平台的硬件环境,在本申请中均不进行特别限定;在实际应用中,承载上述在线业务系统以及实时数据处理平台的硬件环境,通常可以包括服务器、服务器集群、或者基于服务器集群搭建的业务平台;
例如,在一种实施方式中,以承载上述在线业务系统和上述实时数据处理平台的硬件环境为服务器集群为例,上述在线业务系统和上述实时数据处理平台,可以共同搭载于同一个服务器集群中,由实时数据处理平台对服务器集群中“沉淀”的各类型的实时业务数据进行集中存储和维护,由在线业务系统对服务器集群中作为计算节点设备的各物理服务器进行调度和管理;当然,在实际应用中,上述在线业务系统和上述实时数据处理平台也可以分别搭载在不同的服务器集群中;比如,在一种情况下,上述实时数据处理平台,也可以是与上述在线业务系统存在对接关系的第三方的实时数据处理平台。
以下结合实时业务数据的获取、实时计算任务的生成和下发、系统稳定性的保障以及计算结果的展示四个阶段,对本申请的技术方案进行详细描述。
1)实时业务数据的获取
在本例中,上述在线业务系统可以通过与上述实时数据处理平台进行系统对接,来取得上述实时数据处理平台中集中存储和维护的实时业务数据的访问权限。
其中,上述在线业务系统在与上述实时数据处理平台进行系统对接时所采用的对接方式,具体可以通过上述实时数据处理平台提供的数据访问接口,与上述实时数据处理平台对接;或者,也可以通过直接与上述实时数据处理平台中搭建的业务数据库进行对接,来实现与上述实时数据处理平台的对接。
在示出的一种实施方式中,上述实时数据处理平台可以预先提供一个对应于上述业务数据库的数据访问接口;而上述在线业务系统,可以通过调用上述数据访问接口,与上述实时数据处理平台进行对接,来访问上述业务数据库中的实时业务数据,进而实现上述在线业务系统和上述实时数据处理平台之间在数据层面的互联互通。
在这种情况下,当业务运营方需要针对业务所产生的实时业务数据进行计算时,此时上述在线业务系统可以向上述数据访问接口发起调用,通过上述数据访问接口来访问上述实时数据平台中搭建的上述数据库中的实时业务数据。
在示出的另一种实施方式中,也可以通过在上述在线业务系统与上述实时数据处理平台中搭建的上述业务数据库之间,建立相应的数据访问连接,而上述在线业务系统,可以通过该数据访问连接直接与上述业务数据库进行对接,并通过上述数据访问连接从上述业务数据库中读取实时业务数据,进而实现上述在线业务系统和上述实时数据处理平台之间在数据层面的互联互通。
在这种情况下,当业务运营方需要针对业务所产生的实时业务数据进行计算时,由于此时上述在线业务系统已与上述实时数据处理平台中搭建的上述业务数据库进行了对接,因此上述在线业务系统可以通过与上述业务数据数据之间的数据访问连接,直接从上述业务数据库中读取所需的实时业务数据即可。
可见,通过这种方式,上述在线业务数据可以通过调用数据访问接口,或者直接对接上述业务数据库的形式,快速的与上述实时数据处理平台完成对接,从而可以以较低的实现成本,灵活适配上述实时数据处理平台中沉淀的各种类型的实时业务数据以及数据格式,因此非常适用于那些快速变化的业务场景。
在本例中,上述在线业务系统搭载的基于python语言的算法库中,可以预先搭载与各种类型的与业务运营方实际的实时计算需求相关的算法对应的算法组件,而上述在线业务系统从上述实时数据处理平台中获取到的实时业务数据,将会作为数据输入,输入至相应的算法组件中进行计算。
2)实时计算任务的生成和下发
在本例中,上述在线业务系统中还可以预配置若干台计算节点设备;其中,预配置的计算节点设备的数量,取决于承载上述在线业务系统的服务器集群中,可以参与实时计算的物理服务器的数量。预配置的这些计算节点设备,将作为支撑上述算法库中搭载的各种类型的算法组件的底层运算环境。
当上述在线业务系统从上述实时数据处理平台中获取到实时业务数据后,可以从上述算法库中为获取到的实时业务数据分配相应的目标算法;其中,为获取到的实时业务数据所分配的目标算法的类型,则取决于业务运营方实际的计算需求以及上述实时业务数据的具体类型;比如,业务运营方可以按照实时业务数据的类型,来分别预配置不同类型的算法;
当为获取到的实时业务数据分配了相应的目标算法后,此时上述在线业务系统可以基于分配的该目标算法为获取到的实时业务数据生成python计算任务;例如,上述在线业务系统,首先可以为获取到的实时业务数据创建一个对应于上述python计算任务的任务线程,然后再从系统资源中为该任务线程分配系统资源(比如内存空间)。
当为获取到的实时业务数据生成了python计算任务后,此时上述在线业务系统可以结合预配置的调度策略,从底层运算环境中的各计算节点设备中为该python计算任务分配计算节点设备。
其中,上述调度策略所包括的调度逻辑,在本申请中不进行特别限定,在实际应用中,可以基于计算需求进行自定义配置;例如,在实现时,在线业务系统可以实时的监控各计算节点设备的处理资源的占用情况,并结合上述python计算任务实际的资源占用情况,为该python计算任务分配最佳的计算节点设备。
当上述在线业务系统,为生成的上述python计算任务分配了对应的计算节点设备后,可以将该python计算任务下发至该计算节点设备进行执行。而该计算节点设备在收到上述在线业务系统下发的python计算任务后,可以调用上述算法库中搭载的与上述目标算法对应的算法组件,在上述在线业务系统搭载的基于python语言的算法运营环境中,执行该python计算任务。
3)系统稳定性的保障
在本例中,在线业务系统通过搭载基于python语言的算法运行环境以及算法库,虽然可以弥补基于传统的主流语言开发(比如java,c++)开发的算法库,所支持的算法有限,对于一些诸如深度学习算法等高端算法不被支持的缺陷,但由于基于python语言的算法任务在运行过程中会占用大量的系统资源(比如CPU、内存等),因此可能会导致在线业务系统不稳定的问题。
而在实际应用中,在线业务系统通常是直接面对业务运营方的在线系统,对于系统的稳定性通常要求较高,因此在充分利用基于python语言的算法运行环境支持的算法种类较丰富的特点的同时,通常还需要通过一系列系统稳定的保障措施,来进一步确保搭载了基于python语言的算法运行环境的在线业务系统的稳定性。
在本例中,上述在线业务系统除了可以搭载基于python语言的算法运行环境以及算法库以外,还可以进一步搭载一系列用于保障系统稳定性的稳定性组件。
在本申请中,上述稳定性组件,至少可以包括任务隔离组件、运行环境隔离组件、设备管理组件以及算法任务管理组件。
上述任务隔离组件,用于对上述在线业务系统生成的不同的python计算任务进行任务隔离;上述运行环境隔离组件,用于对不同的python计算任务进行运行环境隔离。
其中,任务隔离,是指对不同的python计算任务的执行逻辑进行隔离;例如,在实现时,上述在线业务系统在基于获取到的实时业务数据生成对应的python计算任务时,可以为所生成的不同的python计算任务生成不同的任务线程;或者,对不同的python计算任务所分配的系统资源进行隔离(比如为不同的python计算任务划分不同的且相互隔离的内存空间),来保障不同的python计算任务的执行逻辑互相隔离。
其中,运行环境隔离,是指对不同的python计算任务的运行环境进行隔离;在实现时,上述在线业务系统可以为不同的python计算任务分配不同的计算节点设备,并将不同的python计算任务下发到不同的计算节点设备中执行,以对不同的python计算任务的运行环境加以区分;
例如,以上述在线业务系统为获取到的实时业务数据分配的目标算法为深度学习算法为例,上述python计算任务可以包括基于深度学习算法的线下模型训练任务,和基于训练得到的模型进行实时预测的线上任务两类;在这种情况下,上述在线业务系统可以对线下环境和线上环境进行隔离,将线下模型训练任务下发至与线下环境对应的计算节点设备,将实时预测的线上任务下发至与线上环境对应的计算节点设备。
上述在线业务系统通过对不同的python计算任务进行任务隔离以及运行环境隔离,可以避免不同的python计算任务之间相互影响,从而可以最大程度的保障上述在线业务系统的系统稳定性。
当然,在实际应用中,如果上述在线业务系统除了搭载了基于python语言的算法运行环境以外,还搭载了基于其它开发语言的算法运行环境的话,在这种情况下,上述在线业务系统在对生成的不同的任务进行任务隔离以及运行环境隔离时,可以采用相同的处理方式,对不同类型的计算任务分别进行任务隔离和运行环境隔离即可;
例如,以上述在线业务系统还搭载了基于java语言的算法运行环境为例,上述在线业务系统可以在对生成的python计算任务进行任务隔离和运行环境隔离的基础上,可以进一步对python计算任务和java计算任务也进行任务隔离和运行环境隔离,以保障python计算任务和java计算任务之间的执行逻辑互相隔离,以及python计算任务和java计算任务分别在不同的计算节点设备中进行执行。
其中,上述设备管理组件,用于对执行python计算任务的各计算节点设备进行异常管理,在任一计算节点设备出现异常时,及时回收分配给该节点设备的系统资源,以及对上述python计算任务进行切换。
在实现时,上述在线业务系统中可以搭载心跳检测程序,上述设备管理组件可以通过该心跳检测程序对各计算节点设备进行异常检测。在实际应用中,当上述在线业务系统将生成的python计算任务下发至计算节点设备后,各节点节点设备可以周期性的发送心跳数据来进行设备保活;而上述在线业务系统,可以通过采集各计算节点设备发送的心跳数据,对各计算节点设备进行异常检测。
对于任意一个节点节点设备而言,如果上述在线业务系统未采集到该计算节点设备发送的心跳数据,并且未采集到该心跳数据的时长达到了预设的超时时长,此时上述在线业务系统可以判定该计算节点设备存在异常,立即回收分配给该计算节点设备的系统资源(比如回收分配给计算节点设备的内存空间),并重新为备用的计算节点设备分配系统资源,然后该计算节点设备当前在执行的python计算任务立即切换到备用的计算节点设备继续进行执行。
通过这种方式,使得上述在线业务系统可以通过采集各计算节点设备的心跳数据,来动态的监控各计算节点设备的异常状态,并在监控到任一计算节点设备存在异常时,可以立即将该计算节点设备当前正在执行的python计算任务切换至备用的计算节点设备继续进行执行,从而可以最大程度的确保在线业务系统的系统稳定性。
另外,在本例中,上述在线业务系统还可以与外围的监控系统对接。当上述在线业务系统完成将python计算任务切换至备用的计算节点设备的操作后,可以立即生成与python计算任务切换相关的日志文件,并将生成的该日志文件发送至上述监控系统。
而上述监控系统,可以预配置相应的异常分析规则,并基于该异常分析规则对上述在线业务系统回传的日志文件进行异常分析;当上述监控系统从上述在线业务系统回传的日志文件中,分析出python计算任务发生切换时,可以立即生成与该python计算任务的切换事件相关的告警提示,然后将告警提示发送给系统管理员;比如,可以以短信的形式向系统管理员发送告警提示;从而,系统管理员在收到告警提示后,可以及时的进行人工干预。
其中,上述算法任务管理组件,用于监控上述在线业务系统生成的各python计算任务的运行状况,并及时的生成相关的日志文件回传至上述监控系统。
在实现时,上述算法任务管理组件,可以搭载拦截程序,通过该拦截程序对各python计算任务的执行过程中所产生的各类数据进行拦截,以对各python计算任务的运行状况进行监控,并基于拦截到的数据生成相关的日志文件,然后将生成的日志文件及时的发送至上述监控系统。
相应的,上述监控系统,也可以基于预配置的异常分析规则,对上述在线业务系统回传的日志文件进行异常分析;当上述监控系统从上述在线业务系统回传的日志文件中,分析出任一python计算任务发生异常时,可以立即生成与该python计算任务的异常事件相关的告警提示,然后将告警提示发送给系统管理员,以由系统管理员在收到告警提示后,及时的进行人工干预。
可见,通过在在线业务系统中搭载上述任务隔离组件、设备管理组件以及算法任务管理组件等稳定性组件,可以在充分利用基于python语言的算法运行环境支持的算法种类较丰富的特点的同时,最大程度的确保搭载了基于python语言的算法运行环境的在线业务系统的稳定性。
4)计算结果的展示
在本例中,上述在线业务系统可以在前台提供一个可视化界面,用于对上述在线业务系统生成的各python计算任务,以及各python计算任务的计算结果进行效果展示。
一方面,上述可视化界面中可以提供一个任务列表。当上述在线业务系统在后台基于获取到的实时业务数据生成了对应的python计算任务后,可以将生成的python计算任务在上述任务列表进行输出展示;
另一方面,当上述在线业务系统将生成的python计算任务下发至对应的计算节点设备,并且该计算节点设备在基于上述在线业务系统分配的系统资源执行完毕该计算任务后,可以将计算结果返回给上述在线业务系统。而上述在线业务系统在接收到计算节点设备返回的计算结果后,也可以将该计算结果在上述任务列表中对应的位置上进行输出展示。
其中,计算节点设备返回的计算结果,具体可以针对实时业务数据进行计算后,得到的能够反映业务运营状况的相关数据指标。上述在线业务在将计算节点设备返回的这些数据指标在上述可视化界面中进行效果展示时,可以将与这些数据指标,与其它相关的数据指标在该可视化界面中进行对比展示。
在示出的一种实施方式中,与上述实时业务数据对应的运营业务可以是业务运营方发起的短时间内的大型促销业务;上述在线业务系统可以是对大型促销业务的整体运营状况进行实时监控的在线监控系统;上述可视化界面具体可以是系统在前台面向用户提供的监控大屏;上述计算结果具体可以是上述计算节点设备采用了诸如深度学习算法,针对实时业务数据执行了相应的预测计算得到的预估数据指标;
在这种情况下,该在线监控系统实时可以获取与上述实时业务数据对应的真实数据指标,并在收到上述计算节点设备返回的计算完毕的预估数据指标后,可以将这些预估数据指标和获取到的上述真实数据指标,通过上述监控大屏进行关联输出,从而可以在该监控大屏中对与实时业务数据相关的真实数据指标和预估数据指标进行对比展示;
例如,上述预估数据指标,可以是在线业务系统通过搭载的深度学习算法预测出的促销业务活动当天各行业的交易值;而上述真实数据指标,可以是促销业务活动当天各行业真实的交易值;通过将预测值和真实值进行对比展示,使得业务运营方的决策者,可以直观的了解到预测值与真实值之前的差异,进而可以及时的发现算法上的不足,及时的对算法进行改进。
进一步的,为了优化上述可视化界面在输出上述计算结果时的展示效果,在上述在线业务系统中,还可以搭载应急组件、以及任务置顶组件。
其中,上述应急组件,用于对上述可视化界面中输出的计算结果进行应急修改。在实现时,上述应急组件可以面向业务运营方的业务运营人员提供用户接口,业务运营人员在查看上述可视化界面中输出的计算结果的过程中,如果通过人为分析确定上述可视化界面中输出的计算结果存在异常时,可以通过上述用户接口接入上述可视化界面,对可视化界面中输出的计算结果进行人工修改;
例如,以上述计算结果为上述计算节点设备采用了诸如深度学习算法,针对实时业务数据执行了相应的预测计算得到的预估数据指标为例,在这种情况下,如果业务运营人员通过人工分析确定监控大屏中输出的预估数据指标出现明显错误,此时可以通过上述应急组件提供的用户接口,接入上述监控大屏,对上述预估数据指标进行人工修改。
其中,上述任务置顶组件,用于在上述可视化界面中灵活的配置置顶python计算任务。在实现时,上述应急组件也可以面向业务运营方的业务运营人员提供用户接口,业务运营人员可以通过上述用户接口接入上述可视化界面,对上述可视化界面中输出的python计算任务进行操作,选定出一个目标python计算任务,并将该目标python计算任务设置为置顶任务,在上述任务列表中置顶展示。当然,除了将业务运营人员设置的置顶python计算任务在上述任务列表中置顶展示以外,当业务运营人员设置了置顶python计算任务后,对于该置顶python计算任务对应的计算结果,也可以一并在上述可视化界面中进行置顶展示。
可见,通过上述在线业务系统中搭载应急组件以及任务置顶组件,使得业务运营人员可以手动的对可视化界面中输出的计算结果进行人工修改,以及可以灵活的设置置顶任务,不再需要从大量的python计算任务中搜索需要关注的任务,可以降低上述可视化界面在进行效果展示时出错的概率。
以下结合具体的应用场景对以上实施例中的技术方案进行详述。
在本例中,将以上述在线业务系统为基于java语言开发的线上业务系统为例进行说明。
需要强调的是,以上述在线业务系统为基于java语言开发的在线业务系统为例,仅为示例性的,并不用于限定;显然,在实际应用中,上述在线业务系统,也可以是采用其它开发语言开发的在线业务系统。
请参见图2,图2为本例示出的一种搭载基于java语言开发的在线业务系统的原理框架图。
如图2所示,上述在线业务系统的框架中可以包括运行环境、数据对接、底层控制、后台管理、前台管理、外围系统等6个部分,以下对以上6个部分分别进行描述。
1)运行环境
在本例中,上述在线业务系统可以是基于java语言开发的在线业务系统,为了该在线业务系统能够具有运行一些诸如深度学习算法等高端算法,对实时业务数据进行实时计算的能力,上述在线业务系统在搭载的基于java的运行环境的基础上,可以进一步搭载基于python的运行环境和算法库。
其中,如图2所示,基于java的运行环境,可以采用spring架构,或者以spring架构为内核的sofa架构。
基于python的运行环境,可以在业务层面支持一系列与业务需求相关的算法,并提供若干与支持的算法相关的算法组件;例如,图2中示出的算法组件包括keras组件、theano组件、tensorflow组件、numpy组件、pandas组件,等等。
当然,在基于java的运行环境中,也可以搭载基于java的算法库。
2)数据对接
请继续参见图2,上述在线业务系统可以通过实时数据处理平台提供的数据访问接口,与上述实时数据处理平台对接;或者,也可以通过直接与上述实时数据处理平台中搭建的业务数据库进行对接,来取得上述实时数据处理平台的业务数据库中集中存储和维护的实时业务数据的访问权限。
在需要对业务数据库中的实时业务数据时,上述在线业务系统可以通过调用实时数据处理平台提供的数据访问接口,来访问上述业务数据库中的实时业务数据;或者,通过直接与上述业务数据库建立数据访问连接,与上述业务数据库进行对接,从上述业务数据库中读取实时业务数据,然后将获取到的实时业务数据输入至相关的算法组件进行计算。
3)底层控制
请继续参见图2,上述在线业务系统可以通过搭载算法任务调度组件,任务隔离组件、运行环境隔离组件以及心跳检测程序来实现上述在线业务系统的底层控制。
上述算法任务调度组件,用于为获取到的实时业务数据生成java算法任务或者python算法任务,并通过预配置的调度策略,对生成的算法任务进行任务调度,从预配置的若干台可以参与实时计算的服务器(及计算节点设备)中,为生成的算法任务分配服务器,并将计算任务以调度信息的形式进行下发,在相应的运行环境中进行执行;比如,如图2所示,对于生成的python算法任务,可以以调度信息的形式将该算法任务下发至基于python的运行环境中进行执行;对于生成的java算法任务,可以以调度信息的形式将该算法任务下发至基于java的运行环境中进行执行。
上述任务隔离组件,用于对上述在线业务系统生成的不同的计算任务的执行逻辑进行隔离;上述运行环境隔离,用于对不同的计算任务进行运行环境的隔离,进而可以确保python计算任务和java计算任务,以及不同的python计算任务或者不同的java计算任务均能够被下发至不同的服务器,分别进行执行,从而最大程度的避免不同的计算任务之间相互影响,来保证系统稳定性。
同时,对于承担计算任务的各服务器,可以定时向算法任务调度组件返回心跳数据,由算法任务服务器通过基于java的运行环境将心跳数据在业务数据库中落地生成相应的心跳记录。
上述心跳检测程序,可以定时从业务数据库中采集心跳记录,对承担计算任务的各服务器进行心跳检测,一旦在预设的超时时长内未检测到某一服务器的心跳记录,则可以向服务器管理组件进行上报,以触发服务器管理组件将该服务器承担的计算任务切换到备用的服务器,并在完成切换后生成与计算任务切换相关的日志文件。
4)后台管理
请继续参见图2,上述在线业务系统可以通过搭载算法任务管理组件和服务器管理组件来实现上述在线业务系统的后台控制。
上述算法任务管理组件,用于通过拦截各计算任务的执行过程中所产生的各类数据,对各计算任务的运行状况进行监控,并基于拦截到的数据生成与各计算任务的运行状况相关的日志文件。
同时,上述算法任务管理组件,可以面向运营人员提供相关的用户接口,从而运营人员可以通过上述用户接口在系统后对已经生成的各算法任务,手动的进行增删改查、释放任务、手动触发任务、手动暂停任务等操作。
上述服务器管理组件,用于对承担计算任务的各服务器进行异常管理,根据上述心跳检测程序上报的异常检测结果,及时回收异常服务器的系统资源,对异常服务器承担的计算任务进行切换,以及生成与任务切换相关的日志文件发送至上述外围监控系统。
相似的,上述算法任务管理组件,也可以面向运营人员提供相关的用户接口,从而运营人员可以通过上述用户接口在系统后对承担算法任务的各服务器,手动的进行服务器上线、服务器下线(服务器下线是指服务器不再承担算法任务,而是处理与算法任务无关的其它系统任务)以及算法任务切换等操作。
5)前台管理
请继续参见图2,上述在线业务系统可以通过搭载应急组件、任务置顶组件以及效果展示组件,来实现上述在线业务系统的前台管理。
上述效果展示组件,用于将生成的各算法任务以及各算法任务的计算结果,在前台提供的可视化界面中进行输出展示。
上述应急组件,用于对上述可视化界面中输出的计算结果进行应急修改;上述应急组件可以面向业务运营方的业务运营人员提供用户接口,业务运营人员在查看上述可视化界面中输出的计算结果的过程中,如果通过人为分析确定上述可视化界面中输出的计算结果存在异常时,可以通过上述用户接口接入上述可视化界面,对可视化界面中输出的计算结果进行人工修改。
上述任务置顶组件,用于在上述可视化界面中灵活的配置置顶计算任务;上述应急组件也可以面向业务运营方的业务运营人员提供用户接口,业务运营人员可以通过上述用户接口接入上述可视化界面,从上述可视化界面输出的计算任务中灵活的设置置顶任务,进而可以将上述置顶任务以及上述置顶任务对应的计算结果在可视化界面中置顶展示。
6)外围系统
请参见图3,图3为本例示出的另一种搭载基于java语言开发的在线业务系统的原理框架图。
在本例中,上述在线业务系统还可以在图2示出的架构的基础上,进一步对接外围系统。请参见图3,与上述在线业务系统对接的外围系统,具体可以包括外围监控系统。
上述外围监控系统,可以预配置相应的异常分析规则,并基于该异常分析规则对上述在线业务系统回传的日志文件进行异常分析;一方面,上述在线业务系统搭载的上述服务器管理组件,在完成计算任务切换后,可以将生成的与计算任务切换相关的日志文件回传到外围监控系统;另一方面,上述在线业务系统搭载的上述算法任务管理组件,也可以将基于拦截到的数据生成与各计算任务的运行状况相关的日志文件回传到外围监控系统。
当从上述在线业务系统回传的日志文件中,分析出计算任务发生切换,或者计算任务发生异常时,均可以立即生成相关的告警提示,然后将告警提示发送给系统管理员,从而系统管理员在收到告警提示后,可以及时的进行人工干预。需要补充说明的是,图2以及图3示出的远离架构图仅为示例性的,并不用于限定;在实际应用中,本领域技术人员可以在图2示出的系统架构的基础上,对图2以及图3中示出的相关组件、模块等进行进一步拆分、合并、删除或者引入新的组件或者模块,在本申请中不再进行详述。
通过以上各实施例可知,在本申请中,通过在在线业务系统中搭载基于python语言的算法运行环境以及算法库,当需要针对实时业务数据进行计算时,在线业务系统可以从对接的实时数据处理平台中获取实时业务数据,并基于搭载的算法库中的目标算法为所述实时业务数据生成python计算任务,以及基于预设的调度策略为该python计算任务分配计算节点设备,并将该任务下发至该计算节点设备进行执行,然后通过可视化界面输出该计算节点设备返回的计算结果;
一方面,通过将实时计算任务从传统的实时数据处理平台分离出来,使得与实时数据处理平台对接的在线业务系统,也可以对实时数据处理平台中的实时业务数据进行实时计算,因此可以有效降低将原始的业务数据回传至实时数据处理平台进行计算而造成的系统延时,可以提升实时计算的时效性和系统的稳定性;
另一方面,通过在在线业务系统中搭载基于python语言的算法运行环境以及算法库,可以充分利用基于python语言的算法运行环境支持的算法种类较丰富的特点,使得普通的在线业务系统也具有运行一些高端算法对实时业务数据进行进行实时计算的能力,从而可以灵活的支持快速变化的业务场景。
与上述方法实施例相对应,本申请还提供了装置的实施例。
请参见图4,本申请提出一种实时数据的计算装置40,应用于在线业务系统;其中,所述在线业务系统搭载了基于python语言的算法运行环境以及算法库;;请参见图5,作为承载所述实时数据的计算装置40的在线业务系统所涉及的硬件架构中,通常包括CPU、内存、非易失性存储器、网络接口以及内部总线等;以软件实现为例,所述实时数据的计算装置40通常可以理解为加载在内存中的计算机程序,通过CPU运行之后形成的软硬件相结合的逻辑装置,所述装置40包括:
获取模块401,从对接的实时数据处理平台中获取实时业务数据;
生成模块402,基于所述算法库中的目标算法为所述实时业务数据生成python计算任务;
下发模块403,基于预设的调度策略为所述python计算任务分配计算节点设备,并将所述python计算任务下发至所述计算节点设备进行执行;
输出模块404,通过可视化界面输出所述计算节点设备返回的计算结果。
在本例中,不同的python计算任务的执行逻辑互相隔离;以及,
不同的python计算任务被下发至不同的计算节点设备进行执行。
在本例中,所述获取模块401:
调用对接的实时数据处理平台提供的数据访问接口,访问所述实时数据处理平台中的实时业务数据;或者,
对接所述实时数据处理平台的业务数据库,从所述业务数据库中读取实时业务数据。
在本例中,所述装置40还包括
采集模块405(图4中未示出),采集所述计算节点设备发送的心跳数据;
切换模块406(图4中未示出),如果在预设的超时时长内未采集到所述计算节点设备发送的心跳数据,将所述python计算任务切换至备用计算节点设备;以及,
生成与所述python计算任务切换相关的日志文件,并将生成的日志文件发送至与所述在线业务系统对接的监控系统,以由所述监控系统对所述日志文件进行异常分析,并在分析出所述python计算任务发生切换时向系统管理员发送告警提示。
在本例中,所述装置40还包括:
监控模块407,监控所述python计算任务的运行状况;基于监控到的所述python计算任务的运行状况生成对应的日志文件,并将生成的日志文件发送至与所述在线业务系统对接的监控系统,以由所述监控系统对所述日志文件进行异常分析,并在分析出所述python计算任务存在异常时向系统管理员发送告警提示。
在本例中,所述目标算法为深度学习算法;所述python计算任务的计算结果为基于深度学习算法对所述实时业务数据进行预测计算得到的预估数据指标;
所述输出模块404:
获取与所述实时业务数据对应的真实数据指标;
通过可视化界面将所述真实数据指标,以及所述计算节点设备返回的所述预估数据指标关联输出,以在所述可视化界面中对所述真实数据指标以及所述预估数据指标进行对比展示。
在本例中,所述装置40还包括以下模块中的至少一个:
修改模块406(图4中未示出),响应于系统管理员的修改操作,对所述计算结果进行修改更新;
置顶模块407(图4中未示出),响应于系统管理员的置顶操作,将与系统管理员选定的目标python计算任务设置为置顶任务,并将所述目标python计算任务对应的计算结果在所述可视化界面置顶展示。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。