CN110691062B - 一种数据写入方法、装置及其设备 - Google Patents
一种数据写入方法、装置及其设备 Download PDFInfo
- Publication number
- CN110691062B CN110691062B CN201810738736.7A CN201810738736A CN110691062B CN 110691062 B CN110691062 B CN 110691062B CN 201810738736 A CN201810738736 A CN 201810738736A CN 110691062 B CN110691062 B CN 110691062B
- Authority
- CN
- China
- Prior art keywords
- log data
- storage medium
- data
- writing
- node
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 87
- 238000003860 storage Methods 0.000 claims abstract description 364
- 230000002688 persistence Effects 0.000 claims description 96
- 238000012545 processing Methods 0.000 claims description 79
- 230000004044 response Effects 0.000 claims description 16
- 230000002085 persistent effect Effects 0.000 claims description 5
- 238000013486 operation strategy Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 abstract description 24
- 238000005516 engineering process Methods 0.000 abstract description 17
- 230000008569 process Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 14
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 239000007787 solid Substances 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/26—Special purpose or proprietary protocols or architectures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种数据写入方法、装置及其设备,该方法包括:获取日志数据,所述日志数据包括存储位置信息;根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质;根据所述存储位置信息,通过RDMA写操作将所述日志数据写入到从节点的第二存储介质;通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。通过本申请的技术方案,可以使用RDMA技术实现分布式一致性协议,大幅度提升分布式一致性协议的性能,降低分布式一致性协议的延迟,减少网络通信的开销和代价。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据写入方法、装置及其设备。
背景技术
传统的TCP(Transmission Control Protocol,传输控制协议)/IP技术,在数据处理过程中,需要经过操作系统及其它软件层,占用大量服务器资源和内存总线带宽,数据在系统内存、处理器缓存和网络控制器缓存之间来回进行复制移动,给CPU(CentralProcessing Unit,中央处理器)和内存造成沉重负担,尤其是网络带宽、处理器速度与内存带宽的不匹配性,更加剧了网络延迟效应。
为此,提出RDMA(Remote DirectMemoryAccess,远程直接数据存取)技术,其是一种直接内存访问技术,可以将数据从一个服务器的内存直接传输到另一个服务器,无需双方操作系统的介入,不对操作系统造成任何影响。RDMA可以简单理解为:利用硬件和网络技术,服务器1的网卡可以直接读写服务器2的内存,最终达到高带宽、低延迟和低资源利用率的效果,应用程序不需要参与数据传输过程,只需要指定内存读写地址,开启传输并等待传输完成即可。
分布式一致性协议(如Paxos)是分布式数据库的核心组成部分,分布式一致性协议用于保证分布式数据库多副本数据的一致性、容灾切换等,其性能影响整个分布式数据库的性能。目前,分布式一致性协议是基于传统的网络框架(如TCP/UDP),如何高效的实现分布式一致性协议,是目前需要解决的问题。
发明内容
本申请提供一种数据写入方法,所述方法包括:
获取日志数据,所述日志数据包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质;
根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的第二存储介质;
通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;
根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。
本申请提供一种数据写入方法,所述方法包括:
接收主节点通过远程直接数据存取RDMA写操作写入的日志数据;其中,所述日志数据还包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到从节点的第二存储介质;
从所述从节点的第二存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述从节点的第三存储介质中;
在所述第二存储介质中更新所述日志数据的共识信息,所述共识信息用于使所述主节点确定所述日志数据已经写入到所述从节点的第三存储介质。
本申请提供一种数据写入方法,所述方法包括:
获取日志数据,所述日志数据包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到主节点的非易失存储介质;
根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的非易失存储介质。
本申请提供一种分布式数据库,包括主节点和从节点,其中:
所述主节点,用于获取日志数据,所述日志数据包括存储位置信息;根据所述存储位置信息将所述日志数据写入到所述主节点的第一存储介质;根据所述存储位置信息,通过RDMA写操作将所述日志数据写入到所述从节点的第二存储介质;
所述从节点,用于从所述第二存储介质中读取日志数据,将所述日志数据写入到所述从节点的第三存储介质;在所述第二存储介质中更新所述日志数据的共识信息;
所述主节点,还用于通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;根据所述共识信息确定所述日志数据已经写入到所述从节点的第三存储介质。。
本申请提供一种数据写入装置,所述装置包括:
获取模块,用于获取日志数据,所述日志数据包括存储位置信息;
写入模块,用于根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质,并根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的第二存储介质;
读取模块,用于通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;
确定模块,用于根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。
本申请提供一种数据写入装置,所述装置包括:
接收模块,用于接收主节点通过远程直接数据存取RDMA写操作写入的日志数据;其中,所述日志数据还包括存储位置信息;
写入模块,用于根据所述存储位置信息将所述日志数据写入到从节点的第二存储介质;从所述从节点的第二存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述从节点的第三存储介质中;
在所述第二存储介质中更新所述日志数据的共识信息,所述共识信息用于使所述主节点确定所述日志数据已经写入到所述从节点的第三存储介质。
本申请提供一种数据写入设备,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取日志数据,所述日志数据包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质;
根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的第二存储介质;
通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;
根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。
本申请提供一种数据写入设备,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
接收主节点通过远程直接数据存取RDMA写操作写入的日志数据;其中,所述日志数据还包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到从节点的第二存储介质;
从所述从节点的第二存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述从节点的第三存储介质中;
在所述第二存储介质中更新所述日志数据的共识信息,所述共识信息用于使所述主节点确定所述日志数据已经写入到所述从节点的第三存储介质。
基于上述技术方案,本申请实施例中,可以使用RDMA技术实现分布式一致性协议,大幅度提升分布式一致性协议的性能,降低分布式一致性协议的延迟,为实现高性能的下一代分布式数据库打下坚实基础,提升分布式数据库的吞吐量,减少网络通信的开销和代价,减少节点之间的通信次数,降低节点之间的通信延迟,满足在高并发场景下,低延迟、高吞吐的需求,减少资源开销。
附图说明
为了更加清楚地说明本申请实施例或者现有技术中的技术方案,下面将对本申请实施例或者现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据本申请实施例的这些附图获得其它的附图。
图1是本申请一种实施方式中的数据写入方法的流程图;
图2是本申请另一种实施方式中的数据写入方法的流程图;
图3A是本申请一种实施方式中的应用场景示意图;
图3B是本申请一种实施方式中的环形缓冲区的结构示意图;
图4是本申请另一种实施方式中的数据写入方法的流程图;
图5是本申请一种实施方式中的数据写入装置的结构图;
图6是本申请另一种实施方式中的数据写入装置的结构图。
具体实施方式
在本申请实施例使用的术语仅仅是出于描述特定实施例的目的,而非限制本申请。本申请和权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,此外,所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
实施例一:
本申请实施例中提出一种数据写入方法,可以应用于主节点,主节点也可以称为LEADER(领导者)节点,参见图1所示,为数据写入方法的流程图。
步骤101,获取日志数据,该日志数据可以包括存储位置信息。
其中,获取日志数据,可以包括但不限于:接收客户端发送的数据写入请求,该数据写入请求可以包括待存储数据;根据该数据写入请求获取日志数据,其中,该日志数据可以包括该待存储数据。当然,该日志数据还可以包括其它内容,例如,存储位置信息、日志标识、主节点的任期标识等,对此不做限制。
其中,存储位置信息可以包括但不限于:实际物理地址、或者实际物理地址的偏移量。若存储位置信息是实际物理地址,则日志数据的实际存储位置就是该实际物理地址;若存储位置信息是实际物理地址的偏移量,则该偏移量与首地址的和就是实际物理地址,日志数据的实际存储位置就是该实际物理地址。
步骤102,根据该存储位置信息将日志数据写入到主节点的第一存储介质。
步骤103,根据该存储位置信息,通过RDMA写操作将该日志数据写入到从节点(也可以称为FOLLOWER(跟随者)节点)的第二存储介质。
在一个例子中,根据该存储位置信息将日志数据写入到主节点的第一存储介质之后,还可以从主节点的第一存储介质中读取该日志数据,并将读取的日志数据写入到主节点的第四存储介质中,即对日志数据进行持久化处理。
步骤104,通过RDMA读操作,从该从节点的第二存储介质中读取共识信息,并根据该共识信息确定该日志数据是否写入到从节点的第三存储介质,即根据该共识信息确定从节点是否已经对该日志数据进行持久化处理。
进一步,若日志数据已经写入到主节点的第四存储介质(即主节点已经对日志数据进行持久化处理),且日志数据已经写入到从节点的第三存储介质(即从节点已经对日志数据进行持久化处理),则将该日志数据回放到数据集中。
然后,在获取下一条日志数据时,下一条日志数据可以包括该日志数据的共识达成索引,共识达成索引用于使从节点将该日志数据回放到数据集中。例如,将下一条日志数据写入到从节点的第二存储介质后,从节点从下一条日志数据中获取共识达成索引,将共识达成索引对应的该日志数据回放到数据集中。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
在上述实施例中,第一存储介质为共享内存的环形缓冲区,且第二存储介质为共享内存的环形缓冲区;此外,第四存储介质为持久化的存储介质,第三存储介质为持久化的存储介质。其中,对第一存储介质、第二存储介质、第四存储介质、第三存储介质的类型,本实施例中均不做限制,例如,第一存储介质和第二存储介质是掉电后数据会丢失的存储介质,如内存等,而第四存储介质和第三存储介质是掉电后数据不会丢失的存储介质,如磁盘、硬盘等。
本实施例中的磁盘,可以是SSD(Solid State Drive,固态驱动器)、HHD(HybridHard Drive,混合硬盘驱动器)、HDD(Hard Disk Drive,硬盘驱动器)等类型的磁盘,也可以是相变存储类型的磁盘,量子存储器类型的磁盘,石墨烯存储器类型的磁盘等等,对此磁盘的类型不做限制,只要用于存储数据即可。
在一个例子中,通过RDMA写操作将该日志数据写入到从节点的第二存储介质,可以包括但不限于:在日志数据的收集数量达到数量阈值(可以根据经验配置),或日志数据的收集时间达到时间阈值(可以根据经验配置)时,通过RDMA写操作将收集的多个日志数据写入到从节点的第二存储介质,即可以一次将多个日志数据写入到从节点的第二存储介质,减少日志数据写入次数。
在一个例子中,通过RDMA写操作将该日志数据写入到从节点的第二存储介质,可以包括但不限于:在上一条日志数据已经被写入到从节点的第三存储介质之前,即从节点对上一条日志数据进行持久化处理之前,可以通过RDMA写操作将该日志数据写入到从节点的第二存储介质。或者,在上一条日志数据已经被写入到从节点的第三存储介质之后,即从节点对上一条日志数据进行持久化处理之后,才通过RDMA写操作将日志数据写入到从节点的第二存储介质。
在一个例子中,在接收客户端发送的数据写入请求之后,主节点还可以向客户端发送写入成功响应,该写入成功响应携带存储位置信息;然后,主节点可以接收客户端发送的查询请求,该查询请求可以携带该存储位置信息;若该存储位置信息对应的日志数据已经写入到主节点的第四存储介质,且该日志数据已经写入到从节点的第三存储介质,则可以将该日志数据的共识达成索引发送给客户端;否则,可以丢弃该查询请求。或者,在接收客户端发送的数据写入请求之后,在存储位置信息对应的日志数据已经写入到主节点的第四存储介质,且该日志数据已经写入到从节点的第三存储介质之后,主节点还可以向客户端发送写入成功响应,该写入成功响应携带该日志数据的共识达成索引。
在一个例子中,主节点可以采用原子操作策略对主节点的第一存储介质进行操作;或者,可以采用加锁操作策略对主节点的第一存储介质进行操作。
基于上述技术方案,可以使用RDMA技术实现分布式一致性协议,大幅度提升分布式一致性协议的性能,降低分布式一致性协议的延迟,为实现高性能的下一代分布式数据库打下坚实基础,提升分布式数据库的吞吐量,减少网络通信的开销和代价,减少节点之间的通信次数,降低节点之间的通信延迟,满足在高并发场景下,低延迟、高吞吐的需求,可以大幅减少资源开销。
实施例二:
本申请实施例提出一种数据写入方法,可以应用于从节点,从节点也可以称为FOLLOWER(跟随者)节点,参见图2所示,为数据写入方法的流程图。
步骤201,接收主节点通过RDMA写操作写入的日志数据。
其中,该日志数据可以包括存储位置信息;当然,日志数据还可以包括其它内容,如待存储数据、日志标识、主节点的任期标识等,对此不做限制。
此外,存储位置信息可以包括但不限于:实际物理地址、或者实际物理地址的偏移量。若存储位置信息是实际物理地址,则日志数据的实际存储位置就是该实际物理地址;若存储位置信息是实际物理地址的偏移量,则该偏移量与首地址的和就是实际物理地址,日志数据的实际存储位置就是该实际物理地址。
步骤202,根据该存储位置信息将日志数据写入到从节点的第二存储介质。
其中,在主节点通过RDMA写操作将日志数据写入到从节点的第二存储介质时,从节点的底层硬件可以直接完成这个写入操作,可以根据该存储位置信息将日志数据写入到从节点的第二存储介质,而不需要将这个写入操作通知给从节点的处理器,即从节点的处理器不参与这个写入操作,对此不做限制。
步骤203,从该从节点的第二存储介质中读取日志数据,并将读取的该日志数据写入到从节点的第三存储介质中,即对该日志数据进行持久化处理。
在一个例子中,将读取的该日志数据写入到从节点的第三存储介质中,可以包括但不限于:若该日志数据包括的主节点的任期标识与本地记录的任期标识相同,则确定该日志数据有效,将该日志数据写入到从节点的第三存储介质中。此外,若该日志数据包括的主节点的任期标识与本地记录的任期标识不同,则确定该日志数据无效,拒绝将该日志数据写入到从节点的第三存储介质中。
步骤204,在该第二存储介质中更新该日志数据的共识信息,该共识信息可以用于使主节点确定该日志数据已经写入到从节点的第三存储介质。
在上述实施例中,第二存储介质可以为共享内存的环形缓冲区,第三存储介质可以为持久化的存储介质,对第二存储介质、第三存储介质的类型不做限制,例如,第二存储介质是掉电后数据会丢失的存储介质,如内存等,而第三存储介质是掉电后数据不会丢失的存储介质,如磁盘、硬盘等。
在一个例子中,若该日志数据还包括共识达成索引,则从节点还可以从第二存储介质或者第三存储介质中读取该共识达成索引对应的日志数据;进一步的,从节点可以将该共识达成索引对应的日志数据回放到数据集中。
基于上述技术方案,可以使用RDMA技术实现分布式一致性协议,大幅度提升分布式一致性协议的性能,降低分布式一致性协议的延迟,为实现高性能的下一代分布式数据库打下坚实基础,提升分布式数据库的吞吐量,减少网络通信的开销和代价,减少节点之间的通信次数,降低节点之间的通信延迟,满足在高并发场景下,低延迟、高吞吐的需求,可以大幅减少资源开销。
实施例三:
本申请实施例提出一种数据写入方法,该方法可以应用于主节点,该方法可以包括:获取日志数据,该日志数据包括存储位置信息;然后,根据该存储位置信息将该日志数据写入到主节点的非易失存储介质;此外,根据该存储位置信息,通过RDMA写操作将该日志数据写入到从节点的非易失存储介质。
在一个例子中,该数据写入方法可以参见实施例一的步骤101-步骤103,其区别在于:将日志数据写入到主节点的非易失存储介质,而不是第一存储介质,将日志数据写入到从节点的非易失存储介质,而不是第二存储介质。
其中,非易失存储介质包括但不限于:NVRAM介质(Non-Volatile Random AccessMemory,非易失性随机访问存储器)介质,对此不做限制。
其中,非易失存储介质是掉电后数据不会丢失的存储介质,因此,主节点将日志数据写入到主节点的非易失存储介质后,不会出现掉电数据丢失问题,不用对日志数据进行持久化处理,即将日志数据写入到NVRAM介质后,不用从NVRAM介质中读取日志数据,也不用将日志数据写入到磁盘。主节点将日志数据写入到从节点的非易失存储介质后,不会出现掉电数据丢失问题,从节点不用对日志数据进行持久化处理,即将日志数据写入到NVRAM介质后,不用从NVRAM介质中读取日志数据,也不用将日志数据写入到磁盘。
实施例四:
本申请实施例提出一种分布式数据库,包括主节点和从节点,其中:
主节点,用于获取日志数据,该日志数据包括存储位置信息;根据该存储位置信息将该日志数据写入到主节点的第一存储介质;根据该存储位置信息,通过RDMA写操作将该日志数据写入到从节点的第二存储介质;
从节点,用于从该第二存储介质中读取日志数据,将该日志数据写入到从节点的第三存储介质;在该第二存储介质中更新该日志数据的共识信息;
主节点,还用于通过RDMA读操作,从该从节点的第二存储介质中读取该共识信息;根据该共识信息确定该日志数据已经写入到第三存储介质。
其中,实施例四的处理过程可以参见实施例一和实施例二,在此不再赘述。
实施例五:
以下结合具体应用场景,对数据写入方法进行说明。参见图3A所示,为本实施例的应用场景示意图,图3A以三个节点为例,实际应用中,节点数量更多,在这些节点中,一个节点为LEADER节点,而其余节点为FOLLOWER节点,在实际应用中,FOLLOWER节点的数量可以为一个或者多个,对此不做限制。
在传统方式中,可以采用TCP/UDP的网络框架实现分布式一致性协议(例如,Paxos协议等),而与传统方式不同的是,在本实施例中,可以采用RDMA技术实现分布式一致性协议,从而大幅度提升分布式一致性协议的性能。
其中,RDMA技术是一种直接内存访问技术,可以将数据从一个节点(如LEADER节点)的内存直接传输到另一个节点(如FOLLOWER节点),无需双方操作系统的介入,不对操作系统造成任何影响,可以通过硬件实现零拷贝和内核旁路,无需CPU的参与,能够提供高性能的数据存取,具有低延迟、高吞吐、低CPU占用率等优势,从而广泛应用于数据中心网络和高性能集群中。
支持RDMA技术的协议可以包括但不限于:IB(InfiniBand,无限带宽)、RoCE(RDMAover Converged Ethernet,RDMA过融合以太网)、iWARP(Internet Wide Area RDMAProtocol,互联网广域RDMA协议)等,对此不做限制。
RDMA的传输类型可以包括有连接传输或者无连接传输,针对有连接传输,则可以在双方通信的队列上建立一个连接,并且这个连接是特定通信独占,例如,RC(ReliableConnection,可靠连接)传输和UC(Unreliable Connection,不可靠连接)传输等,此外,针对无连接传输,一个工作队列可以与任意多个工作队列进行通信,例如,UD(UnreliableDatagram,不可靠的数据报)传输等。
其中,分布式一致性协议(如Paxos等)是分布式数据库(如X-DB等分布式关系型数据库)的核心组成部分,分布式一致性协议用于保证分布式数据库多副本数据的一致性、容灾切换等能力,其性能影响分布式数据库的性能。
本申请实施例中,可以采用RDMA技术实现分布式一致性协议,结合新型网络硬件的RDMA特性,重新设计分布式一致性协议的软件架构,大幅度提升分布式一致性协议的性能,为实现高性能的下一代分布式数据库打下了坚实的基础,可以提升分布式数据库的吞吐量,并降低成本。而且,还可以降低分布式一致性协议中的网络通信开销,并降低节点之间的通信延迟,减少节点之间的通信次数,从而可以满足系统在高并发场景下,低延迟、高吞吐的需求。
为了采用RDMA技术实现分布式一致性协议,可以将共享内存的存储空间设计为环形缓冲区(RingBuffer)。在上述实施例中,LEADER节点的环形缓冲区称为第一存储介质,FOLLOWER节点的环形缓冲区称为第二存储介质。
其中,环形缓冲区用于存储日志数据,每个日志数据是环形缓冲区中的一个日志条目(log entry),且不同日志数据具有不同的日志标识,日志标识是递增的。例如,环形缓冲区存储的第一个日志数据为日志标识1,环形缓冲区存储的第二个日志数据为日志标识2,以此类推,这些日志数据的日志标识递增。
参见图3B所示,为环形缓冲区的结构示意图,这个环形缓冲区由多个指针动态描述当前状态,每个指针为相对于环形缓存区的起始物理地址的偏移。
head(头)指针,指向第一个日志数据的起始位置,由当前节点更新。例如,若head指针为100,表示第一个日志数据的起始位置是起始物理地址+100。
tail(尾)指针,指向最后一个日志数据的起始位置,由当前节点更新,用于计算RDMA写操作的实际物理地址的起始位置。例如,若tail指针为1000,则表示最后一个日志数据的起始位置是起始物理地址+1000。而且,若最后一个日志数据的长度为100,则RDMA写操作的实际物理地址的起始位置是起始物理地址+1100,也就是说,下一个日志数据的起始位置是起始物理地址+1100。
end(结束)指针,指向下一个日志数据的起始位置,在有新日志数据写入时,由当前节点更新,end指针指向的起始位置,也就是RDMA写操作的实际物理地址的起始位置。例如,若tail指针为1000,最后一个日志数据的长度为100,则end指针为1100,即RDMA写操作的实际物理地址的起始位置是起始物理地址+1100,也就是说,下一个日志数据的起始位置是起始物理地址+1100。
persist(持久化)指针,用于指向本地持久化的日志数据的起始位置,由当前节点更新。例如,若persist指针为600,且第六个日志数据的起始位置是起始物理地址+600,则表示当前节点已经对第六个日志数据进行持久化处理。
commit(共识达成)指针,指向最新达到committed状态的日志数据的起始位置,即多数节点均已经对committed状态的日志数据进行持久化处理。例如,若commit指针为400,且第四个日志数据的起始位置是起始物理地址+400,则表示多数节点均已经对第四个日志数据已经进行持久化处理,即第四个日志数据达到committed状态。此外,commit指针可以小于等于persist指针。
在一个例子中,针对在环形缓冲区内存储的日志数据,可以包括但不限于以下之一或者任意组合:日志标识(即当前日志数据的日志标识)、存储位置信息、LEADER节点的任期标识、待存储数据、共识达成索引(即已经进行持久化处理的日志数据的日志标识)、字符长度,对此日志数据的内容不做限制。
其中,日志标识可以是日志数据的唯一标识,例如,环形缓冲区内存储的第一个日志数据的日志标识是日志标识1,环形缓冲区内存储的第二个日志数据的日志标识是日志标识2,以此类推,这些日志数据的日志标识是递增的。
存储位置信息可以是实际物理地址,或者,实际物理地址的偏移量。例如,若日志数据需要存储在起始物理地址+500,则该日志数据的存储位置信息可以是起始物理地址+500,即通过起始物理地址+500表示日志数据的实际物理地址,该起始物理地址是环形缓冲区内存储数据的首地址。或者,该日志数据的存储位置信息可以是500,即通过500表示实际物理地址的偏移量,该偏移量是相对起始物理地址的偏移量,这样,日志数据的实际物理地址是起始物理地址+500。
LEADER节点的任期标识可以是当前LEADER的任期号(如term)。例如,LEADER节点可以发生变化,如节点1是第1届的LEADER节点,节点2是第2届的LEADER节点,节点1是第3届的LEADER节点,以此类推。基于此,在第1届任期内,若节点1获取到日志数据,则日志数据的任期标识就是1,表示节点1是第1届的LEADER节点;在第3届任期内,若节点1获取到日志数据,则日志数据的任期标识就是3,表示节点1是第3届的LEADER节点。
在一个例子中,还可以将存储位置信息和任期标识组成日志数据的编号(如index),该日志数据的编号作为该日志数据的全局唯一标识,并且日志数据的编号可以是递增的。例如,日志数据的编号可以为(500,1),该编号可以表示日志数据的存储位置信息是500,LEADER节点的任期标识可以是1。
共识达成索引(如committed_index)可以是已经进行持久化处理的日志数据的日志标识,例如,多数节点(LEADER节点和多数FOLLOWER节点)已经对第四个日志数据进行持久化处理,没有节点或者少数节点未对第四个日志数据进行持久化处理,但多数节点或者所有节点还未对第五个日志数据进行持久化处理,则共识达成索引是日志标识4,小于等于日志标识4的所有日志数据均已经进行持久化处理。若多数节点均已经对第五个日志数据进行持久化处理,但有多数还未对第六个日志数据进行持久化处理,则共识达成索引是日志标识5,小于等于日志标识5的所有日志数据均已经进行持久化处理,以此类推。
字符长度(如data_size)表示日志数据的总长度,即日志数据的所有字段的开销之和,该字符长度也是日志数据所占内存空间的总大小,以字符长度为依据,可以更新环形缓冲区的指针,如上述tail指针、end指针、commit指针等。
待存储数据表示当前请求的具体操作指令,是需要在所有节点(如LEADER节点和所有FOLLOWER节点)存储的数据,是由客户端发送给LEADER节点,且LEADER节点需要将待存储数据存储到所有节点。而且,LEADER节点是将待存储数据转换为日志数据(如log_entry数据),然后存储到所有节点。
实施例六:
在实施例五的基础上,本申请实施例中的数据写入方法可以包括:
步骤401,客户端304向LEADER节点301发送数据写入请求,该数据写入请求可以包括待存储数据,为了方便描述,后续以待存储数据A为例。
步骤402,LEADER节点301根据该数据写入请求获取日志数据A。
其中,日志数据A包括但不限于以下至少一种:日志标识、存储位置信息、LEADER节点301的任期标识、待存储数据A、共识达成索引、字符长度。
假设上一个日志数据为日志标识3,则日志数据A的日志标识为日志标识4。
假设当前的end指针为400,则表示日志数据A的起始位置是起始物理地址+400,也就是说,日志数据A的存储位置信息是实际物理地址的偏移量400。
假设LEADER节点301是第1届的LEADER节点,且LEADER节点301当前处于第1届任期内,则LEADER节点301的任期标识可以为1。
假设LEADER节点301、FOLLOWER节点302和FOLLOWER节点303均已经对日志标识3的日志数据进行持久化处理,则共识达成索引为日志标识3。
步骤403,LEADER节点301将日志数据A写入到LEADER节点301的环形缓冲区301,例如,从环形缓冲区301的起始物理地址+400开始,将日志数据A写入到环形缓冲区301,然后更新tail指针和end指针,对此不做限制。
步骤404,LEADER节点301从环形缓冲区301中读取日志数据A,对日志数据A进行持久化处理,如将日志数据A写入到LEADER节点301的磁盘(即第四存储介质)中,从而在异常掉电时,利用磁盘中的数据恢复日志数据A。
然后,LEADER节点301可以更新persist指针,如将persist指针更新为日志数据A的起始位置,表示当前已经对日志数据A进行持久化处理。
步骤405,LEADER节点301将日志数据A写入到FOLLOWER节点302的环形缓冲区302,例如,从环形缓冲区302的起始物理地址+400开始,将日志数据A写入到环形缓冲区302,环形缓冲区302的起始物理地址可以与环形缓冲区301的起始物理地址相同或者不同。此外,LEADER节点301将日志数据A写入到FOLLOWER节点303的环形缓冲区303,例如,从环形缓冲区303的起始物理地址+400开始,将日志数据A写入到环形缓冲区303,环形缓冲区303的起始物理地址可以与环形缓冲区301的起始物理地址相同或者不同。
由于向环形缓冲区303中写入日志数据A的过程,与向环形缓冲区302中写入日志数据A的过程类似,因此,后续以环形缓冲区302的写入为例。
其中,LEADER节点301将日志数据A写入到FOLLOWER节点302的环形缓冲区302时,LEADER节点301可以通过RDMA写操作(即RDMA WRITE操作)将日志数据A写入到环形缓冲区302,而且,LEADER节点301从环形缓冲区302的起始物理地址+400开始,将日志数据A写入到环形缓冲区302。
由于LEADER节点301的环形缓冲区301与FOLLOWER节点302的环形缓冲区302用于存储相同的日志数据,因此,日志数据A在环形缓冲区301的偏移量400,也就是日志数据A在环形缓冲区302的偏移量,基于此,从环形缓冲区302的起始物理地址+400开始,将日志数据A写入到环形缓冲区302。
在LEADER节点301通过RDMA写操作将日志数据A写入到环形缓冲区302时,FOLLOWER节点302的底层硬件可以直接完成这个写入操作,即从环形缓冲区302的起始物理地址+400开始,将日志数据A写入到环形缓冲区302,而不需要将这个写入操作通知给FOLLOWER节点302的处理器,即LEADER节点301的处理器和FOLLOWER节点302的处理器均不参与这个写入操作。
例如,LEADER节点301的网卡可以直接将日志数据A传输给FOLLOWER节点302的网卡,而FOLLOWER节点302的网卡接收到日志数据后,根据日志数据中的存储位置信息400,直接从环形缓冲区302的起始物理地址+400开始,将日志数据A写入到环形缓冲区302,而不需要通知给处理器进行处理。
步骤406,FOLLOWER节点302从环形缓冲区302中读取日志数据A,对日志数据A进行持久化处理,如将日志数据A写入到FOLLOWER节点302的磁盘(即第三存储介质)中,从而在异常掉电时,利用磁盘中的数据恢复日志数据A。此外,FOLLOWER节点303的处理过程类似,后续不再重复赘述。
其中,FOLLOWER节点302对日志数据的写入过程是无感知的,因此,可以在FOLLOWER节点302启用特定线程,并通过特定线程周期性轮询环形缓冲区302内的日志数据。若发现环形缓冲区302内有新日志数据(如日志数据A)写入,则从环形缓冲区302中读取日志数据A,对日志数据A进行持久化处理,然后,FOLLOWER节点302还可以更新tail指针和end指针,对此不做限制。
在一个例子中,FOLLOWER节点302对日志数据A进行持久化处理之前,还可以检查日志数据A的有效性,若日志数据A有效,则可以对日志数据A进行持久化处理,若日志数据A无效,则拒绝对日志数据A进行持久化处理。
例如,若日志数据A包括的任期标识1与本地记录的任期标识相同,则可以确定日志数据A有效。若日志数据A包括的任期标识1与本地记录的任期标识不同,则可以确定日志数据A无效。其中,本地记录的任期标识表示当前第几届的LEADER节点正在工作,例如,若FOLLOWER节点302记录的任期标识是1,则表示第1届的LEADER节点正在工作,若FOLLOWER节点302记录的任期标识是2,则表示第2届的LEADER节点正在工作,以此类推。当然,上述方式只是对日志数据A进行有效性检查的一个示例,对此不做限制。
步骤407,FOLLOWER节点302对日志数据A进行持久化处理后,更新环形缓冲区302中的persist指针,如将persist指针更新为日志数据A的起始位置,如起始物理地址+400,表示已经对日志数据A进行持久化处理。其中,persist指针可以表示日志数据A的共识信息,该共识信息可以使LEADER节点301确定日志数据A已经进行持久化处理。而且,在日志数据A之前的日志数据(如日志标识小于日志标识4的所有日志数据),均已经进行持久化处理。
步骤408,LEADER节点301通过RDMA读操作(如RDMA READ操作),从FOLLOWER节点302的环形缓冲区302中读取共识信息,如读取环形缓冲区302的persist指针,并根据该共识信息确定已经进行持久化处理的日志数据。
其中,可以在LEADER节点301启用特定线程,并通过该特定线程周期性的触发RDMA读操作,使得LEADER节点301通过所述RDMA读操作从每个FOLLOWER节点的环形缓冲区中读取共识信息,并根据共识信息确定已经进行持久化处理的日志数据。基于每个FOLLOWER节点的共识信息、LEADER节点301的共识信息,还可以更新LEADER节点301本地的commit指针。
例如,若环形缓冲区302的persist指针的偏移量为400,则表示FOLLOWER节点302已经对日志数据A进行持久化处理。若环形缓冲区303的persist指针的偏移量为400,则表示FOLLOWER节点303已经对日志数据A进行持久化处理。若LEADER节点301的persist指针的偏移量为400,则表示LEADER节点301已经对日志数据A进行持久化处理(可参见步骤404),因此,表示日志数据A已被LEADER节点301、FOLLOWER节点302和FOLLOWER节点303中的多数节点(本应用场景为所有节点)进行持久化处理,因此,LEADER节点301可以将本地的commit指针更新为起始物理地址+400,表示多数节点均已经对日志数据A进行持久化处理。
例如,若环形缓冲区302的persist指针的偏移量为300,则表示FOLLOWER节点302已经对日志数据B(如日志数据A的上一条日志数据)进行持久化处理。若环形缓冲区303的persist指针的偏移量为300,则表示FOLLOWER节点303已经对日志数据B进行持久化处理。若LEADER节点301的persist指针的偏移量为400,则表示LEADER节点301已经对日志数据A进行持久化处理,综上所述,日志数据B已经被多数节点进行持久化处理,日志数据A还没有被多数节点进行持久化处理,因此,LEADER节点301可以将本地的commit指针更新为起始物理地址+300,表示多数节点已经对日志数据B进行持久化处理。
其中,上述使用特定线程集中、批量地获取每个FOLLOWER节点的日志数据的记录情况,继而更新本地commit指针的方式,可以极大地减少CPU消耗,尤其是在高并发场景下,可以保持良好的性能。此外,可以有效减少网络中的消息数量,尤其在大量FOLLOWER节点时,能够保证算法的高吞吐水平。
在一个例子中,上述执行顺序只是为了方便描述给出的一个示例,在实际应用中,还可以改变步骤之间的执行顺序,对此执行顺序不做限制。而且,在其它实施例中,并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其它实施例中可能被分解为多个步骤进行描述;本说明书中所描述的多个步骤,在其它实施例也可能被合并为单个步骤进行描述。
在一个例子中,LEADER节点301将本地的commit指针更新为起始物理地址+400后,即多数节点均已经对日志数据A进行持久化处理后,若LEADER节点301接收到客户端304发送的数据写入请求,则可以根据该数据写入请求获取日志数据C,且日志数据C的共识达成索引为日志数据A的日志标识4。
此外,LEADER节点301将本地的commit指针更新为起始物理地址+400后,即多数节点均已经对日志数据A进行持久化处理后,LEADER节点301还可以将日志数据A回放到数据集中,例如,从日志数据A中解析出上述待存储数据A,并将待存储数据A回放到数据集中,对此数据回放过程不做限制。
进一步的,FOLLOWER节点302从环形缓冲区302中解析出日志数据C后,发现日志数据C中的共识达成索引为日志标识4,则表示日志标识4对应的日志数据A已经被多数节点进行持久化处理,因此,FOLLOWER节点302可以将本地的commit指针更新为起始物理地址+400,以表示多数节点均已经对日志数据A进行持久化处理,并将共识达成索引对应的日志数据A回放到数据集中,例如,从日志数据A中解析出待存储数据A,并将待存储数据A回放到数据集中。
同理,FOLLOWER节点303从环形缓冲区303中解析出日志数据C后,发现日志数据C中的共识达成索引为日志标识4,则表示日志标识4对应的日志数据A已经被多数节点进行持久化处理,因此,FOLLOWER节点303可以将本地的commit指针更新为起始物理地址+400,以表示多数节点均已经对日志数据A进行持久化处理,并将共识达成索引对应的日志数据A回放到数据集中,例如,从日志数据A中解析出待存储数据A,并将待存储数据A回放到数据集中。
经过上述处理,LEADER节点301、FOLLOWER节点302和FOLLOWER节点303均可以将待存储数据A回放到数据集,从而保证数据回放的一致性。
在上述方式中,由于FOLLOWER节点之间没有进行交互,即FOLLOWER节点之间不会传输已经进行持久化处理的日志数据信息,基于此,LEADER节点301可以将共识达成索引封装在下一条日志数据中,并随下一条日志数据一起发送给FOLLOWER节点302和FOLLOWER节点303,而不是单独的传输共识达成索引,从而可以减少一次消息的传输,并且对共识流程没有影响。
基于上述技术方案,本申请实施例中,可以使用RDMA技术实现分布式一致性协议,大幅度提升分布式一致性协议的性能,降低分布式一致性协议的延迟,为实现高性能的下一代分布式数据库打下坚实基础,提升分布式数据库的吞吐量,减少网络通信的开销和代价,减少节点之间的通信次数,降低节点之间的通信延迟,满足在高并发场景下,低延迟、高吞吐的需求,可以大幅减少资源开销。而且,在日志数据的同步复制流程中,采用RDMA写操作和RDMA读操作,实现LEADER节点和FOLLOWER节点的通信,完成日志数据的复制和共识消息的确认,可以达到最优通信效果,并减轻对CPU资源的消耗。
可以将分布式一致性协议与RDMA进行结合,基于RDMA技术进行网络通信,达到最低的延迟开销,在高并发场景下,能够保持低延迟、高吞吐的分布式一致性协议,LEADER节点能够通过RDMA写操作和定时RDMA读操作的方式,主动完成共识过程和日志数据复制过程中,主从节点的通信交互。另外,采用LEADER节点主动通信的模式,FOLLOWER节点无需进行主动回复,可以大幅度减少资源开销,可以最大程度发挥RDMA高性能通信的特点。
实施例七:
在实施例五和实施例六的基础上,本申请实施例中,还可以对数据写入方法进行优化,例如,可以采用Batch(批量)方式对数据写入方法进行优化。
具体的,LEADER节点在通过RDMA写操作将日志数据写入到FOLLOWER节点的环形缓冲区时,在日志数据的收集数量达到数量阈值,或者,日志数据的收集时间达到时间阈值时,LEADER节点才通过RDMA写操作将收集的多个日志数据写入到FOLLOWER节点的环形缓冲区,即可以一次将多个日志数据写入到FOLLOWER节点的环形缓冲区,从而可以减少日志数据写入次数。
例如,通过Batch的方式,LEADER节点在日志数据的收集数量达到数量阈值,或者,日志数据的收集时间达到时间阈值时,将收集的多个日志数据打包合并成Batch消息,并通过RDMA写操作将Batch消息发送给FOLLOWER节点,由FOLLOWER节点将Batch消息中的每个日志数据写入到环形缓冲区。
上述方式可以对日志数据进行批量同步,通过多条日志数据均分一轮处理的开销,可以有效地减少日志数据的写入次数,在高并发场景下提升吞吐量。
实施例八:
在实施例五和实施例六的基础上,本申请实施例中,可以对数据写入方法进行优化,例如,可以采用Pipeline(并行线程)方式对数据写入方法进行优化。
具体的,在FOLLOWER节点已经对上一条日志数据进行持久化处理之前,LEADER节点可以通过RDMA写操作将日志数据写入到FOLLOWER节点的环形缓冲区,而不用等到FOLLOWER节点对上一条日志数据进行持久化处理之后,才通过RDMA写操作将日志数据写入到FOLLOWER节点的环形缓冲区。
例如,Pipeline是指多线程并行执行分布式一致性协议实例,即在上一条日志数据的共识达成确认(即多数节点对上一条日志数据进行持久化处理)之前,LEADER节点可以并发地开始下一条日志数据的处理流程,通过提高并发数量,可以有效地降低延迟,提升性能,在网络传输延迟较高时,效果会更加明显。
由于每个日志数据的存储位置信息是独立的,即使由于网络问题或并发调度问题,导致日志数据达到FOLLOWER节点是乱序,FOLLOWER节点也可以按序写入正确位置,不会产生乱序问题。例如,日志标识5的日志数据先到达FOLLOWER节点,而日志标识4的日志数据后到达FOLLOWER节点,基于此,FOLLOWER节点利用日志标识5的日志数据中的存储位置信息,从环形缓冲区的起始物理地址+400开始,将该日志数据写入到环形缓冲区;以及,利用日志标识4的日志数据中的存储位置信息,从环形缓冲区的起始物理地址+300开始,将该日志数据写入到环形缓冲区;显然,上述方式不会出现乱序问题。
上述方式可以进行多个日志数据的处理,降低单个日志数据的处理延迟。
实施例九:
在实施例五和实施例六的基础上,本申请实施例中,可以对数据写入方法进行优化,例如,可以采用多线程与异步拆分方式对数据写入方法进行优化。
具体的,LEADER节点在接收到客户端发送的数据写入请求之后,就向客户端发送写入成功响应,该写入成功响应携带存储位置信息,如偏移量400等,而不是等日志数据被多数节点进行持久化处理后,才向客户端发送写入成功响应。客户端在接收到写入成功响应后,可以周期性向LEADER节点发送查询请求,一直到日志数据被多数节点进行持久化处理。进一步的,LEADER节点在接收到该查询请求后,可以从该查询请求中解析出存储位置信息。然后,若该存储位置信息对应的日志数据已经被多数节点进行持久化处理,则可以将该日志数据的共识达成索引发送给客户端,以使客户端获知日志数据已经达成共识,并停止发送查询请求;否则丢弃该查询请求,等待下次继续接收查询请求。
例如,在数据写入请求达到LEADER节点后,LEADER节点根据数据写入请求获取日志数据,且该日志数据包括存储位置信息,如日志数据的实际物理地址的偏移量,并向客户端返回写入成功响应,该写入成功响应携带存储位置信息,如偏移量400等,该存储位置信息用于使客户端查询日志数据写入情况。
然后,LEADER节点异步执行RDMA写操作、更新日志数据的commit指针等操作,对于这些操作可以参见上述实施例三和实施例四,对此不做限制。
此外,客户端可以发送携带该存储位置信息的查询请求,而LEADER节点接收到该查询请求后,若该存储位置信息对应的日志数据已经被多数节点进行持久化处理,则可以将该日志数据的共识达成索引发送给客户端,以使客户端获知日志数据已经达成共识,并停止发送查询请求。若该存储位置信息对应的日志数据还没有被多数节点进行持久化处理,则阻塞这个查询请求,继续等待。
上述方式可以减少客户端的等待时间,即LEADER节点尽快向客户端发送写入成功响应,释放客户端线程处理其它任务,可以节约大量的系统资源,提升系统性能,可以有效地消除CPU的性能瓶颈,并提供稳定可用的服务。
实施例十:
在实施例五和实施例六的基础上,本申请实施例中,可以对数据写入方法进行优化,例如,可以采用原子操作(如CAS)方式对数据写入方法进行优化。
具体的,LEADER节点/FOLLOWER节点可以采用原子操作策略对环形缓冲区进行操作,而不使用加锁操作策略对环形缓冲区进行操作,从而实现无锁设计。例如,在高并发场景下,锁竞争问题将成为影响系统性能的瓶颈,使处理器长时间处于睡眠或等待调度的状态,导致CPU利用率低下。因此,本实施例中,在更新协议的状态变量时,可以采用无锁实现方案,也就是说,由于环形缓冲区是一个全局共享内存,因此,在对环形缓冲区进行线程同步时,可以采用原子操作代替加锁实现,从而避免在高并发场景下,锁竞争成为性能瓶颈。
其中,可以将end指针声明为atomic(原子)对象,然后在需要更新end指针时,调用atomic类提供的compare_exchange_weak方法。此外,在更新tail指针之前,可以先获取end指针的当前值(即期望值),然后传入需要更新的目标值,这样,在执行更新操作时,可以对比end指针变量的值是否一致。如果在这个过程中,有其它线程已经更新end指针变量的值,则会与期望值不一致,即更新失败,将期望值修改为end指针的当前值。如果没有更新冲突,则期望值与end指针的当前值相同,更新会成功,即将end指针修改为目标值。
实施例十一:
在实施例五和实施例六的基础上,本申请实施例中,可以对数据写入方法进行优化,例如,可以采用NVMeoF(NVMe overFabric)方式对数据写入方法进行优化。具体的,在LEADER节点写入日志数据时,是将日志数据写入到LEADER节点的NVRAM(Non-VolatileRandom Access Memory,非易失性随机访问存储器)介质,并将日志数据写入到FOLLOWER节点的NVRAM介质,而不是将日志数据写入到LEADER节点/FOLLOWER节点的环形缓冲区。
由于NVRAM介质是非易失存储介质,不会出现环形缓冲区的掉电数据丢失问题,因此,不用对日志数据进行持久化处理,即将日志数据写入到NVRAM介质后,不用从NVRAM介质中读取日志数据,也不用将日志数据写入到磁盘。
例如,NVRAM介质是一种新型的远程存储方案,可以利用RDMA技术完成对FOLLOWER节点的NVRAM介质的读写操作。若FOLLOWER节点采用NVRAM介质存储日志数据,则LEADER节点可以通过NVMe-oF技术,直接在FOLLOWER节点的NVRAM介质中写入日志数据,由于NVRAM介质是非易失存储介质,因此,FOLLOWER节点不用对日志数据进行持久化处理,即LEADER节点对FOLLOWER节点的写操作,直接完成持久化。
而且,由于FOLLOWER节点不用对日志数据进行持久化处理,因此,在LEADER节点对FOLLOWER节点的写操作完成后,可以直接确定日志数据已经进行持久化处理,LEADER节点不用通过RDMA读操作获知日志数据是否已经进行持久化处理,从而可以减少后续的RDMA读操作,节约通信开销。
本实施例的处理流程可以包括:LEADER节点在接收到客户端发送的数据写入请求后,可以获取日志数据,对此过程不再赘述。然后,LEADER节点在NVMF提交队列中提交对应的NVMF命令,并将NVMF命令和日志内容一起写入到本地注册的内存地址,并通过RDMA发送队列发送出去。FOLLOWER节点的网卡收到消息后,将NVMF命令和日志内容直接写到本地注册的内存地址,并发送一个完成事件到完成队列中。FOLLOWER节点接收到完成事件后,执行NVMF持久化操作,并将处理成功的结果发送给LEADER节点,这样,LEADER节点可以直接得到FOLLOWER节点的日志持久化信息,统计共识的达成情况。
上述实施例中,可以通过SPDK(Storage Performance Development Kit,存储性能开发工具包)实现存储过程。其中,SPDK是一种用户态存储方案,作为NVMeoF方式的可选本地存储协议,使得LEADER节点和FOLLOWER节点在旁路内核的情况下访问NVRAM介质,充分发挥NVRAM介质高速存储的特点。
基于与上述方法同样的申请构思,本申请实施例中还提供一种数据写入装置,如图5所示,为所述数据写入装置的结构图,所述装置可以包括:
获取模块501,用于获取日志数据,所述日志数据包括存储位置信息;
写入模块502,用于根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质,并根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的第二存储介质;
读取模块503,用于通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;
确定模块504,用于根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。
所述写入模块501,还用于从所述主节点的第一存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述主节点的第四存储介质中。
在一个例子中,所述数据写入装置还可以包括(在图中未示出):处理模块,用于若所述日志数据已经写入到所述主节点的第四存储介质,且所述日志数据已经写入到所述从节点的第三存储介质,将所述日志数据回放到数据集中;
在一个例子中,所述获取模块501在获取下一条日志数据时,所述下一条日志数据还包括所述日志数据的共识达成索引,所述共识达成索引用于使从节点将所述日志数据回放到数据集中。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据写入设备(如上述主节点),包括:处理器和机器可读存储介质;其中,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:获取日志数据,所述日志数据包括存储位置信息;根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质;根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的第二存储介质;通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:获取日志数据,所述日志数据包括存储位置信息;根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质;根据所述存储位置信息,通过RDMA写操作将所述日志数据写入到从节点的第二存储介质;通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。
基于与上述方法同样的申请构思,本申请实施例中还提供一种数据写入装置,如图6所示,为所述数据写入装置的结构图,所述装置可以包括:
接收模块601,用于接收主节点通过远程直接数据存取RDMA写操作写入的日志数据;其中,所述日志数据还包括存储位置信息;
写入模块602,用于根据所述存储位置信息将所述日志数据写入到从节点的第二存储介质;从所述从节点的第二存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述从节点的第三存储介质中;
在所述第二存储介质中更新所述日志数据的共识信息,所述共识信息用于使所述主节点确定所述日志数据已经写入到所述从节点的第三存储介质。
基于与上述方法同样的申请构思,本申请实施例还提供一种数据写入设备(如上述从节点),所述数据写入设备包括:处理器和机器可读存储介质;其中,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:接收主节点通过RDMA写操作写入的日志数据;其中,所述日志数据还包括存储位置信息;根据所述存储位置信息将所述日志数据写入到从节点的第二存储介质;从所述从节点的第二存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述从节点的第三存储介质中;在所述第二存储介质中更新所述日志数据的共识信息,所述共识信息用于使所述主节点确定所述日志数据已经写入到所述从节点的第三存储介质。
基于与上述方法同样的申请构思,本申请实施例还提供一种机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述计算机指令被执行时进行如下处理:接收主节点通过远程直接数据存取RDMA写操作写入的日志数据;其中,所述日志数据还包括存储位置信息;根据所述存储位置信息将所述日志数据写入到从节点的第二存储介质;从所述从节点的第二存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述从节点的第三存储介质中;在所述第二存储介质中更新所述日志数据的共识信息,所述共识信息用于使所述主节点确定所述日志数据已经写入到所述从节点的第三存储介质。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (22)
1.一种数据写入方法,其特征在于,所述方法包括:
获取日志数据,所述日志数据包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质;
根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的第二存储介质;
对所述日志数据进行持久化处理,将persist指针更新为所述日志数据的起始位置,所述persist指针表示所述日志数据的共识信息;
通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;
根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。
2.根据权利要求1所述的方法,其特征在于,所述获取日志数据包括:
接收客户端发送的数据写入请求,所述数据写入请求包括待存储数据;
根据所述数据写入请求获取日志数据,所述日志数据包括所述待存储数据。
3.根据权利要求1或2所述的方法,其特征在于,
所述日志数据还包括:日志标识、所述主节点的任期标识;
所述存储位置信息具体包括:实际物理地址、或者实际物理地址的偏移量。
4.根据权利要求1所述的方法,其特征在于,所述根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质之后,还包括:
从所述主节点的第一存储介质中读取所述日志数据;
将读取的所述日志数据写入到所述主节点的第四存储介质中。
5.根据权利要求4所述的方法,其特征在于,所述第一存储介质为共享内存的环形缓冲区,所述第二存储介质为共享内存的环形缓冲区;所述第三存储介质为持久化的存储介质,所述第四存储介质为持久化的存储介质。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述日志数据已经写入到所述主节点的第四存储介质,且所述日志数据已经写入到所述从节点的第三存储介质,则将所述日志数据回放到数据集中;
在获取下一条日志数据时,所述下一条日志数据还包括所述日志数据的共识达成索引,所述共识达成索引用于使从节点将所述日志数据回放到数据集中。
7.根据权利要求1所述的方法,其特征在于,
通过RDMA写操作将所述日志数据写入到从节点的第二存储介质,包括:
在日志数据的收集数量达到数量阈值,或日志数据的收集时间达到时间阈值时,通过RDMA写操作将收集的多个日志数据写入到从节点的第二存储介质。
8.根据权利要求1所述的方法,其特征在于,
通过RDMA写操作将所述日志数据写入到从节点的第二存储介质,包括:
在上一条日志数据已经被写入到所述从节点的第三存储介质之前,通过RDMA写操作将所述日志数据写入到从节点的第二存储介质;或者,
在上一条日志数据已经被写入到所述从节点的第三存储介质之后,通过RDMA写操作将所述日志数据写入到从节点的第二存储介质。
9.根据权利要求2所述的方法,其特征在于,
所述接收客户端发送的数据写入请求之后,所述方法还包括:
向客户端发送写入成功响应,所述写入成功响应携带所述存储位置信息;
接收所述客户端发送的查询请求,所述查询请求携带所述存储位置信息;
若所述存储位置信息对应的日志数据已经写入到主节点的第四存储介质,且所述日志数据已经写入到从节点的第三存储介质,则将所述日志数据的共识达成索引发送给所述客户端;否则,丢弃所述查询请求;或者,
在所述存储位置信息对应的日志数据已经写入到主节点的第四存储介质,且所述日志数据已经写入到从节点的第三存储介质之后,向客户端发送写入成功响应,所述写入成功响应携带所述日志数据的共识达成索引。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
采用原子操作策略对所述主节点的第一存储介质进行操作;或者,
采用加锁操作策略对所述主节点的第一存储介质进行操作。
11.一种数据写入方法,其特征在于,所述方法包括:
接收主节点通过远程直接数据存取RDMA写操作写入的日志数据;其中,所述日志数据还包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到从节点的第二存储介质;
从所述从节点的第二存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述从节点的第三存储介质中;
将persist指针更新为所述日志数据的起始位置,所述persist指针表示所述日志数据的共识信息;
在所述第二存储介质中更新所述日志数据的共识信息,所述共识信息用于使所述主节点确定所述日志数据已经写入到所述从节点的第三存储介质。
12.根据权利要求11所述的方法,其特征在于,
所述日志数据还包括:日志标识、所述主节点的任期标识;
所述存储位置信息具体包括:实际物理地址、或者实际物理地址的偏移量。
13.根据权利要求11所述的方法,其特征在于,
所述将读取的所述日志数据写入到所述从节点的第三存储介质中,包括:
若所述日志数据包括的主节点的任期标识与本地记录的任期标识相同,则确定所述日志数据有效,将所述日志数据写入到所述从节点的第三存储介质中。
14.根据权利要求11所述的方法,其特征在于,所述方法还包括:
若所述日志数据还包括共识达成索引,则从所述第二存储介质或所述第三存储介质中读取所述共识达成索引对应的日志数据;
将所述共识达成索引对应的日志数据回放到数据集中。
15.一种数据写入方法,其特征在于,所述方法包括:
获取日志数据,所述日志数据包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到主节点的非易失存储介质;
根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的非易失存储介质;
将persist指针更新为所述日志数据的起始位置,所述persist指针表示所述日志数据的共识信息。
16.一种分布式数据库,其特征在于,包括主节点和从节点,其中:
所述主节点,用于获取日志数据,所述日志数据包括存储位置信息;根据所述存储位置信息将所述日志数据写入到所述主节点的第一存储介质;根据所述存储位置信息,通过RDMA写操作将所述日志数据写入到所述从节点的第二存储介质;
所述从节点,用于从所述第二存储介质中读取日志数据,将所述日志数据写入到所述从节点的第三存储介质;将persist指针更新为所述日志数据的起始位置,所述persist指针表示所述日志数据的共识信息;在所述第二存储介质中更新所述日志数据的共识信息;
所述主节点,还用于通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;根据所述共识信息确定所述日志数据已经写入到所述从节点的第三存储介质。
17.一种数据写入装置,其特征在于,所述装置包括:
获取模块,用于获取日志数据,所述日志数据包括存储位置信息;
写入模块,用于根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质,并根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的第二存储介质;
对所述日志数据进行持久化处理,将persist指针更新为所述日志数据的起始位置,所述persist指针表示所述日志数据的共识信息;
读取模块,用于通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;
确定模块,用于根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。
18.根据权利要求17所述的装置,其特征在于,
所述写入模块,还用于从所述主节点的第一存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述主节点的第四存储介质中。
19.根据权利要求17所述的装置,其特征在于,还包括:
处理模块,用于若所述日志数据已经写入到所述主节点的第四存储介质,且所述日志数据已经写入到所述从节点的第三存储介质,则将所述日志数据回放到数据集中;
所述获取模块在获取下一条日志数据时,所述下一条日志数据还包括所述日志数据的共识达成索引,所述共识达成索引用于使从节点将所述日志数据回放到数据集中。
20.一种数据写入装置,其特征在于,所述装置包括:
接收模块,用于接收主节点通过远程直接数据存取RDMA写操作写入的日志数据;其中,所述日志数据还包括存储位置信息;
写入模块,用于根据所述存储位置信息将所述日志数据写入到从节点的第二存储介质;从所述从节点的第二存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述从节点的第三存储介质中;
将persist指针更新为所述日志数据的起始位置,所述persist指针表示所述日志数据的共识信息;
在所述第二存储介质中更新所述日志数据的共识信息,所述共识信息用于使所述主节点确定所述日志数据已经写入到所述从节点的第三存储介质。
21.一种数据写入设备,其特征在于,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
获取日志数据,所述日志数据包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到主节点的第一存储介质;
根据所述存储位置信息,通过远程直接数据存取RDMA写操作将所述日志数据写入到从节点的第二存储介质;
对所述日志数据进行持久化处理,将persist指针更新为所述日志数据的起始位置,所述persist指针表示所述日志数据的共识信息;
通过RDMA读操作,从所述从节点的第二存储介质中读取共识信息;
根据所述共识信息确定所述日志数据是否写入到所述从节点的第三存储介质。
22.一种数据写入设备,其特征在于,包括:
处理器和机器可读存储介质,所述机器可读存储介质上存储有若干计算机指令,所述处理器执行所述计算机指令时进行如下处理:
接收主节点通过远程直接数据存取RDMA写操作写入的日志数据;其中,所述日志数据还包括存储位置信息;
根据所述存储位置信息将所述日志数据写入到从节点的第二存储介质;
从所述从节点的第二存储介质中读取所述日志数据,并将读取的所述日志数据写入到所述从节点的第三存储介质中;
将persist指针更新为所述日志数据的起始位置,所述persist指针表示所述日志数据的共识信息;
在所述第二存储介质中更新所述日志数据的共识信息,所述共识信息用于使所述主节点确定所述日志数据已经写入到所述从节点的第三存储介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810738736.7A CN110691062B (zh) | 2018-07-06 | 2018-07-06 | 一种数据写入方法、装置及其设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810738736.7A CN110691062B (zh) | 2018-07-06 | 2018-07-06 | 一种数据写入方法、装置及其设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110691062A CN110691062A (zh) | 2020-01-14 |
CN110691062B true CN110691062B (zh) | 2021-01-26 |
Family
ID=69107035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810738736.7A Active CN110691062B (zh) | 2018-07-06 | 2018-07-06 | 一种数据写入方法、装置及其设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110691062B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111400307B (zh) * | 2020-02-20 | 2023-06-23 | 上海交通大学 | 支持远程并发访问的持久哈希表访问系统 |
CN111400268B (zh) * | 2020-03-13 | 2022-06-17 | 清华大学 | 一种分布式持久性内存事务系统的日志管理方法 |
CN113297134B (zh) * | 2020-06-29 | 2022-04-29 | 阿里巴巴集团控股有限公司 | 数据处理系统及数据处理方法、装置、电子设备 |
EP4188567A1 (en) * | 2020-08-03 | 2023-06-07 | Google LLC | Game platform using zero-copy data transfer |
CN111949633B (zh) * | 2020-08-03 | 2021-11-30 | 杭州电子科技大学 | 一种基于并行流处理的ict系统运行日志分析方法 |
CN113297234B (zh) * | 2020-09-30 | 2023-03-14 | 阿里云计算有限公司 | 一种数据处理方法、装置、设备及计算机可读存储介质 |
CN112612855B (zh) * | 2020-12-29 | 2023-01-24 | 天津南大通用数据技术股份有限公司 | 高可用数据库日志接收队列、同步方法及装置 |
CN112597251B (zh) * | 2020-12-29 | 2023-01-24 | 天津南大通用数据技术股份有限公司 | 数据库集群日志同步方法、装置、服务器及存储介质 |
CN113010103B (zh) * | 2021-01-15 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、相关设备及存储介质 |
CN113014662A (zh) * | 2021-03-11 | 2021-06-22 | 联想(北京)有限公司 | 数据处理方法及基于NVMe-oF协议的存储系统 |
CN113220693B (zh) * | 2021-06-02 | 2023-10-20 | 北京火山引擎科技有限公司 | 计算存储分离系统及其数据访问方法、介质和电子设备 |
CN113360098A (zh) * | 2021-08-09 | 2021-09-07 | 苏州浪潮智能科技有限公司 | 一种数据写入方法、装置、系统、电子设备及存储介质 |
CN114047888B (zh) * | 2022-01-17 | 2022-04-22 | 浪潮云信息技术股份公司 | 一种NVMe磁盘的挂载方法、设备及存储介质 |
CN117667761A (zh) * | 2022-08-31 | 2024-03-08 | 成都华为技术有限公司 | 数据访问设备、方法、系统、数据处理单元及网卡 |
CN115550384B (zh) * | 2022-11-25 | 2023-03-10 | 苏州浪潮智能科技有限公司 | 集群数据同步方法、装置、设备及计算机可读存储介质 |
CN117255101B (zh) * | 2023-11-16 | 2024-02-20 | 苏州元脑智能科技有限公司 | 分布式存储系统的数据处理方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016195781A1 (en) * | 2015-05-29 | 2016-12-08 | Oracle International Corporation | Elimination of log file synchronization delay at transaction commit time |
CN108073656A (zh) * | 2016-11-17 | 2018-05-25 | 杭州华为数字技术有限公司 | 一种数据同步方法及相关设备 |
CN108123936A (zh) * | 2017-12-13 | 2018-06-05 | 北京科技大学 | 一种基于区块链技术的访问控制方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101577716B (zh) * | 2009-06-10 | 2012-05-23 | 中国科学院计算技术研究所 | 基于InfiniBand网络的分布式存储方法和系统 |
US8874680B1 (en) * | 2011-11-03 | 2014-10-28 | Netapp, Inc. | Interconnect delivery process |
CN104317716B (zh) * | 2014-10-30 | 2017-10-24 | 华为技术有限公司 | 分布式节点间的数据传输方法及分布式节点设备 |
CN107463447B (zh) * | 2017-08-21 | 2019-10-11 | 中国人民解放军国防科技大学 | 一种基于远程直接非易失内存访问的b+树管理方法 |
-
2018
- 2018-07-06 CN CN201810738736.7A patent/CN110691062B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016195781A1 (en) * | 2015-05-29 | 2016-12-08 | Oracle International Corporation | Elimination of log file synchronization delay at transaction commit time |
CN108073656A (zh) * | 2016-11-17 | 2018-05-25 | 杭州华为数字技术有限公司 | 一种数据同步方法及相关设备 |
CN108123936A (zh) * | 2017-12-13 | 2018-06-05 | 北京科技大学 | 一种基于区块链技术的访问控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110691062A (zh) | 2020-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110691062B (zh) | 一种数据写入方法、装置及其设备 | |
CN110113420B (zh) | 基于nvm的分布式消息队列管理系统 | |
US8117156B2 (en) | Replication for common availability substrate | |
JP6046760B2 (ja) | メッセージ待ち行列の管理 | |
JP6549663B2 (ja) | ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法 | |
CN107888657B (zh) | 低延迟分布式存储系统 | |
US10382574B2 (en) | Systems and methods for providing messages to multiple subscribers | |
US8868492B2 (en) | Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica | |
US8589732B2 (en) | Consistent messaging with replication | |
JP6225262B2 (ja) | 分散データグリッドにおいてデータを同期させるためにパーティションレベルジャーナリングをサポートするためのシステムおよび方法 | |
CN105630731A (zh) | 一种多cpu环境下网卡数据处理方法和装置 | |
CN112597251B (zh) | 数据库集群日志同步方法、装置、服务器及存储介质 | |
WO2018018611A1 (zh) | 一种任务处理方法以及网卡 | |
CN111400268A (zh) | 一种分布式持久性内存事务系统的日志管理方法 | |
US9672038B2 (en) | System and method for supporting a scalable concurrent queue in a distributed data grid | |
CN105302489A (zh) | 一种异构多核远程嵌入式存储器系统与方法 | |
CN115658245B (zh) | 一种基于分布式数据库系统的事务提交系统、方法及装置 | |
CN112612855A (zh) | 高可用数据库日志接收队列、同步方法及装置 | |
CN115905155A (zh) | 一种逻辑日志同步的并行传输的方法 | |
Murata et al. | Accelerating read atomic multi-partition transaction with remote direct memory access | |
Zhang et al. | Fast and Scalable In-network Lock Management Using Lock Fission | |
KR20240109088A (ko) | 분산 서버 클러스터 시스템에서의 다중 서비스 연계 방법 및 장치 | |
CN117785020A (zh) | 一种数据存储方法、装置和系统 | |
CN117076087A (zh) | 一种单流读写加速的方法、系统、设备和存储介质 | |
CN117667447A (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 |