掌桥专利:专业的专利平台
掌桥专利
首页

业务处理方法、装置、设备和计算机存储介质

文献发布时间:2023-06-19 12:27:31


业务处理方法、装置、设备和计算机存储介质

技术领域

本公开涉及计算机应用技术领域,尤其涉及云计算和智能搜索技术领域。

背景技术

目前搜索、推荐等服务成为用户内容消费的主流方式,例如图文内容、小视频、短视频、长视频、音频、天气、商品等内容数据在分发的过程中,都需要大量复杂的策略计算从而实现以策略计算为驱动的内容分发。随着内容业务需求的快速增长,传统的业务处理已经不能够满足快速发展并且复杂多变的业务需求,针对于数据生效的实时性和可控制性要求越来越高。一方面,业务需要对数据进行快速生效,例如从原始数据产生到最终数据生效需要在诸如10秒的很短时间之内。另一方面,策略复杂性越来越高,变更频繁,当其中一部分计算结果不符合预期的时候,需要对数据进行调整后重新进行计算。

发明内容

有鉴于此,本公开提供了一种业务处理方法、装置、设备和计算机存储介质,以便于在保证数据生效的实时性基础上,提高可控制性。

根据本公开的第一方面,提供了一种业务处理方法,包括:

获取用户输入的业务逻辑信息,所述业务逻辑包括一个以上的算子,至少部分算子之间插入有检查点;

配置检查点前后算子与数据队列的绑定关系;

在容器中执行所述业务逻辑的过程中,检查点前算子将计算得到的数据写入绑定的数据队列,针对所述数据队列执行所述检查点,所述检查点后算子从绑定的数据队列中读取数据进行计算。

根据本公开的第二方面,提供了一种业务处理装置,包括:

逻辑获取单元,用于获取用户输入的业务逻辑信息,所述业务逻辑包括一个以上的算子,至少部分算子之间插入有检查点;

配置生成单元,用于配置检查点前后算子与数据队列的绑定关系;

逻辑执行单元,用于在容器中执行所述业务逻辑的过程中,检查点前算子将计算得到的数据写入绑定的数据队列,针对所述数据队列执行所述检查点,所述检查点后算子从绑定的数据队列中读取数据进行计算。

根据本公开的第三方面,提供了一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,

所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如上所述的方法。

根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行如上所述的方法。

根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如上所述的方法。

由以上技术方案可以看出,本公开提供了一种在FaaS中实现可自定义检查点的机制,用户可以通过在业务逻辑中自定义的检查点实现对数据的灵活控制,且不影响数据生效的实时性。

应当理解,本部分分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本公开的限定。其中:

图1是本公开实施例提供的方法流程图;

图2是本公开实施例提供的业务逻辑示意图;

图3a~图3d为本公开实施例提供的四种自定义checkpoint功能的示意图;

图4为本公开实施例提供的业务处理装置的结构示意图

图5是用来实现本公开实施例的电子设备的框图。

具体实施方式

以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

本公开在云端服务系统实现,基于FaaS(Functions as a Service,功能即业务)架构使得用户(例如开发人员)能够使用云端服务系统实现对数据的业务处理,在实现数据生效过程中增强可控性。FaaS是一种在无状态容器中运行的事件驱动型计算执行模型,这些功能将利用服务来管理服务器端逻辑和状态。FaaS是一种实现无服务器计算的方法,藉此开发人员可以编写业务逻辑,然后在完全由平台管理的Linux容器中执行这些业务逻辑。

图1为本公开实施例提供的业务处理方法的流程图,如图1中所示,该方法可以包括以下步骤:

在101中,获取用户输入的业务逻辑信息,该业务逻辑包括一个以上的算子,至少部分算子之间插入有checkpoint(检查点)。

在102中,配置checkpoint前后算子与数据队列的绑定关系。

在103中,在容器中执行上述业务逻辑的过程中,checkpoint前算子将计算得到的数据写入绑定的数据队列,针对数据队列执行checkpoint,checkpoint后算子从绑定的数据队列中读取数据进行计算。

从上述实施例所提供的方案中可以看出,本公开提供了一种在FaaS中实现可自定义checkpoint的机制,用户可以通过在业务逻辑中自定义的checkpoint实现对数据的灵活控制,且不影响数据生效的实时性。

下面结合实施例对上述实施例中的各步骤进行详细描述。首先对上述步骤101即“获取用户输入的业务逻辑信息”进行详细描述。

诸如图文内容、小视频、短视频、长视频、音频、天气、商品等内容数据在生效之前需要经过复杂的业务处理,用户可以输入业务逻辑信息。通常的业务逻辑包含多个算子,多个算子之间通过设定的依赖关系依次执行从而完成整个业务处理过程。在本公开实施例中,用户可以在至少部分算子之间插入checkpoint。

checkpoint是一个内部事件,事件被触发后会产生数据的持久化。在本公开实施例中,checkpoint将数据进行的持久化处理是写入数据队列中,也可以是支持顺序SCAN(Single Client Access Name,单一客户端访问名称)的数据库。

数据队列可以采用基于时间顺序存储的高性能数据队列。作为一种优选的实施方式,数据队列可以采用kafka队列,也可以采用其他类型的数据队列。kafka队列是一个分布式、高吞吐量、高扩展性的消息队列系统。

在checkpoint中用户可以设置指令信息和参数信息,从而实现自定义的checkpoint。其中,checkpoint包含的指令信息可以包括诸如监测指令、回灌指令、干预指令、切换指令等等,从而实现数据监测、数据回灌、数据干预、集群切换等功能。该部分将在后续实施例中进行详述。

举个例子,如图2中所示,用户输入的业务逻辑包括A、B、C、D、E、F、G和H八个算子,在A、B和C之间插入checkpoint1,A和B为checkpoint1的前算子,C为checkpoint1的后算子。在D、E和F之间插入checkpoint2,D和E为checkpoint2的前算子,F为checkpoint2的后算子。G和H之间存在checkpoint3,G为checkpoint3的前算子,H为checkpoint3的后算子。

下面结合实施例对上述步骤102即“配置checkpoint前后算子与数据队列的绑定关系”进行详细描述。

由于checkpoint是基于对数据进行持久化处理的,因此,针对用户输入的业务逻辑在生成配置文件时,需要为各checkpoint分配数据队列,与此同时配置checkpoint前后算子与数据队列的绑定关系,据此生成配置文件。

举个例子,如图2中所示的,在A、B和C之间插入checkpoint1,A和B为checkpoint1的前算子,C为checkpoint1的后算子。针对该checkpoint1分配数据队列,假设标记为Kafka队列1。然后配置算子A和B与Kafka队列1的绑定关系,使得算子A和算子B将各自计算得到的数据写入Kafka队列1。配置算子C和Kafka队列1的绑定关系,使得算子C从Kafka队列1中读取数据进行计算。

对于业务逻辑的其他配置文件本公开不做改进和限制。

下面结合实施例对上述步骤103即业务逻辑的执行过程进行详细描述。

对于业务逻辑构成的功能和服务由为其分配的资源实例执行。在一套业务逻辑中,可能需要执行多个算子的处理,通过多个算子共同完成一套业务逻辑的计算。对于内容数据生效而言,可能一套业务逻辑中包括诸如多媒体计算、质量控制、内容理解、离线策略、内存沉淀、多元特征融合等多中功能的算子。对于每一个算子而言,可以分别为其分配至少一个资源实例。

资源实例则可以理解为从计算资源中虚拟出来的一块独立计算单元。由于本公开应用于云端服务系统,因此其中的资源实例指的是云容器实例(Cloud ContainerInstance,CCI)。云容器是将云端的计算资源划分为能够独立运行一个或一组应用及其所必需的运行环境的资源组。容器既可以承载于物理机,也可以承载于虚拟机,也可以运行于公有云主机上。容器技术能够让多个独立、归属于不同用户空间的应用服务运行在同一台宿主机上。

在容器中执行业务逻辑的过程中,依据配置文件顺次执行各算子。其中各算子可以由用户编写代码后输入该业务处理系统。由业务处理系统存储用户编写的各算子的代码。在容器中执行业务逻辑的过程中,执行到用户编写代码的算子时,加载该算子的代码并运行。

在本公开中,为了提高效率和减轻用户负担,提供了对算子进行复用的方式,可以包括但不限于以下几种:

第一种方式:预先存储预设功能算子的SDK(软件开发工具包),若业务逻辑中包含该预设功能算子,则在执行业务逻辑的过程中可以直接调用该预设功能算子的SDK。

这种方式相当于将预设功能预先封装为SDK来方便调用。例如,比如说在自然语言处理中,将分词处理封装为SDK。这样FaaS端直接调用SDK即可,实现简单,用户也无需自主编写代码。

第二种方式:面向用户提供公共算子的信息,并存储该公共算子的代码。若业务逻辑中包含该公共算子,则在容器中加载并执行该公共算子的代码。

这种方式中,可以将一些常用的算子作为公共算子来方便进行使用。这种方式下,用户若在业务逻辑中使用了该公共算子,则可以在执行过程中数据流服务在容器中直接加载该公共算子的代码进行服务。

第三种方式:若业务逻辑中包含与公共数据流相关联的算子,则在执行业务逻辑的过程中,将公共数据流发送至于公共数据流相关联的算子。

这种方式实际上是通过公共数据流的复用实现的。对于一些比较典型的与公共数据流相关联的算子,例如倒排生成算子、建库生效算子等等。可以直接在FaaS端配置一个服务,公共数据流直接从该服务流向生效的通路中,例如倒排生成算子、建库生效算子等等。

在执行业务逻辑的过程中,checkpoint前算子将计算得到的数据写入绑定的数据队列,针对数据队列执行checkpoint,即用户自定义的功能。然后checkpoint后算子从绑定的数据队列中读取数据进行计算。

举个例子,如图2中所示的,从配置文件中可以获知,针对该checkpoint1分配了Kafka队列1,算子A和B与Kafka队列1存在绑定关系,算子C和Kafka队列1存在绑定关系。在实际执行的过程中,算子A和算子B将各自计算得到的数据写入Kafka队列1,算子C从Kafka队列1中读取数据进行计算。

通过自定义的checkpoint,checkpoint包括指令信息和参数信息,用户可以实现各种自定义的功能从而提高可控性。可以包括但不限于以下几种:

第一种方式:实现数据监测功能。

当实现数据监测功能时,用户可以在checkpoint中定义监测指令和相关参数。进行数据监测时,可以通过在checkpoint之后设置旁路算子来实现。若指令信息为监测指令,则checkpoint后算子的旁路算子从数据队列读取数据并输出。

以图3a中为例,算子a是checkpoint前算子,算子a将计算得到的数据写入Kafka队列,该checkpoint包含监测指令,参数信息包括指定字段的信息。数据生效原本的通路为算子c从Kafka队列中读取数据进行计算。该功能中额外设置了一个旁路算子b,旁路算子b也同时从Kafka队列中读取包含指定字段的数据并输出(例如输出至显示装置进行显示,或者输出为文档等等),从而实现对包含指定字段的数据的监测。

其中参数信息除了包括指定字段的信息之外,也可以是其他内容,例如包含指定时间信息以实现对指定时段数据的监测,等等。

第二种方式:实现数据回灌功能。

当实现数据回灌功能时,用户可以在checkpoint中定义回灌指令和相关参数。进行数据回灌时,也可以通过在checkpoint之后设置旁路算子来实现。

若指令信息为回灌指令,则checkpoint后算子的旁路算子从数据队列中读取参数信息指定的历史数据,并重新写入数据队列。

以图3b中为例,算子a是checkpoint前算子,算子a将计算得到的数据写入Kafka队列,该checkpoint包含监测指令,参数信息可以包括指定时间的信息。数据生效原本的通路为算子c从Kafka队列中读取数据进行计算。该功能中额外设置了一个旁路算子b,当执行checkpoint时,旁路算子b也同时从Kafka队列中读取指定的历史数据并重新写入数据队列,从而实现数据回灌。由于Kafka队列具有一个特性,即写入Kafka队列的数据不会被清除,除非老化。即到达老化时间后,历史数据才会被清除。因此,就可以通过读取历史数据并重新写入队列的方式实现数据回灌。

在数据生效通路中,往往可能一些计算策略的不合适或者其他原因造成数据越来越偏离预期。经过局部计算策略调整后希望调整后的算子从某个特定历史时间的数据开始计算,而不是从头计算,这就需要进行数据回灌。除此之外,也可能是其他场景下需要进行数据回灌,在此不做一一列举。

第三种方式:实现数据拦截干预功能。

当实现数据拦截干预功能时,用户可以在checkpoint中定义干预指令和相关参数。该干预功能主要由checkpoint前算子实现。

若指令信息为干预指令,则拦截checkpoint前算子计算得到的数据,并依据参数信息对拦截得到的数据进行干预处理后写入所述数据队列。

以图3c为例,原本的数据生效通路是算子a将计算得到的数据传输给算子b进行处理。插入拦截干预功能的checkpoint后,相当于插入算子c,算子c拦截checkpoint前算子即算子a计算得到的数据,进行干预处理,例如对特定数据打上丢弃标识之后写入Kafka队列。算子b从Kafka队列中读取数据,对其中打上丢弃标识的数据进行丢弃处理,对未打上丢弃标识的数据进行正常的计算。

第四种方式:实现资源切换功能。

当实现资源切换功能时,用户可以在checkpoint中定义切换指令和相关参数。该资源切换功能主要由checkpoint前算子实现。

若指令信息为切换指令,则checkpoint前算子将计算得到的数据在送入绑定的数据队列时,依据参数信息同时将计算得到的数据写入另一数据队列。

以图3d为例,原本的数据生效通路是算子a将计算得到的数据传输给算子b进行处理。算子b由计算资源1执行。假设需要切换至计算资源2执行,则在切换过程中需要由算子a将计算得到的数据在写入Kafka队列1的同时,也写入Kafka队列2。即进行数据双写,切换后由算子c从Kafka队列2中读取数据,算子c与算子b功能相同,但由计算资源2执行。

从以上实施例中可以看出,本公开提供的技术方案可以具备以下优点:

1)本公开提供了一种在FaaS架构中实现可自定义checkpoint的机制,用户可以通过在业务逻辑中自定义的checkpoint实现对数据的灵活控制,且不影响数据生效的实时性。

2)业务方的用户仅需要描述业务逻辑上的拓扑关系和自定义checkpoint,而对于业务在框架中的底层部署无需关注,极大地提高了效率,实现了逻辑关系和业务部署完全解耦。

3)通过自定义的checkpoint可以灵活实现数据监测、数据回灌、拦截干预、资源切换等功能。

以上是对本公开所提供方法进行的详细描述,下面结合实施例对本公开提供的装置进行详细描述。

图4为本公开实施例提供的业务处理装置的结构示意图,如图4中所示,该装置可以包括:逻辑获取单元401、配置生成单元402和逻辑执行单元403,还可以包括信息提供单元404和第一存储单元405,或者还可以包括第二存储单元406。

逻辑获取单元401,用于获取用户输入的业务逻辑信息,业务逻辑包括一个以上的算子,至少部分算子之间插入有checkpoint。

配置生成单元402,用于配置checkpoint前后算子与数据队列的绑定关系。

逻辑执行单元403,用于在容器中执行业务逻辑的过程中,checkpoint前算子将计算得到的数据写入绑定的数据队列,针对数据队列执行checkpoint,checkpoint后算子从绑定的数据队列中读取数据进行计算。

作为其中一种可实现的方式,信息提供单元404,用于面向用户提供公共算子的信息。

第一存储单元405,用于存储公共算子的代码。

逻辑执行单元403,还用于若业务逻辑中包含公共算子,则在容器中加载并执行公共算子的代码。

作为另一种可实现的方式,第二存储单元406,用于存储预设功能算子的SDK。

逻辑执行单元403,还用于若业务逻辑中包含预设功能算子,则在执行业务逻辑的过程中调用预设功能算子的SDK。

作为再一种可实现的方式,逻辑执行单元403,还用于若业务逻辑中包含与公共数据流相关联的算子,则在执行业务逻辑的过程中,将公共数据流发送至与公共数据流相关联的算子。

作为一种优选的实施方式,上述数据队列可以包括kafka队列。

其中,checkpoint可以包括指令信息和参数信息。逻辑执行单元403在针对数据队列执行checkpoint时,可以具体用于:

若指令信息为监测指令,则checkpoint后算子的旁路算子从数据队列读取数据并输出;或者,

若指令信息为回灌指令,则checkpoint后算子的旁路算子从数据队列中读取参数信息指定的历史数据,并重新写入数据队列;或者,

若指令信息为干预指令,则拦截checkpoint前算子计算得到的数据,并依据参数信息对拦截得到的数据进行干预处理后写入数据队列;或者,

若指令信息为切换指令,则checkpoint前算子将计算得到的数据在送入绑定的数据队列时,依据参数信息同时将计算得到的数据写入另一数据队列。

根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。

如图5所示,是根据本公开实施例的资源调度方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。

如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。

设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。

计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如资源调度方法。例如,在一些实施例中,资源调度方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。

在一些实施例中,计算机程序的部分或者全部可以经由ROM和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行上文描述的资源调度方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行资源调度方法。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控30制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。

在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

相关技术
  • 基于业务事件的业务处理方法、装置、计算机设备及存储介质
  • 业务处理方法、装置、计算机设备及计算机可读存储介质
技术分类

06120113299562