WO2024051454A1 - 处理事务日志的方法及装置 - Google Patents

处理事务日志的方法及装置 Download PDF

Info

Publication number
WO2024051454A1
WO2024051454A1 PCT/CN2023/113247 CN2023113247W WO2024051454A1 WO 2024051454 A1 WO2024051454 A1 WO 2024051454A1 CN 2023113247 W CN2023113247 W CN 2023113247W WO 2024051454 A1 WO2024051454 A1 WO 2024051454A1
Authority
WO
WIPO (PCT)
Prior art keywords
transaction
log
identifier
data
fragment
Prior art date
Application number
PCT/CN2023/113247
Other languages
English (en)
French (fr)
Inventor
田伟
刘浩
韩富晟
Original Assignee
北京奥星贝斯科技有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 北京奥星贝斯科技有限公司 filed Critical 北京奥星贝斯科技有限公司
Publication of WO2024051454A1 publication Critical patent/WO2024051454A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种处理事务日志的方法及装置。针对一个事务对应的所有日志被写入分布式数据库中的至少两个日志流中,该方法包括:从分布式数据库获取至少两个日志流;其中,每一个日志流中携带有事务标识;根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,则利用该所有日志流进行数据组装,以得到该事务对应的事务数据。能够实现针对分布式事务的多日志流进行组装。

Description

处理事务日志的方法及装置 技术领域
本说明书一个或多个实施例涉及计算机技术领域,尤其涉及一种处理事务日志的方法及装置。
背景技术
数据库会将每个插入、更新、删除等操作记录到日志里,因此基于比如日志的CDC(change data capture,变更数据捕获)技术,通过解析日志获取到数据库完整的数据变更历史,从而实现数据同步。对于传统的单机数据库,例如Oracle、MySQL等,全局只有一个日志流,因此通过顺序获取和解析日志流即可还原出事务的提交历史记录,且事务提交顺序等价于日志中事务数据记录的顺序。对于诸如Oracle RAC等支持多点写入的系统,日志流虽然分布在不同的机器节点上,但是SCN(System Change Number,系统变更序号)单点分配,且保证单调递增,通过SCN的顺序即可获取事务的历史提交记录。
然而,对于OceanBase等采用多日志流的分布式数据库而言,每个日志流都有自己独立的LSN(log sequence number,日志序列号)且支持分布式事务写入。分布式事务写入时可能会将不同日志流分布于多个机器节点,当存在多个并发执行的事务时,不同日志流的日志写入顺序都是随机的,且多个日志流没有全局时序,因此如何针对分布式事务的多日志流来处理事务日志,从而能得到一个事务的事务数据,是一个亟待解决的问题。
发明内容
本说明书一个或多个实施例提供了一种处理事务日志的方法及装置,用以实现针对分布式事务的多日志流来得到事务的事务数据。
根据第一方面,本说明书实施例提供了一种处理事务日志的方法,其中,事务为访问和/或操作数据的数据库操作序列;一个事务对应的所有日志被写入分布式数据库中的至少两个日志流中。所述方法包括:从分布式数据库获取至少两个日志流;其中,每一个日志流中携带有事务标识;根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,则利用该所有日志流进行数据组装,以得到该事务对应的事务数据。
根据本申请实施例中一可实现的方式,该方法进一步包括:针对获取的每一个日志流,均执行:从当前日志流中得到对应于同一个事务的各个日志;以及将得到的该各个 日志聚合出对应该事务的一个事务分片;其中,该事务分片中携带有当前日志流的标识以及该事务的事务标识;相应地,所述确定是否已经获取一个事务对应的所有日志被写入的所有日志流,包括:依据从各个事务分片中获取的日志流的标识以及事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流;相应地,所述利用该所有日志流进行数据组装,包括:将携带有同一事务标识的所有事务分片进行组装。
根据本申请实施例中一可实现的方式,该方法进一步包括:每一个事务标识对应一个日志流列表,该日志流列表中包括:具有该事务标识的事务对应的所有日志被写入的所有日志流的标识;相应地,所述依据从各个事务分片中获取的日志流的标识以及事务标识确定是否已经获取一个事务对应的所有日志被写入的所有日志流,包括:针对每一个事务分片,均执行:从当前事务分片中获取日志流的标识以及事务标识;在所获取的事务标识对应的日志流列表中,将所获取的该日志流的标识标记为到达;以及针对每一个日志流列表,如果当前日志流列表中所有的日志流的标识均被标记为到达,则确定已经获取了一个事务对应的所有日志被写入的所有日志流;其中,该一个事务的事务标识对应当前日志流列表。
根据本申请实施例中一可实现的方式,在每聚合出一个事务分片时,进一步包括;将聚合出的该事务分片发送至一个以上的组装队列的其中一个组装队列;在所述依据从各个事务分片中获取的日志流的标识以及事务标识确定是否已经获取一个事务对应的所有日志被写入的所有日志流之前,进一步包括:利用至少一个线程从一个以上的组装队列中分别获取各个事务分片。
根据本申请实施例中一可实现的方式,每一个被写入日志流的日志中携带有准备版本号;在得到事务对应的事务数据之后,该方法进一步包括:根据各日志中携带的准备版本号,确定各个事务之间的先后顺序,按照该先后顺序依次输出各个事务的事务数据。
根据本申请实施例中一可实现的方式,在所述将携带有同一事务标识的所有事务分片进行组装时,进一步包括:每组装出一个事务的事务数据时,利用该事务对应的各日志中携带的准备版本号,确定该事务数据的投递版本号,将确定出的该投递版本号携带在该事务数据中,然后将该事务数据发送至定序队列中;所述按照该先后顺序依次输出各个事务的事务数据,包括:利用每一个事务数据中的投递版本号及定序队列,输出各个事务的事务数据;其中,输出的顺序符合各事务之间的先后顺序。
根据本申请实施例中一可实现的方式,该方法进一步包括:在每聚合出一个事务分片时,根据聚合出该事务分片所使用的各日志中携带的准备版本号,确定该事务分片对应的版本号;将该版本号携带在该事务分片中,并将该事务分片发送至一个以上的组装队列的其中一个组装队列;以及每隔一个预设周期时间向每一个组装队列中发送一个全 局心跳值;其中,该全局心跳值等于本预设周期时间内发送至各个组装队列中的各个事务分片中携带的版本号的最小值;相应地,所述利用每一个事务数据中的投递版本号及定序队列输出各个事务的事务数据,包括:分别从所有组装队列中获取全局心跳值,若从所有组装队列中分别获取到了同一个全局心跳值,利用该同一个全局心跳值更新所述定序队列对应的投递检查值;将所述定序队列中投递版本号小于或等于所述投递检查值的事务数据进行输出。
根据本申请实施例中一可实现的方式,事务分片中携带的版本号为:聚合出该事务分片所使用的各日志中携带的各准备版本号中的一个准备版本号;或者,该事务分片所属事务的投递版本号,该投递版本号等于该事务对应的各日志中携带的各个准备版本号中的最大值。
根据第二方面,本说明书实施例提供了一种处理事务日志的装置,其中,事务为访问和/或操作数据的数据库操作序列;一个事务对应的所有日志被写入分布式数据库中的至少两个日志流中;所述装置包括:日志流获取单元,被配置为从分布式数据库获取至少两个日志流;其中,每一个日志流中携带有事务标识;事务组装单元,被配置为根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,则利用该所有日志流进行数据组装,以得到该事务对应的事务数据。
根据第三方面,本说明书实施例提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行如上所述的方法。
根据第四方面,本说明书实施例提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现如上所述的方法。
由以上技术方案可以看出,本说明书一个或多个实施例的组合,至少具备以下优点:1)本说明书实施例在对从分布式数据库中获取日志流后,根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,则利用该所有日志流进行组装,以得到该事务对应的事务数据。可见通过本说明书实施例能够实现针对分布式事务的多日志流,来得到一个事务的事务数据。
2)本说明书实施例依据各日志中携带的准备版本号设置全局心跳值和定序队列的投递检查值,利用定序队列中事务数据的投递版本号和定序队列的投递检查值之间的关系来控制事务数据的输出顺序,从而保证事务数据输出顺序的正确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本说明书实施例的示例性系统架构图;
图2为本说明书实施例提供的处理事务日志的方法流程图;
图3为本说明书实施例提供的产生事务分片的示意图;
图4为本说明书实施例提供的一种组装处理流程图;
图5为本说明书实施例提供的一种组装事务数据的实例图;
图6为本说明书实施例提供的一种事务数据的定序实例图;
图7为本说明书实施例提供的产生全局心跳值的示意图;
图8为本说明书实施例提供的处理事务日志的装置的结构图。
具体实施方式
下面结合附图,对本说明书提供的方案进行描述。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
图1示出了可以应用本说明书实施例的示例性系统架构。该系统主要包括:分布式数据库和数据同步设备。
为了保证数据库系统中数据操作的原子性和持久性,通常采用预写日志(WAL,Write-Ahead Logging)机制,即先持久化一个事务的日志到日志流中。分布式事务支持多机写入,可以分别持久化对应日志到对应的日志流中,同一日志流可以在不同机器节点进行同步。日志流(LogStream)是日志读写的基本单位,记录数据库的事务的日志。
所谓事务(Transation)是指访问和/或操作数据的数据库操作序列。在计算机术语中指访问并可能更新数据库中数据项的一个程序执行单元,由事务开始到事务结束之间执行的全体操作组成,这些全体操作必须全部成功完成,否则在每个操作中所作的所有更改都会被撤消。比如转账事务可以由对一个账号的余额进行增加,以及对另一个账号的余额进行减少组成。
在分布式数据库中,一个事务对应的所有日志通常被写入分布式数据库中的至少两个日志流中。
数据同步设备可以从分布式数据库中拉取日志流,采用本说明书实施例中提供的处 理事务日志的方法进行处理,组装得到各事务的事务数据。进一步地,基于各事务数据之间的依赖关系或顺序进行数据同步。
上述的分布式数据库可以采用多个机器节点作为运行分布式数据库软件的实例。数据同步设备与分布式数据库之间可以通过网络进行交互,网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
数据同步设备可以是单一服务器,也可以是多个服务器构成的服务器群组,还可以是云服务器。云服务器又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决传统物理主机与虚拟专用服务器(VPs,Virtual Private Server)服务中存在的管理难度大,服务扩展性弱的缺陷。除此之外也可以是具备较强计算能力的计算机终端。
应该理解,图1中的分布式数据库、机器节点以及数据同步设备的数目仅仅是示意性的。根据实现需要,可以具有任意数目的分布式数据库、机器节点以及数据同步设备。
图2为本说明书实施例提供的处理事务日志的方法流程图。可以理解,该方法可以通过图1所示系统中的数据同步设备来执行。参见图2,该方法包括:步骤202:从分布式数据库获取多于一个的日志流,每一个日志流中携带有事务标识。
步骤204:根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,利用该所有日志流进行数据组装,以得到该事务对应的事务数据。
由以上实施例提供的技术内容可以看出,在对从分布式数据库中获取日志流后,根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,则利用该所有日志流进行组装,以得到该事务对应的事务数据。可见通过本说明书实施例能够实现针对分布式事务的多日志流组装,从而得到每一个事务的事务数据。
下面对图2所示的各个步骤进行说明。
首先结合实施例对上述步骤202即“从分布式数据库获取多于一个的日志流”进行详细描述。
在诸如OceanBase等分布式数据库中,一般会存在多个日志流,以图3所示为例,存在P1~P8八个日志流,每个日志流可能存在多个副本。在图3中,带灰度部分表示主副本,未带灰度部分表示备副本,每个副本分布于不同的机器节点上。在分布式数据库中各机器节点可以通过诸如Paxos算法来保证日志流的各副本的数据一致性。
本说明书实施例中,数据同步设备可以预先获取分布式数据库中的日志分布表,该日志分布表中记录有各日志流的分布状况。数据同步设备可以依据该日志分布表从数据库中获取各日志流,例如图3中的P1~P8的日志流。
为了加快日志流的获取效率,可以采用RPC(Remote Procedure Call,远程过程调用)并发地从分布式数据库获取多个日志流,例如采用8个进程分别用以获取P1~P8的日志流。基于日志分布列表,各进程从对应的机器节点上分别获取各日志流。其中,可以默认先从主副本获取日志流,若主副本不可用,则从备副本获取日志流。也可以基于预设的负载均衡策略从主副本和备副本中的一个来获取日志流。
下面结合实施例重点对上述步骤204即“根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,利用该所有日志流进行数据组装,以得到该事务对应的事务数据”进行详细描述。
一个事务通常会对应多个日志,该多个日志通常被写入多个日志流中。比如,事务1对应5个日志,该5个日志分别被写入了日志流1、日志流2以及日志流3中。因此,一个日志流中可以包括同一个事务的一个或者多个日志。基于此,在本说明书一个实施例中,提出了事务分片的概念。事务分片是指:同一个日志流中的对应于同一个事务的所有日志的聚合。每个事务分片具有事务标识和日志流标识,即携带有该事务分片所来源的日志所属事务的事务标识以及携带有该事务分片所来源的日志流的标识。这样。在步骤202与步骤204之间,可以进一步包括步骤203:从每一个日志流中得到对应于同一个事务的所有日志,将从同一个日志流中得到的对应于同一个事务的所有日志聚合为对应于该事务的一个处理单元,将该处理单元称之为事务分片。相应地,后续步骤204中,则可以利用从多个日志流中获取的对应于同一个事务的多个事务分片进行组装,即,将携带有同一事务标识的所有事务分片进行组装,组装出该同一个事务的事务数据。
举例说明步骤203的处理。比如,日志流1中被写入了事务1的日志1及日志2,从该日志流1中得到事务1的日志1及日志2,将日志1及日志2聚合在一起,形成事务1的一个事务分片,记为事务分片1,事务分片1中携带有事务1的标识以及日志流1的标识;日志流2中被写入了事务1的日志3,从该日志流2中得到事务1的日志3,将该日志3作为事务1的又一个事务分片,记为事务分片2,事务分片2中携带有事务1的标识以及日志流2的标识;日志流3中被写入了事务1的日志4及日志5,从该日志流3中得到事务1的日志4及日志5,将日志4及日志5聚合在一起,形成事务1的再一个事务分片,记为事务分片3,事务分片3中携带有事务1的标识以及日志流3的标识。后续将该3个事务分片进行组装,既可以得到事务1的事务数据。
其中,对同一个日志流中对应于同一个事务的所有日志进行聚合的过程可以包括: 将该所有日志按序排列,或者,将该所有日志按序进行合并。例如,某个日志流包括日志S1:对账户a减少A元;日志S2:对账户a增加B元。那么利用该日志S1及日志S2聚合出的事务分片可以包括对账户a减少A元以及对账户a增加B元两个操作。
对于分布式数据库中的日志流,为了对日志流进行区分,各日志流中均携带有事务标识和日志流的标识。其中,日志流的标识比如可以是日志流的LSN(log sequence number,日志序列号)。通常一个事务的日志数据可能会被分成多个日志流写入不同的机器节点,因此为了各日志流所属的事务进行区分和标识,会在日志流中携带事务标识。另外,对于一个事务中的多个日志流分别采用不同的日志流的标识进行区分。
举个例子,假设分布式数据库中发生三个分布式事务:记为tx1、tx2和tx3。事务tx1的日志数据写入了P1~P3的日志流,这些日志流携带有事务标识tx1,以及分别携带有各自的日志流标识P1~P3。事务tx2的日志数据写入了P4~P6的日志流,这些日志流携带有事务标识tx2,以及分别携带有日志流标识P4~P6。事务tx3的日志数据写入了P7~P8的日志流,这些日志流携带有事务标识tx3,以及分别携带有各自的日志流标识P7~P8。
在利用上述步骤203得到各事务分片后,本步骤204中,在确定是否已经获取一个事务对应的所有日志被写入的所有日志流时,具体是执行步骤2041:依据从各个事务分片中获取的日志流的标识以及事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流。
在实际的业务实现中,上述步骤202通常是利用多个线程来执行的,也就是说,由多个线程分别从分布式数据库获取至少两个日志流,这样就会导致多个日志流的获取时间是存在先后顺序的,也就是说,有的日志流先到达(即,先获取到),有的日志流后到达(即,后获取到)。这样可以利用日志流列表来实现步骤2041的过程。在分布式数据库中为了对同一事务的各日志流进行区分,会记录每个事务标识对应的日志流列表,该日志流列表包括具有该事务标识的事务对应的所有日志被写入的所有日志流的标识。
作为其中一种可实现的方式,数据同步设备可以从分布式数据库中预先获取各事务标识对应的日志流列表。举个例子,事务tx1的所有日志被写入了3个日志流,那么事务标识tx1对应的日志流列表中包括了该3个日志流的标识:P1、P2和P3。
作为另一种可实现的方式,分布式数据库端可以在各日志流中携带该日志流所属事务的事务标识对应的日志流列表。举个例子,事务tx1的所有日志被写入了3个日志流包括P1、P2和P3,那么在P1、P2和P3的日志流中均包含有tx1对应的日志流列表,该日志流列表中包含P1、P2和P3,用于表明tx1对应哪些日志流。将得到的该日志聚合出对应该事务的一个事务分片后,每一个事务分片也携带有该事务分片所来源的日志流的日志流列表。
这样,步骤2041的过程可以包括:步骤2041A:针对每一个事务分片,均执行:从当前事务分片中获取日志流的标识以及事务标识;在所获取的事务标识对应的日志流列表中,将所获取的该日志流的标识标记为到达;步骤2041B:针对每一个日志流列表,如果当前日志流列表中所有的日志流的标识均被标记为到达,则确定已经获取了一个事务对应的所有日志被写入的所有日志流;其中,该一个事务的事务标识对应当前日志流列表。
比如,对于步骤2041A,对于事务分片1,从事务分片1中获取了日志流标识为P1,事务标识为tx1,那么,在tx1对应的日志流列表(该列表包括P1、P2、P3)中将P1标记为到达。如此执行,对于每一个事务分片都执行2041A的处理后,如果一个日志流列表比如tx1对应的日志流列表中,P1、P2、P3均被21标记为到达,则说明,已经得到了事务tx1的所有日志被写入的所有日志流,也就意味着,已经从所有日志流中获取到了事务tx1的所有事务分片,即事务tx1的所有日志已经获取完毕,可以组装事务tx1的事务数据了。
在本说明书一个实施例中,在每聚合出一个事务分片时,进一步包括;将聚合出的该事务分片发送至一个以上的组装队列的其中一个组装队列;在依据从各个事务分片中获取的日志流的标识以及事务标识确定是否已经获取一个事务对应的所有日志被写入的所有日志流之前,进一步包括:利用至少一个线程从一个以上的组装队列中分别获取各个事务分片。
作为其中一种可实现的方式,在数据同步设备中可以存在一个组装队列,上面步骤中获取的各事务分片均发送至该组装队列以供后续进行组装,但这种方式性能较为低下。
为了优化组装性能,支持并发式处理,本说明书实施例提供了另一种可实现的方式,即采用多个组装队列。上面步骤中得到的各个事务分片存入该多个组装队列。如图3中所示,假设存在三个组装队列,对于上面步骤得到的事务分片可以采用round-robin(轮询调度)方式将从各日志流产生的各个事务分片发送至多个组装队列中。比如:事务分片tx1_P1(表示该事务分片的事务标识和日志流的标识分别为tx1和P1,后续采用类似表达)、tx1_P2、tx1_P3分别位于组装队列1~3;tx2_P4、tx2_P5、tx2_P6分别位于队列3、队列2和队列2;tx3_P7、tx3_P8分别位于队列3和队列1。
组装队列是一个先入先出队列,每个组装队列可以分别绑定一个组装线程以执行后续对事务分片的组装。
本步骤204中对事务分片的难点在于,如何获知哪些事务分片属于同一事务,以及属于同一事务的事务分片是否均已经获取到从而可以开始进行组装。为了解决该难点,本申请实施例中利用的是日志流列表和日志流的标识来对同一事务的事务分片进行组 装。
作为其中一种可实现的方式,对于每一个组装线程均可以执行如图4中所示的组装处理流程,如图4中所示,该组装处理流程可以包括以下步骤:步骤402:从组装队列中获取事务分片。
步骤404:从获取到的当前事务分片中获取日志流列表和日志流的标识,为了方便描述,将从当前事务分片中获取的日志流列表和日志流的标识称为当前日志流列表和当前日志流的标识。
步骤406:判断事务管理器中是否已经维护有当前事务分片携带的当前日志流列表,如果否,执行步骤408;如果是,执行步骤410。
为了提高处理效率,本说明书实施例中采用多线程的方式并行对组装队列中的事务分片进行处理,为了能够获知每个线程获取到的事务分片是否已经能够进行组装,即已经完成一个事务对应的所有事务分片的获取,本说明书实施例中设置了一个事务管理器,由该事务管理器统一维护已经获取到的事务分片信息,也就是说,对于从组装队列中获取到的每一个事务分片的“上下文”均在事务管理器中进行记录并能够从事务管理器中查询到。当然,也可以采用其他方式统一维护各事务标识对应的日志流列表,本实施例中仅以事务管理器为例进行描述。
步骤408:将当前日志流列表提供给事务管理器进行维护。
在事务管理器中维护有各事务的日志流列表,各事务的日志流列表与事务标识相对应,包含该事务标识对应的所有日志流的标识。
步骤410:在事务管理器维护的当前日志流列表中上述当前日志流的标识标记为到达。
步骤412:判断当前日志流列表中是否所有的日志流的标识均被标记为到达,如果是,执行步骤414;否则,转至步骤402。
步骤414:将已经获取到的事务分片中,携带当前日志流列表所对应事务标识的事务分片进行组装,得到该事务标识对应的事务数据。
为了方便对上述流程的理解,下面以图5为例进行描述。首先从组装队列1中获取到事务分片tx1_P1,从该事务分片中获取到tx1的日志流列表以及日志流的标识P1。由于事务管理器中尚未存储tx1的日志流列表,因此将tx1的日志流列表提供给事务管理器进行存储,并在事务管理器维护的tx1的日志流列表中将日志流的标识P1标记为到达。从组装队列2中获取tx2_P2后,从该事务分片中获取到tx1的日志流列表以及日志 流的标识P2。由于事务管理器中已经存储有tx1的日志流列表,因此在事务管理器维护的tx1的日志流列表中将日志流的标识P2标记为到达。从组装队列3中获取到事务分片tx2_P4,从该事务分片中获取到tx2的日志流列表以及日志流的标识P4。由于事务管理器中尚未存储tx2的日志流列表,因此将tx2的日志流列表提供给事务管理器进行存储,并在事务管理器维护的tx2的日志流列表中将日志流的标识P4标记为到达。从组装队列2中获取tx2_P5后,从该事务分片中获取到tx2的日志流列表以及日志流的标识P5。由于事务管理器中已经存储有tx2的日志流列表,因此在事务管理器维护的tx2的日志流列表中将日志流的标识P5标记为到达。从组装队列3中获取tx1_P3后,从该事务分片中获取到tx1的日志流列表以及日志流的标识P3。由于事务管理器中已经存储有tx1的日志流列表,因此在事务管理器维护的tx1的日志流列表中将日志流的标识P3标记为到达。此时tx1的日志流列表中所有日志流的标识均被标记为到达,因此可以将已经接收到的携带tx1的事务分片进行组装,得到tx1对应的事务数据。对于其他事务分片的处理以此类推,这样就可以将各事务标识对应的事务分片分别进行组装。
然而,由于分布式事务数据的组装是并发执行的,因此可能得到如图5中所示的事务数据的顺序。即可能先将tx1的事务数据送入定序队列,再将tx3的事务数据输入定序队列,然后由于并发执行或其他原因,造成tx2的事务数据尚未送入定序队列。若tx2的事务数据长时间未送入定序队列,则可能造成tx1的事务数据输出后,先输出了tx3的事务数据,输出顺序的正确性和完整性无法保证。但在一些情况下,各事务之间的事务数据是存在依赖关系的,例如,事务tx2依赖tx1、tx3依赖tx2,那么需要保证tx1先输出、tx2再输出、最后输出tx3。那么就需要进一步对组装得到的各事务数据进行定序,即确定各事务数据的排序以确定事务数据的正确性。
在本说明书一个实施例中,每一个被写入日志流的日志中携带有准备版本号;在得到各个事务对应的事务数据之后,可以参见图2,进一步执行对各事务数据进行定序处理。该定序处理可以包括步骤206:根据各日志中携带的准备版本号,确定各个事务之间的先后顺序,按照该先后顺序依次输出各个事务的事务数据。
在本说明书一个实施例中,在将携带有同一事务标识的所有事务分片进行组装时,进一步包括:每组装出一个事务的事务数据时,利用该事务对应的各日志中携带的准备版本号,确定该事务数据的投递版本号,将确定出的该投递版本号携带在该事务数据中,然后将该事务数据发送至定序队列中;这样,步骤206中按照该先后顺序依次输出各个事务的事务数据,包括步骤2061:利用每一个事务数据中的投递版本号及定序队列,输出各个事务的事务数据;其中,输出的顺序符合各事务之间的先后顺序。
在本说明书一个实施例中,该方法进一步包括:在每聚合出一个事务分片时,根据 聚合出该事务分片所使用的各日志中携带的准备版本号,确定该事务分片对应的版本号;将该版本号携带在该事务分片中,并将该事务分片发送至一个以上的组装队列的其中一个组装队列;以及每隔一个预设周期时间向每一个组装队列中发送一个全局心跳值;其中,该全局心跳值等于本预设周期时间内发送至各个组装队列中的各个事务分片中携带的版本号的最小值;相应地,上述步骤2061包括:分别从所有组装队列中获取全局心跳值,若从所有组装队列中分别获取到了同一个全局心跳值,利用该同一个全局心跳值更新所述定序队列对应的投递检查值;将所述定序队列中投递版本号小于或等于所述投递检查值的事务数据进行输出。
下面对上述步骤206涉及的定序处理进行详细说明。
定序队列可以采用小顶堆的方式实现,定序队列内部的事务数据都按照投递版本号(commit version)从小到大的顺序排列。
在本说明书实施例中,可以引入一个新的参数,即全局心跳值来对各事务数据进行定序。为了方便对后续的定序过程进行理解,首先对其中涉及到的几个概念进行说明:准备版本号(prepare version):在诸如OceanBase等分布式数据库中,分布式事务通过2PC(Two-Phase Commit,两阶段提交)协议保证事务的原子性,事务的各参与者在协商过程中会生成prepare version,因此各日志会具有prepare version的信息。相应地,在本说明书实施例中对日志流中的日志进行聚合生成的事务分片也可以具有一个版本号,事务分片对应的版本号是依据聚合出该事务分片所用的各日志中携带的prepare version确定的。Prepare version通常依据事务的发生顺序是递增的。
作为其中一种可实现的方式,上述事务分片对应的版本号可以是聚合出事务分片所使用的各日志中携带的各准备版本号中的一个准备版本号。
作为另一种可实现的方式,上述事务分片对应的版本号可以是该事务分片所属事务的投递版本号。
投递版本号(commit version):分布式事务场景下,各个参与者通过协商可以得到一个事务的commit version。该commit version通常采用一个事务的各日志具有的prepare version的最大值。相应地,在本说明书实施例中,在将同一事务的事务分片进行组装后,可以得到事务数据的commit version的信息。
全局心跳值(GH,Globalheartbeat):是每个一个预设周期时间发送至每一个组装队列的全局值,依据得到的事务分片携带的事务分片对应的版本号生成。作为其中一种可实现的方式,该Globalheartbeat值由本预设周期时间内发送至各组装队列中的各事务分片中携带的版本号的最小值确定。
后续实施例将对全局心跳值的具体产生和应用方式进行详述。
投递检查值(commit checkpoint):是针对定序队列维护的一个参数,用以判断定序队列中的事务数据是否可以输出。该commit checkpoint依据Globalheartbeat来确定,若所有组装线都程获取到Globalheartbeat,则将commit checkpoint的值更新为该Globalheartbeat的值。对于定序队列而言,可以输出所有commit version小于或等于commit checkpoint的事务数据。
下面首先对Globalheartbeat的发送机制进行描述。
作为其中一种可实现的方式,Globalheartbeat可以周期性地确定并发送至组装队列。
作为另一种可实现的方式,可以在每针对组装队列轮询一次事务分片的发送后,确定Globalheartbeat并发送至组装队列。还可以采用其他的发送时机,在此不做一一列举。
之前实施例中已经提到,可以通过多进程的方式获取日志流并对日志流进行聚合得到事务的一个事务分片。如图7中所示,每个进程(dispatch_progress)都对应有一个日志流版本号。
作为其中一种可实现的方式,每个dispatch_progress在得到事务分片后,依据该事务分片的版本号更新该dispatch_progress的日志流版本号。若当前得到的事务分片的版本号小于日志流版本号,则利用该事务分片的版本号更新日志流版本号;否则,不更新日志流版本号。
在达到确定并发送Globalheartbeat的时机时,例如达到发送周期,则将当前各dispatch_progress的日志流版本号的最小值作为Globalheartbeat并发送至每一个组装队列。
以图6中所示为例,GH1是tx1_P1、tx1_P2和tx2_P4中版本号的最小值,即tx1_P1的版本号。GH2是tx2_P5和tx1_P3中版本号的最小值,即取tx1_P3的版本号。GH3是tx3_P8、tx2_P6和tx3_P7中版本号的最小值,即取tx2_P6的版本号。
各组装线程均获取到GH1时,commit checkpoint设置为GH1的值。此时,tx1和tx2的事务数据尚未组装完成,定序队列中没有数据。
各组装线程均获取到GH2时,commit checkpoint设置为GH2的值,即tx1_P3的版本号。此时,tx1的事务数据组装完成并位于定序队列中,tx1的事务数据的commit version为tx1_P1、tx1_P2和tx1_P3中所有prepare version的最大值。这就意味着当前commit checkpoint小于tx1的commit version,定序队列不做输出。
各组装线程均获取到GH3时,commit checkpoint设置为GH3的值,即tx2_P6的版 本号。此时,tx2和tx3的事务数据组装完成并位于定序队列中。tx2的事务数据的commit version为tx2_P4、tx2_P5和tx2_P6中所有prepare version的最大值。Tx3的事务数据的commit version为tx3_P7和tx3_P8中所有prepare version的最大值。这意味着当前commit checkpoint大于tx1的commit version并且等于tx2的commit version,因此依次输出tx1、tx2的事务数据,tx3的事务数据并不输出。可以看出,保证了事务数据正确的输出顺序。可以看出,保证了事务数据正确的输出顺序。
后续过程以此类推。可见,投递检查值和GH相结合形成一个类似于“barrier(栅栏)”的功能,仅允许正确顺序的事务数据输出。一方面保证了事务数据收齐并以正确顺序输出,另一方面也保证了事务数据的输出顺序与提交顺序一致。
以上是对本说明书实施例所提供方法进行的详细描述,下面对本说明书实施例所提供的装置进行详细描述。
图8示出根据本说明书一个实施例的处理事务日志的装置的结构图,如图8所示,该装置800可以包括:日志流获取单元801和事务组装单元804,还可以进一步包括分片获取单元802、分片投递单元803、事务定序单元805和心跳产生单元806。其中各组成单元的主要功能如下:日志流获取单元801,被配置为从分布式数据库获取至少两个日志流;其中,每一个日志流中携带有事务标识。
事务组装单元804,被配置为根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,则利用该所有日志流进行数据组装,以得到该事务对应的事务数据。
作为其中一种可实现的方式,分片获取单元802,被配置为针对获取的每一个日志流,均执行:从当前日志流中得到对应于同一个事务的各个日志;以及将得到的该各个日志聚合出对应该事务的一个事务分片;其中,该事务分片中携带有当前日志流的标识以及该事务的事务标识。
相应地,事务组装单元804在确定是否已经获取一个事务对应的所有日志被写入的所有日志流,可以执行:依据从各个事务分片中获取的日志流的标识以及事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流。
相应地,事务组装单元804在利用该所有日志流进行数据组装时,可以执行:将携带有同一事务标识的所有事务分片进行组装。
作为其中一种可实现的方式,每一个事务标识对应一个日志流列表,该日志流列表中包括:具有该事务标识的事务对应的所有日志被写入的所有日志流的标识。
事务组装单元804在依据从各个事务分片中获取的日志流的标识以及事务标识确 定是否已经获取一个事务对应的所有日志被写入的所有日志流,时,可以执行:针对每一个事务分片,均执行:从当前事务分片中获取日志流的标识以及事务标识;在所获取的事务标识对应的日志流列表中,将所获取的该日志流的标识标记为到达;以及针对每一个日志流列表,如果当前日志流列表中所有的日志流的标识均被标记为到达,则确定已经获取了一个事务对应的所有日志被写入的所有日志流;其中,该一个事务的事务标识对应当前日志流列表。
作为其中一种可实现的方式,分片投递单元803,被配置为在分片获取单元802每聚合出一个事务分片时,将聚合出的该事务分片发送至一个以上的组装队列的其中一个组装队列。
事务组装单元804,被配置为利用至少一个线程从一个以上的组装队列中分别获取各个事务分片。
作为其中一种可实现的方式,每一个被写入日志流的日志中携带有准备版本号。
事务定序单元805,被配置为根据各日志中携带的准备版本号,确定各个事务之间的先后顺序,按照该先后顺序依次输出各个事务的事务数据。
作为其中一种可实现的方式,事务组装单元804,被配置为每组装出一个事务的事务数据时,利用该事务对应的各日志中携带的准备版本号,确定该事务数据的投递版本号,将确定出的该投递版本号携带在该事务数据中,然后将该事务数据发送至定序队列中。
相应地,事务定序单元805,被配置为利用每一个事务数据中的投递版本号及定序队列,输出各个事务的事务数据;其中,输出的顺序符合各事务之间的先后顺序。
作为其中一种可实现的方式,分片获取单元802在每聚合出一个事务分片时,根据聚合出该事务分片所使用的各日志中携带的准备版本号,确定该事务分片对应的版本号。
心跳产生单元806,被配置为每隔一个预设周期时间向每一个组装队列中发送一个全局心跳值;其中,该全局心跳值等于本预设周期时间内发送至各个组装队列中的各个事务分片中携带的版本号的最小值。
相应地,事务定序单元805具体被配置为:分别从所有组装队列中获取全局心跳值,若从所有组装队列中分别获取到了同一个全局心跳值,利用该同一个全局心跳值更新定序队列对应的投递检查值;将定序队列中投递版本号小于或等于投递检查值的事务数据进行输出。
作为其中一种可实现的方式,事务分片中携带的版本号为:聚合出该事务分片所使 用的各日志中携带的各准备版本号中的一个准备版本号。
作为另一种可实现的方式,事务分片中携带的版本号为:该事务分片所属事务的投递版本号,该投递版本号等于该事务对应的各日志中携带的各个准备版本号中的最大值。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述方法实施例中任一项所述的方法的步骤。
以及一种电子设备,包括:一个或多个处理器;以及与所述一个或多个处理器关联的存储器,所述存储器用于存储程序指令,所述程序指令在被所述一个或多个处理器读取执行时,执行前述方法实施例中任一项所述的方法的步骤。
本说明书实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序在被处理器执行时实现前述方法实施例中任一项所述的方法的步骤。
其中,存储器可以采用ROM(Read Only Memory,只读存储器)、RAM(Random Access Memory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机程序产品的形式体现出来,该计算机程序产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
以上的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (10)

  1. 一种处理事务日志的方法,其特征在于,其中,事务为访问和/或操作数据的数据库操作序列;一个事务对应的所有日志被写入分布式数据库中的至少两个日志流中;所述方法包括:
    从分布式数据库获取至少两个日志流;其中,每一个日志流中携带有事务标识;
    根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,则利用该所有日志流进行数据组装,以得到该事务对应的事务数据。
  2. 根据权利要求1所述的方法,其中,该方法进一步包括:针对获取的每一个日志流,均执行:
    从当前日志流中得到对应于同一个事务的各个日志;以及
    将得到的该各个日志聚合出对应该事务的一个事务分片;其中,该事务分片中携带有当前日志流的标识以及该事务的事务标识;
    相应地,所述确定是否已经获取一个事务对应的所有日志被写入的所有日志流,包括:
    依据从各个事务分片中获取的日志流的标识以及事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流;
    相应地,所述利用该所有日志流进行数据组装,包括:将携带有同一事务标识的所有事务分片进行组装。
  3. 根据权利要求2所述的方法,该方法进一步包括:每一个事务标识对应一个日志流列表,该日志流列表中包括:具有该事务标识的事务对应的所有日志被写入的所有日志流的标识;
    相应地,所述依据从各个事务分片中获取的日志流的标识以及事务标识确定是否已经获取一个事务对应的所有日志被写入的所有日志流,包括:
    针对每一个事务分片,均执行:从当前事务分片中获取日志流的标识以及事务标识;在所获取的事务标识对应的日志流列表中,将所获取的该日志流的标识标记为到达;以及
    针对每一个日志流列表,如果当前日志流列表中所有的日志流的标识均被标记为到达,则确定已经获取了一个事务对应的所有日志被写入的所有日志流;其中,该一个事务的事务标识对应当前日志流列表。
  4. 根据权利要求2所述的方法,其中,在每聚合出一个事务分片时,进一步包括;将聚合出的该事务分片发送至一个以上的组装队列的其中一个组装队列;
    在所述依据从各个事务分片中获取的日志流的标识以及事务标识确定是否已经获取一个事务对应的所有日志被写入的所有日志流之前,进一步包括:利用至少一个线程从一个以上的组装队列中分别获取各个事务分片。
  5. 根据权利要求2至4中任一项所述的方法,其特征在于,每一个被写入日志流的日志中携带有准备版本号;
    在得到事务对应的事务数据之后,该方法进一步包括:根据各日志中携带的准备版本号,确定各个事务之间的先后顺序,按照该先后顺序依次输出各个事务的事务数据。
  6. 根据权利要求5所述的方法,其中,在所述将携带有同一事务标识的所有事务分片进行组装时,进一步包括:
    每组装出一个事务的事务数据时,利用该事务对应的各日志中携带的准备版本号,确定该事务数据的投递版本号,将确定出的该投递版本号携带在该事务数据中,然后将该事务数据发送至定序队列中;
    所述按照该先后顺序依次输出各个事务的事务数据,包括:
    利用每一个事务数据中的投递版本号及定序队列,输出各个事务的事务数据;其中,输出的顺序符合各事务之间的先后顺序。
  7. 根据权利要求6所述的方法,其特征在于,该方法进一步包括:
    在每聚合出一个事务分片时,根据聚合出该事务分片所使用的各日志中携带的准备版本号,确定该事务分片对应的版本号;
    将该版本号携带在该事务分片中,并将该事务分片发送至一个以上的组装队列的其中一个组装队列;以及
    每隔一个预设周期时间向每一个组装队列中发送一个全局心跳值;其中,该全局心跳值等于本预设周期时间内发送至各个组装队列中的各个事务分片中携带的版本号的最小值;
    相应地,所述利用每一个事务数据中的投递版本号及定序队列输出各个事务的事务数据,包括:
    分别从所有组装队列中获取全局心跳值,
    若从所有组装队列中分别获取到了同一个全局心跳值,利用该同一个全局心跳值更 新所述定序队列对应的投递检查值;将所述定序队列中投递版本号小于或等于所述投递检查值的事务数据进行输出。
  8. 根据权利要求7所述的方法,其特征在于,事务分片中携带的版本号为:
    聚合出该事务分片所使用的各日志中携带的各准备版本号中的一个准备版本号;或者,
    该事务分片所属事务的投递版本号,该投递版本号等于该事务对应的各日志中携带的各个准备版本号中的最大值。
  9. 一种处理事务日志的装置,其特征在于,其中,事务为访问和/或操作数据的数据库操作序列;一个事务对应的所有日志被写入分布式数据库中的至少两个日志流中;所述装置包括:
    日志流获取单元,被配置为从分布式数据库获取至少两个日志流;其中,每一个日志流中携带有事务标识;
    事务组装单元,被配置为根据各日志流中携带的事务标识,确定是否已经获取一个事务对应的所有日志被写入的所有日志流,如果是,则利用该所有日志流进行数据组装,以得到该事务对应的事务数据。
  10. 一种计算设备,包括存储器和处理器,其特征在于,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1至8中任一项所述的方法。
PCT/CN2023/113247 2022-09-06 2023-08-16 处理事务日志的方法及装置 WO2024051454A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202211082758.5 2022-09-06
CN202211082758.5A CN115185787B (zh) 2022-09-06 2022-09-06 处理事务日志的方法及装置

Publications (1)

Publication Number Publication Date
WO2024051454A1 true WO2024051454A1 (zh) 2024-03-14

Family

ID=83522667

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2023/113247 WO2024051454A1 (zh) 2022-09-06 2023-08-16 处理事务日志的方法及装置

Country Status (2)

Country Link
CN (1) CN115185787B (zh)
WO (1) WO2024051454A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115185787B (zh) * 2022-09-06 2022-12-30 北京奥星贝斯科技有限公司 处理事务日志的方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106503020A (zh) * 2015-09-08 2017-03-15 阿里巴巴集团控股有限公司 日志数据处理方法及装置
CN107408070A (zh) * 2014-12-12 2017-11-28 微软技术许可有限责任公司 分布式存储系统中的多事务日志
CN112035222A (zh) * 2020-07-30 2020-12-04 武汉达梦数据库有限公司 一种基于日志解析同步的事务操作合并执行方法及装置
CN114138604A (zh) * 2021-12-01 2022-03-04 浪潮云信息技术股份公司 一种分布式数据库的事务日志处理方法及系统
CN114661816A (zh) * 2020-12-24 2022-06-24 金篆信科有限责任公司 数据同步方法、装置、电子设备、存储介质
CN114925073A (zh) * 2022-06-14 2022-08-19 九有技术(深圳)有限公司 支持灵活动态分片的分布式数据库架构及其实现方法
CN115185787A (zh) * 2022-09-06 2022-10-14 北京奥星贝斯科技有限公司 处理事务日志的方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106354765B (zh) * 2016-08-19 2020-06-26 广东亿迅科技有限公司 一种基于分布式采集的日志分析系统及方法
US10282268B1 (en) * 2016-10-31 2019-05-07 Cisco Technology, Inc. Software flow execution tracing
JP7151548B2 (ja) * 2019-02-26 2022-10-12 富士通株式会社 異常検知プログラム、異常検知方法及び異常検知装置
CN111563017B (zh) * 2020-04-28 2023-05-16 北京字节跳动网络技术有限公司 数据处理方法及装置
CN112764997B (zh) * 2021-01-28 2024-02-20 抖音视界有限公司 一种日志存储的方法、装置、计算机设备和存储介质
CN114817190A (zh) * 2022-04-29 2022-07-29 阿里云计算有限公司 日志同步的方法、装置、系统、设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107408070A (zh) * 2014-12-12 2017-11-28 微软技术许可有限责任公司 分布式存储系统中的多事务日志
CN106503020A (zh) * 2015-09-08 2017-03-15 阿里巴巴集团控股有限公司 日志数据处理方法及装置
CN112035222A (zh) * 2020-07-30 2020-12-04 武汉达梦数据库有限公司 一种基于日志解析同步的事务操作合并执行方法及装置
CN114661816A (zh) * 2020-12-24 2022-06-24 金篆信科有限责任公司 数据同步方法、装置、电子设备、存储介质
CN114138604A (zh) * 2021-12-01 2022-03-04 浪潮云信息技术股份公司 一种分布式数据库的事务日志处理方法及系统
CN114925073A (zh) * 2022-06-14 2022-08-19 九有技术(深圳)有限公司 支持灵活动态分片的分布式数据库架构及其实现方法
CN115185787A (zh) * 2022-09-06 2022-10-14 北京奥星贝斯科技有限公司 处理事务日志的方法及装置

Also Published As

Publication number Publication date
CN115185787B (zh) 2022-12-30
CN115185787A (zh) 2022-10-14

Similar Documents

Publication Publication Date Title
US11281644B2 (en) Blockchain logging of data from multiple systems
US11397709B2 (en) Automated configuration of log-coordinated storage groups
US10296606B2 (en) Stateless datastore—independent transactions
EP3191984B1 (en) Scalable log-based transaction management
US9323569B2 (en) Scalable log-based transaction management
US10303795B2 (en) Read descriptors at heterogeneous storage systems
CN107148617B (zh) 日志协调存储组的自动配置
US11822540B2 (en) Data read method and apparatus, computer device, and storage medium
WO2024051454A1 (zh) 处理事务日志的方法及装置
CN110750592A (zh) 数据同步的方法、装置和终端设备
CN105373563B (zh) 数据库切换方法及装置
US11522966B2 (en) Methods, devices and systems for non-disruptive upgrades to a replicated state machine in a distributed computing environment
WO2021109777A1 (zh) 一种数据文件的导入方法及装置
CN116304390B (zh) 时序数据处理方法、装置、存储介质及电子设备
PETRESCU Leader Election in a Cluster using Zookeeper
CN117762656A (zh) 数据的处理方法及装置、电子设备和存储介质
Liarokapis Event-driven architectures using Apache Kafka
CN118012584A (zh) 一种应用于天翼云备份产品的分布式任务调度方法
CN115567459A (zh) 一种基于缓冲区的流量控制系统与方法
CN117762495A (zh) 一种基于Kafka实现高并发高可用的异步命令处理方法
CN115168094A (zh) 数据核对方法、装置、设备、系统、存储介质及产品

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23862151

Country of ref document: EP

Kind code of ref document: A1