1.本技术涉及数据处理技术领域,尤其涉及一种数据更新方法、装置、电子设备及存储介质。
背景技术:2.通过flink来实时的消费kafka中的数据,之后将数据写入hdfs是常见的数据入库方法;其中,flink即apache flink是用于分布式流和批处理数据处理的开源平台;flink是具有多个api的流数据流引擎,用于创建面向数据流的应用程序;kafka即apache kafka;flink应用程序通常使用apache kafka进行数据输入和输出。数据更新过程首先要将数据进行入库,入库指的是从消息队列中的数据弄进数据仓库中,但是,一旦需要写入的数据需要变化(比如增加或减少日志),需要重新打出jar包,之后把集群上正在运行的任务给停止,之后把新的jar包提交到集群上运行。这样非常的麻烦,麻烦之一是打jar包需要配置合适的jdk环境,而且可能编译很久;麻烦之二是运行的新的任务,jar包提交到集群后不能立刻开始运行,还需要分配运行容器,重新建立各个进程,从checkpoint恢复数据等工作。
技术实现要素:3.有鉴于此,本技术提出一种数据更新方法、装置、电子设备及存储介质,以此提供一种可以随时更新数据,更新数据后不需要重启,且更新不容易出错的方案。
4.本技术提供了一种数据更新方法,应用于与数据库通信连接的数据处理引擎,所述数据处理引擎包含至少一个数据处理函数,包括:
5.接收数据流;
6.监测当前时刻与处理函数进程的最近历史初始化时刻之间的时间间隔;其中,所述处理函数进程至少用于根据从数据库的配置信息中获取的处理函数进程对应的初始化逻辑对所述处理函数进程进行初始化;所述处理函数进程的最近历史初始化时刻为距当前时刻最近一次成功对所述处理函数进程进行初始化的时刻;所述配置信息中包含所述处理函数进程对应的初始化逻辑;
7.在监测到当前时刻与所述处理函数的最近历史初始化时刻之间的时间间隔不小于预设时间间隔阈值时,从所述数据库的配置信息中获取所述处理函数进程对应的当前初始化逻辑;
8.利用所述当前初始化逻辑更新所述最近历史初始化逻辑,并通过所述当前初始化逻辑对所述处理函数进程进行初始化;
9.通过以当前初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理。
10.基于同一构思,本技术还提供了一种数据更新装置,应用于与数据库通信连接的数据处理引擎,所述数据处理引擎包含至少一个数据处理函数,包括:
11.接收模块,被配置为接收数据流;
12.第一监测模块,被配置为监测当前时刻与处理函数进程的最近历史初始化时刻之
间的时间间隔;其中,所述处理函数进程至少用于根据从数据库的配置信息中获取的处理函数进程对应的初始化逻辑对所述处理函数进程进行初始化;所述处理函数进程的最近历史初始化时刻为距当前时刻最近一次成功对所述处理函数进程进行初始化的时刻;所述配置信息中包含所述处理函数进程对应的初始化逻辑;
13.第二监测模块,被配置为在监测到当前时刻与所述处理函数的最近历史初始化时刻之间的时间间隔不小于预设时间间隔阈值时,从所述数据库的配置信息中获取所述处理函数进程对应的当前初始化逻辑;
14.初始化模块,被配置为利用所述当前初始化逻辑更新所述最近历史初始化逻辑,并通过所述当前初始化逻辑对所述处理函数进程进行初始化;
15.处理模块,被配置为通过以当前初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理。
16.基于同一构思,本技术还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上任一项所述的数据更新方法。
17.基于同一构思,本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机实现如上任一项所述的数据更新方法。
18.从上面所述可以看出,本技术提供的一种数据更新方法、装置、电子设备及存储介质。具体的,所述数据更新方法通过数据表中的配置信息对与配置表中对应的处理函数进行初始化,使得处理函数通过配置表中的处理逻辑对接收到的数据流进行处理,响应于完成初始化,则接收数据流并根据配置表对数据流进行处理,其中,在本技术中通过修改配置表的方式完成对处理函数的处理逻辑进行修改,提供了一种可以随时更新数据,更新数据后不需要重启,且更新不容易出错的方案,有效的解决了编译jar报麻烦,更新容易出错的问题。进一步的,对于“接收数据流并根据配置表对数据流进行处理”在确定接收到数据流时,首先确定接收到数据流的时刻与处理函数的最近历史初始化时刻之间的时间间隔,根据时间间隔确定是否对处理函数的处理逻辑进行更新,使用新的处理逻辑对接收到的数据流进行处理,本技术基于获取到数据的输入才获取当前的时间(current_time)相对于现有技术中的“额外建立定时任务来更新;不管有没有数据需要处理,都定期的更新”这种机械性很强的更新方式,从而实现了更加有效的节约计算机的计算资源。
附图说明
19.为了更清楚地说明本技术实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
20.图1为本技术实施例提出的一种数据更新方法的应用场景示意图;
21.图2为本技术实施例提出的一种数据更新方法的流程示意图;
22.图3为本技术实施例提出的一种数据更新装置的结构示意图;
23.图4为本技术实施例提出的电子设备结构示意图。
具体实施方式
24.为使本说明书的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本说明书进一步详细说明。
25.需要说明的是,除非另外定义,本技术实施例使用的技术术语或者科学术语应当为本技术所属领域内具有一般技能的人士所理解的通常意义。本技术实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件、物件或者方法步骤涵盖出现在该词后面列举的元件、物件或者方法步骤及其等同,而不排除其他元件、物件或者方法步骤。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
26.如背景技术部分所述,目前很多系统中的数据的更新(例如增加或减少日志)都是需要重新打出jar包,之后把集群上正在运行的任务给停止,之后把新的jar包提交到集群上运行。由此会造成很多的麻烦,例如,(1)打jar包需要配置合适的jdk环境,而且可能编译很久;(2)当有需要运行的新的任务时,jar包提交到集群后不能立刻开始运行,还需要分配运行容器,重新建立各个进程,从checkpoint恢复数据等工作。其中,jar包为包含有代码的压缩包,具体的,java代码编译之后需要打包成一个压缩包来运行;进程为计算机分配资源的基本单元。
27.参考图1,其为本技术实施例提供的数据更新方法的应用场景示意图。该应用场景包括终端设备101、处理引擎102以及数据存储系统103。其中,终端设备101、处理引擎102以及数据存储系统103之间均可通过有线或无线的通信网络连接。终端设备101包括但不限于桌面计算机、移动电话、移动电脑、平板电脑、媒体播放器、智能可穿戴设备视、个人数字助理(personal digital assistant,pda)或其它能够实现上述功能的电子设备等。处理引擎102和数据存储系统103均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
28.处理引擎102用于向终端设备101的用户提供数据更新服务,终端设备101中安装有与处理引擎102通信的客户端,用户可通过该客户端获取通过数据库完成写入的数据。例如,与处理引擎102通信的客户端是游戏app,则用户可以通过该客户端获取目前的游戏等级。
29.数据存储系统103中存储有大量与用户相关的数据,例如用户的登录数据、购买装备的情况相关的数据以及用户的充值数据等等,具体的,登录数据又可以包括登入数据和登出数据;处理引擎102可基于写入的大量数据对游戏玩家相关的信息进行更新。
30.本技术实施例的数据更新方法可应用于数据的修改、数据的新增、数据类型的增加等场景。可基于不同的数据类型完成数据的增删改查,并根据获取到的数据进行更新,从而实现数据的入库。
31.下面结合图1的应用场景,来描述根据本技术示例性实施方式的数据更新方法。需要注意的是,上述应用场景仅是为了便于理解本技术的精神和原理而示出,本技术的实施
方式在此方面不受任何限制。相反,本技术的实施方式可以应用于适用的任何场景。
32.结合上述实际情况,本技术实施例提出了一种数据更新方案,通过预先配置的数据表对处理函数进行初始化,以使得处理函数继承数据表,从而使得当接收到数据表中有新的数据流时,根据接收到的数据流对处理函数进行数据更新,以此提供了一种可以随时更新数据,更新数据后不需要重启,且更新不容易出错的方案,有效的解决了编译jar报麻烦,更新容易出错的问题。
33.如图2所示,为本技术提出的一种数据更新方法的流程示意图,该方法具体包括:
34.步骤202,接收数据流;
35.步骤204,监测当前时刻与处理函数进程的最近历史初始化时刻之间的时间间隔;其中,所述处理函数进程至少用于根据从数据库的配置信息中获取的处理函数进程对应的初始化逻辑对所述处理函数进程进行初始化;所述处理函数进程的最近历史初始化时刻为距当前时刻最近一次成功对所述处理函数进程进行初始化的时刻;所述配置信息中包含所述处理函数进程对应的初始化逻辑;
36.步骤206,在监测到当前时刻与所述处理函数的最近历史初始化时刻之间的时间间隔不小于预设时间间隔阈值时,从所述数据库的配置信息中获取所述处理函数进程对应的当前初始化逻辑;
37.步骤208,利用所述当前初始化逻辑更新所述最近历史初始化逻辑,并通过所述当前初始化逻辑对所述处理函数进程进行初始化;
38.步骤210,通过以当前初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理。
39.在本技术中,数据处理引擎监测并接收来自数据库的数据流,当监测到有新的数据流时,计算数据引擎中任一数据处理函数最近一次更新的时间与收到数据流的时间的时间差,即,监测当前时刻与处理函数进程的最近历史初始化时刻之间的时间间隔,并根据当前时刻与处理函数进程的最近历史初始化时刻之间的时间间隔确定是否要根据监测到的新的数据流对处理函数进行更新。
40.在步骤202接收数据流之前,获取数据库中的初始配置信息,并根据从数据库的配置信息中获取的处理函数进程对应的初始化逻辑对所述处理函数进程进行初始化,完成初始化则设置状态为接收状态,若初始化失败,则数据处理引擎直接退出,并报错,即显示报错提示词,即可能提示是“无法初始化”等同类提示语。
41.在一些可选的实施方式中,对于处理函数的初始化,其中,数据处理引擎为flink引擎,处理函数为process函数,则处理函数的初始化为:首先,完成数据库中的数据表的配置;然后,启动flink引擎,完成启动后调用flink引擎中的process函数的初始化逻辑,完成初始化;最后,连接数据库,获取数据库中的数据表,并根据数据表完成对任一处理函数的初始化。
42.在一个可选的实施方式中,数据表的配置包括:首先将所有的有可能要进行增删改查的配置信息存储到数据表中;其中,数据表为数据库中的一个配置表,通过配置表完成对处理函数的初始化。具体的,数据库并不一定时sql数据库或者mysql数据库或者oracle数据库或者sqlite数据库可以根据具体情况具体设置;设置数据表的目的是为了通过数据表中记录的数据完成对处理函数的配置,因此数据表的形式也可以根据具体情况具体设
置,并不局限于一定的两列或三列、两行或者三行,因此数据表的形式可以不尽相同。
43.在一些实施方式中,将数据表设置为如下表1数据表所示的n行*2列的形式,其中,两列分别为名称列和具体事件列,名称列中的名称包括进程名称和该进程所对应的主要的处理事项的事件类型,即处理逻辑,具体事件列中为某一类型的事件所包含的具体事件。例如,如下表1所示,名称为process2_regex的则代表处理函数的标号为2,根据正则表达式(处理逻辑)进行处理,其中,process2代表进程2,regex代表正则表达式;而process2_regex对应的具体事件为^player(.*?)(\\w+)end$,则代表,根据正则表达式对^player(.*?)(\\w+)end$进行处理。
44.表1数据表
45.名称具体事件process1_filter_logs(行数名-变量名)[login,logout,buy]process2_regex^player(.*?)(\\w+)end$......
[0046]
在一些实施方式中,flink会有多个处理函数,而在flink程序刚刚启动时,会调动初始的process函数的初始化逻辑。
[0047]
进一步的,根据上述数据表,处理函数的初始化为根据处理函数进程对应的处理函数标识,从所述数据库的配置信息中获取处理函数进程对应的当前初始化逻辑。根据表1所示,处理函数2,即process2的处理逻辑为regex,则根据regex对应的^player(.*?)(\\w+)end$对处理函数2进行赋值,定义处理函数2的处理逻辑,完成赋值,则代表初始化完成,并开始接收数据流。
[0048]
在一些可选的实施方式中,只有当确定每个process函数完成初始化后,才开始接收数据流,对于每个process函数每接收到一条数据就获取一次当前系统时间current_time。
[0049]
在一个可选的实施方式中,当确定初始化失败时,所述flink引擎停止初始化并退出登录,同时通过发邮件的形式向开发人员报警,并恢复最近一次更新时生效的正确的配置。
[0050]
更进一步的,完成处理函数的初始化后,在根据接收到的数据流对完成初始化后的处理函数进行更新。
[0051]
在一个可选的实施方式中,一个flink应用(程序)会同时运行在多台计算机上(其中,“多台”可以是3台或5台或更多台),而一台计算机上可以运行一个进程也可以运行多个进程(其中,进程是操作系统分配资源的单位,所述的多个进程可以是2个也可以是2个以上的进程),每个进程又会有若干个线程,线程是调度的基本单位,线程之间共享同一进程的资源。在本实施方式中,若flink应用(程序)有5个进程,且5个进程同时分别运行在3台计算机上,其中任意两台计算机各运行有2个进程,另外一个运行有1个进程,而每个进程通过3个线程调度资源,则flink应用(程序)调用的处理函数由15个实例在同时运行,并且每一个实例都能各自独立的完成初始化和更新参数等操作。
[0052]
在一个可选的实施方式中,获取预先配置好的所述数据表中的配置信息,所述配置信息包括名称列和具体事件列,然后,从名称列中检索到与所述任一处理函数进行匹配;根据所述匹配结果对所述处理函数进行初始化。响应于确定任一所述处理函数的名称与所
述名称列中的任一名称匹配,根据与所述名称列中的任一名称中包含的事件类型对所述处理函数的处理类型进行配置;响应于确定所述名称列中没有与任一所述处理函数匹配的名称,所述初始化失败。在一个可选的实施方式中,例如处理函数的序号为1,即process1,当检测到数据表的名称列中的process1_filter_logs(行数名-变量名),则将process1_filter_logs(行数名-变量名)作为与process1的事项类型,并根据process1_filter_logs(行数名-变量名)对应的如表1所示的具体事项列中的[login,logout,buy]对process1进行初始化。若所述处理函数的序号为10,即process10,而数据表的名称列中并没有process10,则就代表初始化失败。
[0053]
在一个可选的实施方式中,初始化完成则设置该函数内的局部变量last_update="当前时间戳"。
[0054]
在一个可选的实施方式中,每接收到一条数据就获取一次最近一次的更新时间,并计算所述最近一次的更新时间和所述当前系统时间的时间间隔;然后根据时间间隔对处理函数进行更新。响应于确定间隔大于预设阈值,根据数据流对处理函数process进行更新;响应于确定时间间隔小于或等于预设阈值,不进行更新,继续接收新的数据流。
[0055]
在一个可选的实施方式中,根据所述时间差对所述处理函数进行更新可以描述为,对于process函数每接收到一条数据,就获取一次系统当前时间current_time,若current_time
–
last_update(最近一次更新的时间)》阈值threshold(比如threshold=30秒),则开始更新。在一些实时方式中,时间差的阈值可以根据具体情况具体设定,并不局限于本实施例中的30秒,可以是1分钟或2分钟或5分钟或10秒钟。
[0056]
在一个可选的实施方式中,current_time的获取是基于一条的数据的输入,只有当接收到数据时才获取当前的时间,若没有接收到数据,就不需要去获取当前的时间,可以有效的节约计算机的计算资源;因此,current_time
–
last_update的计算也是基于一条数据的输入,如果很长时间(比如几个小时)都没有数据流入,在这段时间就不用更新配置。本实施方式中的基于获取到数据的输入才获取当前的时间(current_time)相对于现有技术中的“额外建立定时任务来更新;不管有没有数据需要处理,都定期的更新”这种机械性很强的更新方式,本技术的更新方法是按需更新的可以有效的节约计算机的计算资源。
[0057]
在一个可选的实施方式中,若根据接收到的数据流对处理函数进行初始化失败,则恢复最近历史初始化逻辑初始化后的数据处理进程对数据流进行处理。
[0058]
从上面所述可以看出,本技术提供的一种数据更新方法、装置、电子设备及存储介质。其中,所述数据更新方法包括:通过数据表中的配置信息对与配置表中对应的处理函数进行初始化,使得处理函数通过配置表中的处理逻辑对接收到的数据流进行处理,响应于完成初始化,则接收数据流并根据配置表对数据流进行处理,其中,在本技术中通过修改配置表的方式完成对处理函数的处理逻辑进行修改,提供了一种可以随时更新数据,更新数据后不需要重启,且更新不容易出错的方案,有效的解决了编译jar报麻烦,更新容易出错的问题。进一步的,对于“接收数据流并根据配置表对数据流进行处理”在确定接收到数据流时,首先确定接收到数据流的时刻与处理函数的最近历史初始化时刻之间的时间间隔,根据时间间隔确定是否对处理函数的处理逻辑进行更新,使用新的处理逻辑对接收到的数据流进行处理,本技术基于获取到数据的输入才获取当前的时间(current_time)相对于现有技术中的“额外建立定时任务来更新;不管有没有数据需要处理,都定期的更新”这种机
械性很强的更新方式,从而实现了更加有效的节约计算机的计算资源。
[0059]
需要说明的是,本技术实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本技术实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本技术实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
[0060]
需要说明的是,上述对本技术特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0061]
基于同一构思,与上述任意实施例方法相对应的,本技术还提供了一种数据更新装置。
[0062]
参考图3,所述数据更新装置,应用于与数据库通信连接的数据处理引擎,所述数据处理引擎包含至少一个数据处理函数,包括:
[0063]
接收模块302,被配置为接收数据流;
[0064]
第一监测模块304,被配置为监测当前时刻与处理函数进程的最近历史初始化时刻之间的时间间隔;其中,所述处理函数进程至少用于根据从数据库的配置信息中获取的处理函数进程对应的初始化逻辑对所述处理函数进程进行初始化;所述处理函数进程的最近历史初始化时刻为距当前时刻最近一次成功对所述处理函数进程进行初始化的时刻;所述配置信息中包含所述处理函数进程对应的初始化逻辑;
[0065]
第二监测模块306,被配置为在监测到当前时刻与所述处理函数的最近历史初始化时刻之间的时间间隔不小于预设时间间隔阈值时,从所述数据库的配置信息中获取所述处理函数进程对应的当前初始化逻辑;
[0066]
初始化模块308,被配置为利用所述当前初始化逻辑更新所述最近历史初始化逻辑,并通过所述当前初始化逻辑对所述处理函数进程进行初始化;
[0067]
处理模块310,被配置为通过以当前初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理。
[0068]
在一个可选的示例性实施例中,所述第一监测模块304,中所述配置信息还包括处理函数进程对应的处理函数标识,所述从所述数据库的配置信息中获取所述处理函数进程对应的当前初始化逻辑,包括:
[0069]
根据所述处理函数进程对应的处理函数标识,从所述数据库的配置信息中获取所述处理函数进程对应的当前初始化逻辑。
[0070]
在一个可选的示例性实施例中,所述第一监测模块304,中所述配置信息还包括处理函数进程的初始化参数,通过所述当前初始化逻辑对所述处理函数进程进行初始化,包括:
[0071]
根据所述当前初始化逻辑对所述处理函数进程的初始化参数进行赋值,以对所述处理函数进程进行初始化;
[0072]
通过以当前初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理,包括:
[0073]
通过以当前初始化逻辑初始化后的所述数据处理进程中初始化参数的赋值对所述数据流进行处理。
[0074]
在一个可选的示例性实施例中,所述第一监测模块304,还包括:
[0075]
根据预设初始化逻辑对所述处理函数进程进行首次初始化;
[0076]
响应于确定所述首次初始化成功,接收所述数据流;
[0077]
响应于确定所述首次初始化失败,所述处理引擎退出登录。
[0078]
在一个可选的示例性实施例中,所述第一监测模块304,还包括:
[0079]
响应于接收到所述数据流,将接收到所述数据流的时刻作为所述当前时刻;
[0080]
根据最近历史初始化时刻,确定接收所述数据流的当前时刻与所述最近历史初始化时刻的时间间隔。
[0081]
在一个可选的示例性实施例中,所述第二监测模块306,还包括:
[0082]
在监测到当前时刻与所述处理函数的最近历史初始化时刻之间的时间间隔小于预设时间间隔阈值时,通过所述最近历史初始化逻辑对所述处理函数进程进行初始化;
[0083]
通过以所述最近历史初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理。
[0084]
在一个可选的示例性实施例中,所述初始化模块308,包括:
[0085]
将所述当前初始化逻辑更新为所述处理函数进程的所述最近历史初始化逻辑;
[0086]
将所述当前初始化逻辑的更新所述处理函数进程的时刻,作为所述最近历史初始化时刻。
[0087]
在一个可选的示例性实施例中,所述初始化模块308,还包括:
[0088]
响应于确定初始化失败,恢复最近历史初始化逻辑,并通过恢复的最近历史初始化逻辑对所述处理函数进程进行初始化;
[0089]
通过以恢复的最近历史初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理。
[0090]
为了描述的方便,描述以上设备时以功能分为各种模块分别描述。当然,在实施本技术实施例时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
[0091]
上述实施例的设备用于实现前述实施例中相应的数据更新方法,具体的,所述数据更新方法通过数据表中的配置信息对与配置表中对应的处理函数进行初始化,使得处理函数通过配置表中的处理逻辑对接收到的数据流进行处理,响应于完成初始化,则接收数据流并根据配置表对数据流进行处理,其中,在本技术中通过修改配置表的方式完成对处理函数的处理逻辑进行修改,提供了一种可以随时更新数据,更新数据后不需要重启,且更新不容易出错的方案,有效的解决了编译jar报麻烦,更新容易出错的问题。进一步的,对于“接收数据流并根据配置表对数据流进行处理”在确定接收到数据流时,首先确定接收到数据流的时刻与处理函数的最近历史初始化时刻之间的时间间隔,根据时间间隔确定是否对处理函数的处理逻辑进行更新,使用新的处理逻辑对接收到的数据流进行处理,本技术基于获取到数据的输入才获取当前的时间(current_time)相对于现有技术中的“额外建立定时任务来更新;不管有没有数据需要处理,都定期的更新”这种机械性很强的更新方式,从而实现了更加有效的节约计算机的计算资源。
[0092]
基于同一构思,与上述任意实施例方法相对应的,本技术还提供了一种电子设备,
包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的数据更新方法。
[0093]
图3示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
[0094]
处理器1010可以采用通用的cpu(central processing unit,中央处理器)、微处理器、应用专用集成电路(application specific integrated circuit,asic)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
[0095]
具体的,数据处理方法,应用于与数据库通信连接的数据处理引擎,所述数据处理引擎包含至少一个数据处理函数,包括:
[0096]
接收数据流;
[0097]
监测当前时刻与处理函数进程的最近历史初始化时刻之间的时间间隔;其中,所述处理函数进程至少用于根据从数据库的配置信息中获取的处理函数进程对应的初始化逻辑对所述处理函数进程进行初始化;所述处理函数进程的最近历史初始化时刻为距当前时刻最近一次成功对所述处理函数进程进行初始化的时刻;所述配置信息中包含所述处理函数进程对应的初始化逻辑;
[0098]
在监测到当前时刻与所述处理函数的最近历史初始化时刻之间的时间间隔不小于预设时间间隔阈值时,从所述数据库的配置信息中获取所述处理函数进程对应的当前初始化逻辑;
[0099]
利用所述当前初始化逻辑更新所述最近历史初始化逻辑,并通过所述当前初始化逻辑对所述处理函数进程进行初始化;
[0100]
通过以当前初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理。
[0101]
在一些实施方式中,所述配置信息还包括处理函数进程对应的处理函数标识,所述从所述数据库的配置信息中获取所述处理函数进程对应的当前初始化逻辑,包括:
[0102]
根据所述处理函数进程对应的处理函数标识,从所述数据库的配置信息中获取所述处理函数进程对应的当前初始化逻辑。
[0103]
在一些实施方式中,所述配置信息还包括处理函数进程的初始化参数,通过所述当前初始化逻辑对所述处理函数进程进行初始化,包括:
[0104]
根据所述当前初始化逻辑对所述处理函数进程的初始化参数进行赋值,以对所述处理函数进程进行初始化;
[0105]
通过以当前初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理,包括:
[0106]
通过以当前初始化逻辑初始化后的所述数据处理进程中初始化参数的赋值对所述数据流进行处理。
[0107]
在一些实施方式中,所述接收数据流之前,还包括:
[0108]
根据预设初始化逻辑对所述处理函数进程进行首次初始化;
[0109]
响应于确定所述首次初始化成功,接收所述数据流;
[0110]
响应于确定所述首次初始化失败,所述处理引擎退出登录。
[0111]
在一些实施方式中,所述监测当前时刻与处理函数进程的最近历史初始化时刻之间的时间间隔,包括:
[0112]
响应于接收到所述数据流,将接收到所述数据流的时刻作为所述当前时刻;
[0113]
根据最近历史初始化时刻,确定接收所述数据流的当前时刻与所述最近历史初始化时刻的时间间隔。
[0114]
在一些实施方式中,所述方法,还包括:
[0115]
在监测到当前时刻与所述处理函数的最近历史初始化时刻之间的时间间隔小于预设时间间隔阈值时,通过所述最近历史初始化逻辑对所述处理函数进程进行初始化;
[0116]
通过以所述最近历史初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理。
[0117]
在一些实施方式中,通过如下方法更新所述最近历史初始化逻辑和最近历史初始化时刻,包括:
[0118]
将所述当前初始化逻辑更新为所述处理函数进程的所述最近历史初始化逻辑;
[0119]
将所述当前初始化逻辑的更新所述处理函数进程的时刻,作为所述最近历史初始化时刻。
[0120]
在一些实施方式中,所述方法还包括:
[0121]
响应于确定初始化失败,恢复最近历史初始化逻辑,并通过恢复的最近历史初始化逻辑对所述处理函数进程进行初始化;
[0122]
通过以恢复的最近历史初始化逻辑初始化后的所述数据处理进程对所述数据流进行处理。
[0123]
存储器1020可以采用rom(read only memory,只读存储器)、ram(random access memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
[0124]
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
[0125]
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如usb、网线等)实现通信,也可以通过无线方式(例如移动网络、wifi、蓝牙等)实现通信。
[0126]
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
[0127]
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
[0128]
上述实施例的电子设备用于实现前述任一实施例中相应的数据更新方法,具体
的,所述数据更新方法通过数据表中的配置信息对与配置表中对应的处理函数进行初始化,使得处理函数通过配置表中的处理逻辑对接收到的数据流进行处理,响应于完成初始化,则接收数据流并根据配置表对数据流进行处理,其中,在本技术中通过修改配置表的方式完成对处理函数的处理逻辑进行修改,提供了一种可以随时更新数据,更新数据后不需要重启,且更新不容易出错的方案,有效的解决了编译jar报麻烦,更新容易出错的问题。进一步的,对于“接收数据流并根据配置表对数据流进行处理”在确定接收到数据流时,首先确定接收到数据流的时刻与处理函数的最近历史初始化时刻之间的时间间隔,根据时间间隔确定是否对处理函数的处理逻辑进行更新,使用新的处理逻辑对接收到的数据流进行处理,本技术基于获取到数据的输入才获取当前的时间(current_time)相对于现有技术中的“额外建立定时任务来更新;不管有没有数据需要处理,都定期的更新”这种机械性很强的更新方式,从而实现了更加有效的节约计算机的计算资源。
[0129]
基于同一构思,与上述任意实施例方法相对应的,本技术还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的数据更新方法。
[0130]
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
[0131]
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的数据更新方法,具体的,所述数据更新方法通过数据表中的配置信息对与配置表中对应的处理函数进行初始化,使得处理函数通过配置表中的处理逻辑对接收到的数据流进行处理,响应于完成初始化,则接收数据流并根据配置表对数据流进行处理,其中,在本技术中通过修改配置表的方式完成对处理函数的处理逻辑进行修改,提供了一种可以随时更新数据,更新数据后不需要重启,且更新不容易出错的方案,有效的解决了编译jar报麻烦,更新容易出错的问题。进一步的,对于“接收数据流并根据配置表对数据流进行处理”在确定接收到数据流时,首先确定接收到数据流的时刻与处理函数的最近历史初始化时刻之间的时间间隔,根据时间间隔确定是否对处理函数的处理逻辑进行更新,使用新的处理逻辑对接收到的数据流进行处理,本技术基于获取到数据的输入才获取当前的时间(current_time)相对于现有技术中的“额外建立定时任务来更新;不管有没有数据需要处理,都定期的更新”这种机械性很强的更新方式,从而实现了更加有效的节约计算机的计算资源。
[0132]
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本技术的范围(包括权利要求)被限于这些例子;在本技术的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本技术实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0133]
另外,为简化说明和讨论,并且为了不会使本技术实施例难以理解,在所提供的附
图中可以示出或可以不示出与集成电路(ic)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本技术实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本技术实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本技术的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本技术实施例。因此,这些描述应被认为是说明性的而不是限制性的。
[0134]
尽管已经结合了本技术的具体实施例对本技术进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态ram(dram))可以使用所讨论的实施例。
[0135]
本技术实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本技术实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本技术的保护范围之内。