CN111338668A - 用于实时计算中的代码升级的方法及装置 - Google Patents
用于实时计算中的代码升级的方法及装置 Download PDFInfo
- Publication number
- CN111338668A CN111338668A CN202010092831.1A CN202010092831A CN111338668A CN 111338668 A CN111338668 A CN 111338668A CN 202010092831 A CN202010092831 A CN 202010092831A CN 111338668 A CN111338668 A CN 111338668A
- Authority
- CN
- China
- Prior art keywords
- task
- processing
- code
- data
- backup
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供了一种用于实时计算中的代码升级的方法及装置,方法包括:在接收到当前运行代码的代码升级指令后获取当前运行代码的升级代码,触发处理内核运行升级代码,以启动备份任务来按照版本顺序调用数据库中的数据进行处理,监测主任务和备份任务的处理数据版本,并在主任务和备份任务的处理数据版本相同时,使得处理内核停止主任务,并使得处理内核将备份任务作为新的主任务来继续针对数据库进行实时计算。利用该方法进行代码升级,每个时刻均有实时计算的任务在运行,且运行的任务针对数据库进行实时计算,进而保证了实时计算的实时性。
Description
技术领域
本说明书涉及实时计算技术领域,具体地,涉及用于实时计算中的代码升级的方法及装置。
背景技术
实时计算是一种能够实时反馈计算结果的计算,实时计算强调实时性,具备低延时的特点。基于此,在各种应用场景尤其是预警、在线服务等强调实时性的场景中实时计算被广泛应用。
实时计算的任务是基于代码运行所生成的。为了提升实时计算的计算能力进而缩短数据处理的延时,需要不定期地对实时计算的代码进行升级处理。目前,代码升级的方式是将当前运行的实时计算停掉,并重启实时计算***,在重启过程中调用并运行新的升级代码以启动升级后的新的实时计算任务,新的实时计算任务在启动完成后,开始对数据库中的数据进行实时处理。
发明内容
鉴于上述,本说明书提供了一种用于实时计算中的代码升级的方法及装置。本说明书一个实施例实现了:在接收到代码升级指令后触发运行升级代码以启动备份任务来按照版本顺序调用数据库中的数据进行处理,在此过程中不会停止当前运行的主任务,主任务继续按照版本顺序调用数据库中的数据进行处理。主任务和备份任务同时运行阶段,监测主任务和备份任务的处理数据版本,在主任务和备份任务的处理数据版本相同时停止主任务,并将备份任务作为新的主任务来继续针对数据库进行实时计算。在上述代码升级过程中,每个时刻均有实时计算的任务在运行,且运行的任务针对数据库进行实时计算,进而保证了实时计算的实时性。
根据本说明书的一个方面,提供了一种用于实时计算中的代码升级的方法,包括:在接收到当前运行代码的代码升级指令后,获取所述当前运行代码的升级代码,所述当前运行代码的主任务用于针对数据库进行实时计算,所述数据库具有多版本数据存储能力,所述主任务调用所述数据库中的对应版本数据来进行处理;触发处理内核运行所述升级代码,以启动备份任务来按照版本顺序调用所述数据库中的数据进行处理,所述备份任务所调用的数据的起始版本被设置为不晚于所述主任务在接收到所述代码升级指令时所处理的数据版本;监测所述主任务和所述备份任务的当前处理数据版本是否相同;以及在所述主任务和所述备份任务的当前处理数据版本相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算。
可选地,在上述方面的一个示例中,还包括:监测所述主任务和所述备份任务的当前数据处理进度是否相同;以及在所述主任务和所述备份任务的当前处理数据版本相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算包括:在所述主任务和所述备份任务的当前处理数据版本和当前数据处理进度都相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算。
可选地,在上述方面的一个示例中,根据以下方式中的至少一种来确定所述主任务和所述备份任务的数据处理进度相同:针对属于相同的处理数据版本的相同数据,所述备份任务的结束处理时间点与所述主任务的结束处理时间点之间的时间差在第一数值范围内;和针对属于相同的处理数据版本的相同数据,在处理该相同数据的过程中,所述备份任务和所述主任务所处的处理阶段相同。
可选地,在上述方面的一个示例中,根据以下方式来确定所述主任务和所述备份任务的处理数据版本相同:所述备份任务针对已处理数据版本所对应数据的结束处理时间点与所述主任务针对该已处理数据版本所对应数据的结束处理时间点的时间差值在第二数值范围内。
可选地,在上述方面的一个示例中,触发处理内核运行所述升级代码包括:安装所述升级代码,将安装后的升级代码加载至所述处理内核的执行环境中,并触发所述处理内核来运行所述升级代码;或者触发代码安装装置来安装所述升级代码并将安装后的升级代码加载至所述处理内核的执行环境中,并使得所述处理内核运行所述升级代码。
可选地,在上述方面的一个示例中,所述数据库包括HBase或者Kudu。
可选地,在上述方面的一个示例中,还包括:将所述主任务和所述备份任务的处理结果同步至搜索引擎。
可选地,在上述方面的一个示例中,所述搜索引擎对所述主任务和所述备份任务的处理结果进行去重处理。
根据本说明书的另一方面,还提供一种用于实时计算中的代码升级的装置,包括:升级代码获取单元在接收到当前运行代码的代码升级指令后,获取所述当前运行代码的升级代码,所述当前运行代码的主任务用于针对数据库进行实时计算,所述数据库具有多版本数据存储能力,所述主任务调用所述数据库中的对应版本数据来进行处理;代码运行触发单元触发处理内核运行所述升级代码,以启动备份任务来按照版本顺序调用所述数据库中的数据进行处理,所述备份任务所调用的数据的起始版本被设置为不晚于所述主任务在接收到所述代码升级指令时所处理的数据版本;任务监测单元监测所述主任务和所述备份任务的当前处理数据版本是否相同;以及任务切换单元在所述主任务和所述备份任务的当前处理数据版本相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算。
可选地,在上述方面的一个示例中,所述任务监测单元进一步:监测所述主任务和所述备份任务的当前数据处理进度;以及所述任务切换单元进一步:在所述主任务和所述备份任务的当前处理数据版本和当前数据处理进度都相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算。
可选地,在上述方面的一个示例中,所述代码运行触发单元进一步:安装所述升级代码,将安装后的升级代码加载至所述处理内核的执行环境中,并触发所述处理内核来运行所述升级代码;或者触发代码安装装置来安装所述升级代码并将安装后的升级代码加载至所述处理内核的执行环境中,并使得所述处理内核运行所述升级代码。
可选地,在上述方面的一个示例中,所述数据库包括HBase或者Kudu。
可选地,在上述方面的一个示例中,还包括:处理结果同步单元将所述主任务和所述备份任务的处理结果同步至搜索引擎。
根据本说明书的另一方面,还提供一种计算设备,包括:至少一个处理器;以及存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如上所述的用于实时计算中的代码升级的方法。
根据本说明书的另一方面,还提供一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如上所述的用于实时计算中的代码升级的方法。
附图说明
通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。附图是用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本说明书的实施例,但并不构成对本说明书的实施例的限制。在附图中:
图1示出了现有技术中的代码升级方式包括的各个阶段的示意图;
图2示出了本说明书的实施例的用于实时计算中的代码升级的方法的流程图;
图3示出了本说明书的实施例的具有多版本数据存储能力的数据库的一个示例的示意图;
图4示出了本说明书的实施例的监测主任务和备份任务的处理数据版本的一个示例的示意图;
图5示出了本说明书的监测主任务和备份任务的处理数据版本和数据处理进度的一个示例的示意图;
图6示出了本说明书的实施例的用于实时计算中的代码升级的装置的方框图;和
图7是根据本说明书实施例的用于实时计算中的代码升级的方法的计算设备的方框图。
具体实施方式
以下将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
在本说明书中,术语“数据版本”是指数据库中的数据对应的时间戳,数据对应的时间戳不同,则版本不同。
在本说明书中,术语“数据处理进度”是指针对一个版本中的数据的处理进度。
实时计算任务是基于代码运行所生成的。为了提升实时计算的计算能力进而缩短数据处理的延时,需要不定期地对实时计算的代码进行升级处理。目前,代码升级的方式是停止当前运行的实时计算任务,然后重启实时计算***以运行升级代码来启动升级后的新的实时计算任务。
图1示出了现有技术中的代码升级方式包括的各个阶段的示意图。如图1所示,t1时刻表示接收到升级指令,t2时刻表示代码升级结束。则在t1时刻之前的阶段为代码升级之前,在t1时刻至t2时刻之间的阶段为代码升级过程,在t2时刻之后的阶段为代码升级之后。
在t1时刻之前的代码升级前,运行的实时计算任务是基于运行待升级的代码所生成的,该实时计算任务对数据库中的数据进行实时处理。
在达到t1时刻时,接收到升级指令,此时将当前运行的实时计算任务(即图1中的原实时计算任务)停止,并开始执行代码升级的操作。
在t1时刻至t2时刻的代码升级过程中,对实时计算***进行重启操作,在重启过程中调用新的升级代码并运行该升级代码,以启动升级后的新的实时计算任务,直至t2时刻。
在t2时刻,新的实时计算任务启动完成并开始执行,表示代码升级过程结束。
在t2时刻的代码升级后,运行的新的实时计算任务对数据库中的数据进行实时处理,该新的实时计算任务是基于运行升级代码所生成的。
然而,在上述图1示出的整个过程中,仅仅在代码升级前和代码升级后两个阶段才存在实时计算任务对数据库中的数据进行处理,而在代码升级过程中是没有实时计算任务运行的,也就不能及时地对这个阶段写入数据库的数据进行处理,影响这些数据处理的实时性,并且还会影响后续写入的数据处理的实时性。
为了解决上述问题,本说明书提供了一种用于实时计算中的代码升级的方法及装置。本说明书的实施例实现了:在接收到代码升级指令后触发运行升级代码以启动备份任务来按照版本顺序调用数据库中的数据进行处理,在此过程中不会停止当前运行的主任务,主任务继续按照版本顺序调用数据库中的数据进行处理。主任务和备份任务同时运行阶段,监测主任务和备份任务的处理数据版本,在主任务和备份任务的处理数据版本相同时停止主任务,并将备份任务作为新的主任务来继续针对数据库进行实时计算。在上述代码升级过程中,每个时刻均有实时计算的任务在运行,且运行的任务针对数据库进行实时计算,进而保证了实时计算的实时性。
下面将结合附图来详细描述根据本说明书实施例的用于实时计算中的代码升级的方法及装置。
图2示出了本说明书的实施例的用于实时计算中的代码升级的方法的流程图。
本说明书提供的用于实时计算中的代码升级的方法可以应用于代码升级中心,代码升级中心可以是具备代码升级功能的装置或者***。代码升级中心可以用于对当前运行的代码进行升级操作,即,使得当前运行的代码停止运行,并使得该代码的升级代码开始运行。
如图2所示,在210,在接收到当前运行代码的代码升级指令后,获取当前运行代码的升级代码。
在本说明书中,代码升级指令用于指示对代码进行升级操作,代码升级指令中可以携带待升级的代码的标识,用以确定进行升级操作的代码。例如,本说明书中当前运行代码的标识为12,则接收到的代码升级指令中的一个字段中所包含的信息为12。
代码升级指令可以是工作人员通过管理后台发送的,还可以是管理后台检测到当前运行代码的升级代码后发送的。
在本说明书中,当前运行代码和升级代码可以存储在本地,此时从本地获取当前运行代码的升级代码。还可以存储在其他存储设备中,例如,用于存储代码的OSS(ObjectStorage Service,对象存储),此时则从OSS中获取当前运行代码的升级代码。
运行一个代码即执行一个任务,当前运行代码的任务是该代码在运行时所执行的任务。在本说明书中,当前运行代码的任务是主任务,主任务是对数据库进行实时计算。
在本说明书中,数据库中存储的数据包括待处理的数据,当有需要处理的数据时,运行的任务可以将需要处理的数据写入数据库中,后续运行的任务再从数据库中读取数据以进行处理。
数据库具有多版本数据存储能力,即数据库可以存储多个不同版本的数据。数据的版本是指该数据对应的时间戳,数据对应的时间戳可以是该数据写入数据库的时间点,还可以是指定的时间点。在本说明书中,数据版本可以作为任务进行实时计算的消费位点,用来指示实时计算的任务当前处理的数据的位置。
图3示出了本说明书的实施例的具有多版本数据存储能力的数据库的一个示例的示意图。如图3所示,数据库包括针对数据A的五个版本和针对数据B的五个版本。每个版本的数据对应有一个时间戳,比如,版本为8:00:00的数据A表示该数据A写入数据库的时间是8点整。本说明书中以一条数据(比如数据A)为例进行说明。
在数据库中针对同一数据有多个版本时,该多个版本可以按照时间的倒序进行排列,即最新版本的数据排在前面。这样当需要对该数据进行处理时,从数据库中读取的该数据的版本为该数据的最新版本。
以图3为例,数据A为商品的价格,8:00:00的价格为1元,8:05:00的价格为2元,8:10:00的价格为3元,8:15:00的价格为4元,8:20:00的价格为5元。当需要对数据A进行处理时,则从数据库中所读取的数据A的价格为5元。
在本说明书的一个示例中,数据库可以包括HBase或者Kudu,当然,还可以包括具有多版本数据存储能力的其他数据库。本说明书实施例以HBase为例进行说明。
在本说明书中,基于数据库的多版本数据存储能力,主任务可以调用数据库中的对应版本数据来处理。在一个示例中,数据库中可以按照时间戳的顺序对数据进行存储,主任务按照时间戳的顺序依次进行数据处理。
以图3中的数据A为例,数据库中按照时间戳从早到晚的顺序依次存储各个版本的数据A,主任务按照时间戳从早到晚的顺序依次对数据A进行处理。
在220,触发处理内核运行升级代码,以启动备份任务来按照版本顺序调用所述数据库中的数据进行处理。
在本说明书中,处理内核用于启动并运行代码。在一个示例中,代码升级中心与处理内核通信连接,在获取到升级代码后,代码升级中心向处理内核发送代码运行指令来触发处理内核运行升级代码。在一个示例中,代码升级中心和处理内核可以属于同一个***或设备,还可以是分别属于不同的***的或设备。
在本说明书中,版本顺序为时间戳的顺序,即,备份任务按照时间戳从早到晚的顺序来依次调用数据库中的数据进行处理。备份任务调用数据所依据的版本顺序与主任务所依据的版本顺序相同。
在本说明书中,备份任务的起始版本是指备份任务启动后调用的第一个数据的版本。以图3中的数据A为例,若确定8:05:00为起始版本,则备份任务以8:05:00的数据A作为开始调用并处理的第一个数据,然后调用8:10:00的数据A进行处理,以此顺序依次调用并进行处理。
备份任务所调用的数据的起始版本被设置为不晚于主任务在接收到代码升级指令时所处理的数据版本。在一个示例中,备份任务所调用的数据的起始版本可以是主任务在接收到代码升级指令时所处理的数据版本。以图3中的数据A为例,当接收到代码升级指令时,主任务当前所处理的数据版本为8:15:00,则可以将8:15:00确定为备份任务的起始版本。
在另一个示例中,备份任务所调用的数据的起始版本可以被设置为早于主任务在接收到代码升级指令时所处理的数据版本。起始版本可以是早于主任务在接收到代码升级指令时所处理的数据版本中的指定版本。以图3中的数据A为例,当接收到代码升级指令时,主任务处理的数据版本为8:15:00,早于该数据版本的版本有8:00:00、8:05:00和8:10:00,则可以将8:05:00确定为备份任务的起始版本。
在本说明书的一个示例中,在获取到升级代码后,在本地安装升级代码,将安装后的升级代码加载至处理内核的执行环境中,然后触发处理内核来运行升级代码。
在本说明书的另一个示例中,安装升级代码的操作由第三方装置(比如,代码安装装置)来执行。在获取到升级代码后,可以触发代码安装装置来安装升级代码并将安装后的升级代码加载至处理内核的执行环境中,并使得处理内核运行升级代码。在一个示例中,触发的方式可以是向代码安装装置发送代码安装指令,该代码安装指令可以携带升级代码的标识以及存储位置信息等。在另一个示例中,触发的方式可以是将升级代码发送给代码安装装置,代码安装装置在接收到升级代码后进行安装。
在230,监测主任务和备份任务的当前处理数据版本。
在本说明书中,主任务和备份任务同时运行的阶段,备份任务的处理数据版本会早于主任务的处理数据版本,直至备份任务和主任务的处理数据版本相同。在此过程中,一个示例中,可以实时对主任务和备份任务的处理数据版本进行监测,在该示例中,代码升级中心可以直接监测主任务和备份任务的处理数据版本以及处理数据版本的变化。另一个示例中,可以是处理内核将主任务和备份任务的处理数据版本发送给代码升级中心,代码升级中心再确定所接收到的主任务和备份任务的处理数据版本是否相同。
在本说明书中,备份任务的处理能力比主任务的处理能力强,比如,备份任务的CPU资源、机器数量等资源比主任务多。这样,针对同一版本的相同数据,备份任务的处理时间比主任务的处理时间少。基于此,在主任务和备份任务同时运行的过程中,备份任务的处理速度比主任务的处理速度快,最终备份任务会追赶上主任务,即备份任务的处理数据版本与主任务的处理数据版本相同。
图4示出了本说明书的实施例的监测主任务和备份任务的处理数据版本的一个示例的示意图。如图4所示,备份任务的起始版本是8:00:00,此时主任务的处理数据版本是8:10:00。然后,主任务和备份任务均按照版本顺序方向(即图4中箭头所示方向)依次进行处理,在此过程中对主任务和备份任务的处理数据版本进行监测,比如,当监测到主任务的处理数据版本为8:15:00时,备份任务的处理数据版本为8:10:00,直至主任务和备份任务的处理数据版本相同,均为8:20:00。
在240,判断主任务和备份任务的当前处理数据版本是否相同。如果不相同,则流程返回到块230,继续监测主任务和备份任务的处理数据版本。如果相同,则流程进行到块250。
在本说明书的一个示例中,可以根据以下方式来确定主任务和备份任务的当前处理数据版本相同。
备份任务针对已处理数据版本所对应数据的结束处理时间点与主任务针对该已处理数据版本所对应数据的结束处理时间点的时间差值在第二数值范围内。
在该示例中,已处理数据版本是已处理完成的数据对应的版本。针对同一数据版本,备份任务与主任务的处理时间相同或相近。第二数值范围可以是指定的。例如,第二数值范围为2秒,数据版本为8:00:00的数据包括有数据A和数据B,针对该数据版本所对应的数据的处理,监测到备份任务的结束处理时间点为8:00:05,主任务的结束处理时间点为8:00:06,则两个结束处理时间点的差值为1秒,在2秒的范围内,则可以确定此时确定主任务和备份任务的当前处理数据版本相同。
当然,除了上述方式以外,还可以通过其他的方式来确定主任务和备份任务的当前处理数据版本是否相同。例如,可以直接检测主任务和备份任务各自的当前处理数据版本是否相同。
在本说明书的一个示例中,在上述块230所执行的操作的基础上,还可以监测主任务和备份任务的数据处理进度。一个数据处理进度是针对一个版本来说的,当处理一个版本的数据时,所监测的数据处理进度为该版本的数据的处理进度。以图3为例,当主任务的处理数据版本是8:00:00时,所监测的主任务的数据处理进度是针对8:00:00的处理进度。
监测主任务和备份任务的当前处理数据版本和当前数据处理进度,并判断主任务和备份任务的处理数据版本和数据处理进度是否都相同。在主任务和备份任务的当前处理数据版本和当前数据处理进度都相同时,流程进行到块250。
图5示出了本说明书的监测主任务和备份任务的处理数据版本和数据处理进度的一个示例的示意图。如图5所示,针对数据A的处理包括四个阶段,备份任务的起始版本的数据是8:00:00的数据A,此时主任务所处理的数据是8:10:00的数据A,直至在8:20:30备份任务开始处理8:20:00的数据A,此时,主任务对8:20:00的数据A的数据处理进度为第二阶段结束。在8:20:40时,备份任务和主任务针对8:20:00的数据A的数据处理进度相同,均为第三阶段结束,此时主任务和备份任务的处理数据版本和数据处理进度都相同。
本说明书中的上述示例实现了:使用处理数据版本和数据处理进度两个因素可以更加精确地判断出主任务和备份任务是否达到同步,进而可以准确地得到主任务和备份任务达到同步的时间点,并在该时间点进行主任务和备份任务切换,可以减少甚至避免出现延迟处理的数据。
在本说明书的一个示例中,根据以下方式中的至少一种来确定主任务和备份任务的数据处理进度相同。
第一种方式,针对属于相同的处理数据版本的相同数据,备份任务的结束处理时间点与主任务的结束处理时间点之间的时间差在第一数值范围内。
在该第一种方式中,第一数值范围可以是指定的。例如,版本8:20:00的数据A的处理过程包括四个阶段,当备份任务和主任务处理8:20:00的数据A时的结束处理时间点均为8:20:05,则可以确定主任务和备份任务的数据处理进度相同。
第二种方式,针对属于相同的处理数据版本的相同数据,在处理该相同数据的过程中,备份任务和主任务所处的处理阶段相同。
在上述方式中,对于每一数据的处理过程可以分为多个阶段。在一种示例中,在每个阶段完成后会反馈相应的信息。基于此,备份任务和主任务反馈相同信息,并且该相同信息的反馈时间差在指定数值范围内时,备份任务和主任务所处的处理阶段相同。
例如,针对8:15:00的数据A,备份任务在8:15:05反馈表示第一阶段完成的信息a,主任务在8:15:07反馈该信息a,则可以确定此时主任务和备份任务的数据处理进度相同,均处于第一阶段完成。
在块250,使得处理内核停止主任务,并使得处理内核将备份任务作为新的主任务来继续针对数据库进行实时计算。
以图3为例,当监测到主任务和备份任务的处理数据版本均为8:10:00时,主任务停止,备份任务作为新的主任务继续处理8:10:00的数据A,直至8:10:00的数据A处理完成,然后依次对8:15:00的数据A和8:20:00的数据A进行实时计算。
在本说明书的一个示例中,在确定主任务停止后,可以将该主任务的代码删除,以节省存储空间。
在本说明书的一个示例中,在得到主任务和备份任务的处理结果后,可以将主任务和备份任务的处理结果同步至搜索引擎。在该示例中,数据库中可以包括搜索引擎中索引对应的数据。
在本说明书的一个示例中,当主任务和备份任务的处理结果是针对相同数据的处理结果时,搜索引擎可以对主任务和备份任务的处理结果进行去重处理,仅保留其中的一个处理结果。
图6示出了本说明书的实施例的用于实时计算中的代码升级的装置(在下文中简称为代码升级装置)600的方框图。如图6所示,代码升级装置600包括升级代码获取单元610,代码运行触发单元620,任务监测单元630和任务切换单元640。
升级代码获取单元610在接收到当前运行代码的代码升级指令后,获取当前运行代码的升级代码,当前运行代码的主任务用于针对数据库进行实时计算,数据库具有多版本数据存储能力,主任务调用数据库中的对应版本数据来进行处理。在本说明书的一个示例中,数据库包括HBase或者Kudu。
代码运行触发单元620触发处理内核运行升级代码,以启动备份任务来按照版本顺序调用数据库中的数据进行处理,备份任务所调用的数据的起始版本被设置为不晚于主任务在接收到代码升级指令时所处理的数据版本。在本说明书的一个示例中,代码运行触发单元620进一步:安装升级代码,将安装后的升级代码加载至处理内核的执行环境中,并触发处理内核来运行升级代码;或者触发代码安装装置来安装升级代码并将安装后的升级代码加载至处理内核的执行环境中,并使得处理内核运行升级代码。
任务监测单元630监测主任务和备份任务的当前处理数据版本是否相同。
任务切换单元640在主任务和备份任务的当前处理数据版本相同时,使得处理内核停止所述主任务,并使得处理内核将备份任务作为新的主任务来继续针对数据库进行实时计算。
在本说明书的一个示例中,任务监测单元630进一步可以监测主任务和备份任务的当前数据处理进度。任务切换单元640进一步:在主任务和备份任务的当前处理数据版本和当前数据处理进度都相同时,使得处理内核停止主任务,并使得处理内核将备份任务作为新的主任务来继续针对数据库进行实时计算。
在本说明书的一个示例中,代码升级装置600还可以包括处理结果同步单元,该处理结果同步单元将主任务和备份任务的处理结果同步至搜索引擎。
以上参照图1到图6,对根据本说明书的用于实时计算中的代码升级的方法及装置的实施例进行了描述。
本说明书的代码升级装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将存储器中对应的计算机程序指令读取到内存中运行形成的。在本说明书中,代码升级装置例如可以利用计算设备实现。
图7是根据本说明书实施例的用于实时计算中的代码升级的方法的计算设备700的方框图。
如图7所示,计算设备700可以包括至少一个处理器710、存储器(例如,非易失性存储器)720、内存730和通信接口740,并且至少一个处理器710、存储器720、内存730和通信接口740经由总线760连接在一起。至少一个处理器710执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器710:在接收到当前运行代码的代码升级指令后,获取当前运行代码的升级代码,当前运行代码的主任务用于针对数据库进行实时计算,数据库具有多版本数据存储能力,主任务调用数据库中的对应版本数据来进行处理;触发处理内核运行升级代码,以启动备份任务来按照版本顺序调用数据库中的数据进行处理,备份任务所调用的数据的起始版本被设置为不晚于主任务在接收到代码升级指令时所处理的数据版本;监测主任务和备份任务的当前处理数据版本是否相同;以及在主任务和备份任务的当前处理数据版本相同时,使得处理内核停止主任务,并使得处理内核将备份任务作为新的主任务来继续针对数据库进行实时计算。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器710进行本说明书的各个实施例中以上结合图2-6描述的各种操作和功能。
根据一个实施例,提供了一种例如机器可读介质的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图2-6描述的各种操作和功能。
具体地,可以提供配有可读存储介质的***或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该***或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
上述各流程和各***结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
以上结合附图详细描述了本说明书的实施例的可选实施方式,但是,本说明书的实施例并不限于上述实施方式中的具体细节,在本说明书的实施例的技术构思范围内,可以对本说明书的实施例的技术方案进行多种简单变型,这些简单变型均属于本说明书的实施例的保护范围。
本说明书内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本说明书内容。对于本领域普通技术人员来说,对本说明书内容进行的各种修改是显而易见的,并且,也可以在不脱离本说明书内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本说明书内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (15)
1.一种用于实时计算中的代码升级的方法,包括:
在接收到当前运行代码的代码升级指令后,获取所述当前运行代码的升级代码,所述当前运行代码的主任务用于对数据库进行实时计算,所述数据库具有多版本数据存储能力,所述主任务调用所述数据库中的对应版本数据来进行处理;
触发处理内核运行所述升级代码,以启动备份任务来按照版本顺序调用所述数据库中的数据进行处理,所述备份任务所调用的数据的起始版本被设置为不晚于所述主任务在接收到所述代码升级指令时所处理的数据版本;
监测所述主任务和所述备份任务的当前处理数据版本是否相同;以及
在所述主任务和所述备份任务的当前处理数据版本相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算。
2.如权利要求1所述的方法,还包括:
监测所述主任务和所述备份任务的当前数据处理进度是否相同;以及
在所述主任务和所述备份任务的当前处理数据版本相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算包括:
在所述主任务和所述备份任务的当前处理数据版本和当前数据处理进度都相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算。
3.如权利要求2所述的方法,其中,根据以下方式中的至少一种来确定所述主任务和所述备份任务的数据处理进度相同:
针对属于相同的处理数据版本的相同数据,所述备份任务的结束处理时间点与所述主任务的结束处理时间点之间的时间差在第一数值范围内;和
针对属于相同的处理数据版本的相同数据,在处理该相同数据的过程中,所述备份任务和所述主任务所处的处理阶段相同。
4.如权利要求1至3任一项所述的方法,其中,根据以下方式来确定所述主任务和所述备份任务的当前处理数据版本相同:
所述备份任务针对已处理数据版本所对应数据的结束处理时间点与所述主任务针对该已处理数据版本所对应数据的结束处理时间点的时间差值在第二数值范围内。
5.如权利要求1或2所述的方法,其中,触发处理内核运行所述升级代码包括:
安装所述升级代码,将安装后的升级代码加载至所述处理内核的执行环境中,并触发所述处理内核来运行所述升级代码;或者
触发代码安装装置来安装所述升级代码并将安装后的升级代码加载至所述处理内核的执行环境中,并使得所述处理内核运行所述升级代码。
6.如权利要求1或2所述的方法,其中,所述数据库包括HBase或者Kudu。
7.如权利要求1或2所述的方法,还包括:
将所述主任务和所述备份任务的处理结果同步至搜索引擎。
8.如权利要求7所述的方法,其中,所述搜索引擎对所述主任务和所述备份任务的处理结果进行去重处理。
9.一种用于实时计算中的代码升级的装置,包括:
升级代码获取单元,在接收到当前运行代码的代码升级指令后,获取所述当前运行代码的升级代码,所述当前运行代码的主任务用于针对数据库进行实时计算,所述数据库具有多版本数据存储能力,所述主任务调用所述数据库中的对应版本数据来进行处理;
代码运行触发单元,触发处理内核运行所述升级代码,以启动备份任务来按照版本顺序调用所述数据库中的数据进行处理,所述备份任务所调用的数据的起始版本被设置为不晚于所述主任务在接收到所述代码升级指令时所处理的数据版本;
任务监测单元,监测所述主任务和所述备份任务的当前处理数据版本是否相同;以及
任务切换单元,在所述主任务和所述备份任务的当前处理数据版本相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算。
10.如权利要求9所述的装置,所述任务监测单元进一步:
监测所述主任务和所述备份任务的当前数据处理进度;以及
所述任务切换单元进一步:
在所述主任务和所述备份任务的当前处理数据版本和当前数据处理进度都相同时,使得所述处理内核停止所述主任务,并使得所述处理内核将所述备份任务作为新的主任务来继续针对所述数据库进行实时计算。
11.如权利要求9或10所述的装置,其中,所述代码运行触发单元进一步:
安装所述升级代码,将安装后的升级代码加载至所述处理内核的执行环境中,并触发所述处理内核来运行所述升级代码;或者
触发代码安装装置来安装所述升级代码并将安装后的升级代码加载至所述处理内核的执行环境中,并使得所述处理内核运行所述升级代码。
12.如权利要求9或10所述的装置,其中,所述数据库包括HBase或者Kudu。
13.如权利要求9或10所述的装置,还包括:
处理结果同步单元,将所述主任务和所述备份任务的处理结果同步至搜索引擎。
14.一种计算设备,包括:
至少一个处理器,以及
与所述至少一个处理器耦合的存储器,所述存储器存储指令,当所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1到8中任一所述的方法。
15.一种机器可读存储介质,其存储有可执行指令,所述指令当被执行时使得所述机器执行如权利要求1到8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010092831.1A CN111338668B (zh) | 2020-02-14 | 2020-02-14 | 用于实时计算中的代码升级的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010092831.1A CN111338668B (zh) | 2020-02-14 | 2020-02-14 | 用于实时计算中的代码升级的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111338668A true CN111338668A (zh) | 2020-06-26 |
CN111338668B CN111338668B (zh) | 2022-05-10 |
Family
ID=71181562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010092831.1A Active CN111338668B (zh) | 2020-02-14 | 2020-02-14 | 用于实时计算中的代码升级的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111338668B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1190833A (zh) * | 1997-02-11 | 1998-08-19 | 埃克斯塞尔开关公司 | 远距离通信***的冗余安排 |
US20070294574A1 (en) * | 2006-06-05 | 2007-12-20 | Dmp Electronics Inc. | Dual computer for system backup and being fault-tolerant |
CN101145119A (zh) * | 2006-09-15 | 2008-03-19 | 中兴通讯股份有限公司 | 一种升级过程中数据同步的方法 |
CN101996083A (zh) * | 2009-08-21 | 2011-03-30 | 中兴通讯股份有限公司 | 一种镜像升级的方法和装置 |
CN102081552A (zh) * | 2009-12-01 | 2011-06-01 | 华为技术有限公司 | 一种物理机到虚拟机的在线迁移方法、装置和*** |
CN102855314A (zh) * | 2012-08-27 | 2013-01-02 | 济南大学 | 基于fpga的实时数据库备份***及备份方法 |
CN106487863A (zh) * | 2015-09-02 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种基于分布式***的灰度发布方法、客户端及平台 |
CN108170464A (zh) * | 2017-12-27 | 2018-06-15 | 联想(北京)有限公司 | 一种版本升级方法、服务平台及电子设备 |
US20190212999A1 (en) * | 2018-01-11 | 2019-07-11 | Macronix International Co., Ltd. | System boot code clone |
CN110046172A (zh) * | 2018-12-29 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 在线计算数据处理方法及*** |
-
2020
- 2020-02-14 CN CN202010092831.1A patent/CN111338668B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1190833A (zh) * | 1997-02-11 | 1998-08-19 | 埃克斯塞尔开关公司 | 远距离通信***的冗余安排 |
US20070294574A1 (en) * | 2006-06-05 | 2007-12-20 | Dmp Electronics Inc. | Dual computer for system backup and being fault-tolerant |
CN101145119A (zh) * | 2006-09-15 | 2008-03-19 | 中兴通讯股份有限公司 | 一种升级过程中数据同步的方法 |
CN101996083A (zh) * | 2009-08-21 | 2011-03-30 | 中兴通讯股份有限公司 | 一种镜像升级的方法和装置 |
CN102081552A (zh) * | 2009-12-01 | 2011-06-01 | 华为技术有限公司 | 一种物理机到虚拟机的在线迁移方法、装置和*** |
CN102855314A (zh) * | 2012-08-27 | 2013-01-02 | 济南大学 | 基于fpga的实时数据库备份***及备份方法 |
CN106487863A (zh) * | 2015-09-02 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种基于分布式***的灰度发布方法、客户端及平台 |
CN108170464A (zh) * | 2017-12-27 | 2018-06-15 | 联想(北京)有限公司 | 一种版本升级方法、服务平台及电子设备 |
US20190212999A1 (en) * | 2018-01-11 | 2019-07-11 | Macronix International Co., Ltd. | System boot code clone |
CN110046172A (zh) * | 2018-12-29 | 2019-07-23 | 阿里巴巴集团控股有限公司 | 在线计算数据处理方法及*** |
Non-Patent Citations (3)
Title |
---|
VAMYIP: "Gracefully reload Gunicorn for changes to Python Code", 《HTTPS://DISCUSS.ERPNEXT.COM/T/GRACEFULLY-RELOAD-GUNICORN-FOR-CHANGES-TO-PYTHON-CODE/55207》 * |
WANGKUN_DHCC: "Nginx运行时二进制更新代码分析", 《HTTPS://BLOG.CSDN.NET/WANGKUN_DHCC/ARTICLE/DETAILS/8613930》 * |
隐林: "DataWorks支持PyODPS类型任务", 《HTTPS://WWW.SOHU.COM/A/231546698_612370》 * |
Also Published As
Publication number | Publication date |
---|---|
CN111338668B (zh) | 2022-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10817386B2 (en) | Virtual machine recovery method and virtual machine management device | |
CN112383610B (zh) | 区块链状态数据的同步处理方法及*** | |
CN110825495A (zh) | 一种容器云平台的恢复方法、装置、设备及可读存储介质 | |
CN110225078B (zh) | 一种应用服务更新方法、***及终端设备 | |
CN110895488B (zh) | 任务调度方法及装置 | |
CN104008104A (zh) | 处理文件变更的方法及电子装置 | |
CN112596771A (zh) | 一种不间断服务升级的方法及*** | |
CN110895487A (zh) | 分布式任务调度*** | |
CN110895483A (zh) | 任务恢复方法及装置 | |
US20220335011A1 (en) | System and Method for Eliminating Full Rescan Synchronizations on Service Restarts | |
CN111258850A (zh) | 一种基于Linux***的更新软件信息的方法及装置 | |
CN110895486A (zh) | 分布式任务调度*** | |
US20130086572A1 (en) | Generation apparatus, generation method and computer readable information recording medium | |
CN107463390B (zh) | 一种软件升级方法及升级服务器 | |
CN111538585A (zh) | 一种基于node.js的服务器进程调度方法、***和装置 | |
CN112328602B (zh) | 一种数据写入Kafka的方法、装置及设备 | |
CN111338668B (zh) | 用于实时计算中的代码升级的方法及装置 | |
CN116560802B (zh) | 一种基于虚拟机负载的虚拟机自适应热迁移方法及*** | |
CN110895485A (zh) | 任务调度*** | |
CN110888739B (zh) | 延迟任务的分布式处理方法与装置 | |
CN114500128B (zh) | 一种流控计费方法、装置、***、电子设备、介质及产品 | |
CN112685063B (zh) | 特征库更新方法、装置、网络设备及可读存储介质 | |
CN112905341A (zh) | 分布式负载均衡服务信息持续继承方法及装置 | |
CN113703823A (zh) | 一种bmc固件升级方法、装置、电子设备及存储介质 | |
CN117493271B (zh) | 一种云操作***的容器节点管理装置、方法、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |