CN116450303A - 分布式事务处理方法及装置 - Google Patents
分布式事务处理方法及装置 Download PDFInfo
- Publication number
- CN116450303A CN116450303A CN202310411153.4A CN202310411153A CN116450303A CN 116450303 A CN116450303 A CN 116450303A CN 202310411153 A CN202310411153 A CN 202310411153A CN 116450303 A CN116450303 A CN 116450303A
- Authority
- CN
- China
- Prior art keywords
- host
- address
- memory
- request
- cache state
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 24
- 230000015654 memory Effects 0.000 claims abstract description 203
- 238000012545 processing Methods 0.000 claims abstract description 45
- 230000004044 response Effects 0.000 claims abstract description 35
- 239000000872 buffer Substances 0.000 claims description 50
- 238000000034 method Methods 0.000 claims description 21
- 230000003993 interaction Effects 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000009977 dual effect Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- 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/23—Updating
-
- 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/27—Replication, 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)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本公开提供了一种分布式事务处理方法及装置。该分布式事务处理方法包括:接收第一主机发送的第一请求,其中,第一请求用于请求访问共享内存的第一地址,共享内存由多个主机共享;锁定第一地址对各主机请求的响应,根据第一请求更新第一地址的缓存状态信息,并将第一主机对第一地址对应数据副本的更新后的缓存状态发送到第一主机,其中,内存地址的缓存状态信息用于指示各主机对该内存地址对应数据副本的缓存状态;解除第一地址对各主机请求的响应锁定,执行第一主机的第一请求。本公开提升了分布式事务的处理效能。
Description
技术领域
本公开涉及互联网技术领域,具体而言,涉及一种分布式事务处理方法及装置。
背景技术
跨主机缓存一致性对于有效实现高性能分布式事务处理系统非常重要。目前,跨主机缓存一致性基于网络技术实现,当共享内存的多个主机中的一个主机对缓存数据进行了修改,则需要通过网络向其他主机发送缓冲一致性请求,使多个主机的缓存中该数据保持一致性,目前采用PCIe(Peripheral Component Interconnect Express)链路作为远程内存访问协议,需要通过网络在不同主机的内存之间复制冗余内存数据,从而导致分布式事务的处理效能严重下降。
发明内容
有鉴于此,本公开提供了一种分布式事务处理方法及装置,旨在使分布式事务的处理效能得以提升。
根据本公开的第一方面,提供一种分布式事务处理方法,包括:
接收第一主机发送的第一请求,其中,所述第一请求用于请求访问共享内存的第一地址,所述共享内存由多个主机共享;
锁定所述第一地址对各主机请求的响应,根据所述第一请求更新所述第一地址的缓存状态信息,并将所述第一主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第一主机,其中,内存地址的缓存状态信息用于指示各主机对该内存地址对应数据副本的缓存状态;
解除所述第一地址对各主机请求的响应锁定,执行所述第一主机的所述第一请求。
可选地,内存地址的缓存状态信息为一个多维向量;
所述多维向量的维数等于所述多个主机的数量,所述多维向量的元素指示该元素对应主机对该内存地址对应数据副本的缓存状态;
以及,主机对内存地址对应数据副本的缓存状态包括以下多种:失效状态、共享状态、独占状态、已修改状态。
可选地,内存地址还配置有锁定信息,内存地址的锁定信息用于指示该内存地址响应各主机请求时是否处于锁定状态;
锁定所述第一地址对各主机请求的响应,包括,将所述第一地址的锁定信息设为第一数据;
解除所述第一地址对各主机请求的响应锁定,包括:将所述第一地址的锁定信息设为第二数据。
可选地,所述多个主机中至少一个第二主机对所述第一地址对应数据副本的缓存状态因所述第一请求而改变;
根据所述第一请求更新所述第一地址的缓存状态信息之后以及解除所述第一地址对各主机请求的响应锁定之前,所述方法还包括:将所述第二主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第二主机。
可选地,将所述第二主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第二主机,包括:
以数据包的形式向所述第二主机发送所述第二主机对所述第一地址对应数据副本的更新后的缓存状态,其中,所述数据包的标头中源地址为执行所述分布式事务处理方法的装置且目的地址为所述第二主机。
根据本公开的第二方面,提供一种内存控制装置,包括:
接收单元,用于接收第一主机发送的第一请求,其中,所述第一请求用于请求访问共享内存的第一地址,所述共享内存由多个主机共享;
处理单元,用于锁定所述第一地址对各主机请求的响应,根据所述第一请求更新所述第一地址的缓存状态信息,其中,内存地址的缓存状态信息用于指示各主机对该内存地址对应数据副本的缓存状态;
发送单元,用于将所述第一主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第一主机;
所述处理单元还用于解除所述第一地址对各主机请求的响应锁定,执行所述第一主机的所述第一请求。
可选地,所述多个主机中至少一个第二主机对所述第一地址对应数据副本的缓存状态因所述第一请求而改变;
所述发送单元还用于在根据所述第一请求更新所述第一地址的缓存状态信息之后以及解除所述第一地址对各主机请求的响应锁定之前,将所述第二主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第二主机。
可选地,所述发送单元以数据包的形式向所述第二主机发送所述第二主机对所述第一地址对应数据副本的更新后的缓存状态,所述数据包的标头中源地址为所述内存控制装置且目的地址为所述第二主机。
根据本公开的第三方面,提供一种分布式事务处理系统,包括:交换机、多个主机、至少一个动态随机存取存储器,至少一个第二方面所述的任一种内存控制装置,其中,
所述交换机基于计算快速链路分别与所述多个主机和所述至少一个内存控制装置相连接;
所述内存控制装置与至少一个所述动态随机存取存储器相连接,所述至少一个动态随机存取存储器组成由所述多个主机共享的共享内存;
所述交换机用于传输所述主机与所述内存控制装置之间的交互数据。
根据本公开的第四方面,提供一种计算设备,包括:
存储器,用于存储计算机可执行代码;
处理器,用于执行所述计算机可执行代码,以实现第一方面所述的任一种分布式事务处理方法的步骤。
根据本公开的第五方面,提供一种计算机可读存储介质,其存储有计算机可执行代码,所述计算机可执行代码被处理器执行时实现第一方面所述的任一种分布式事务处理方法的步骤。
本公开提供的分布式事务处理方法,在接收到第一主机发送的访问共享内存的第一地址的第一请求后,先锁定第一地址对各主机请求的响应,然后根据第一请求更新第一地址的缓存状态信息,并将第一主机对第一地址对应数据副本的更新后的缓存状态发送到第一主机,之后解除第一地址对各主机请求的响应锁定,执行第一请求。其中,内存地址的缓存状态信息用于指示各主机对该内存地址对应数据副本的缓存状态,因而更新第一地址的缓存状态信息并将第一主机对第一地址对应数据副本的更新后的缓存状态发送到第一主机,实现了跨主机缓存一致性,从而跨主机缓存一致性并不需要多个主机之间针对第一请求复制冗余内存数据,从而有效提升了分布式事务的处理效能。
附图说明
通过参考以下附图对本公开实施例的描述,本公开的上述以及其他目的、特征和优点将更为清楚,在附图中:
图1示出根据本公开一个实施例的分布式事务处理方法的流程图;
图2(a)、图2(b)和图2(c)示出根据本公开一个实施例的一种示例性的分布式事务处理方法;
图3示出根据本公开一个实施例的内存控制装置的结构框图;
图4示出根据本公开一个实施例的分布式事务处理系统的架构图;
图5示出根据本公开一个实施例的一种示例性的分布式事务处理系统的部分结构图;
图6示出根据本公开一个实施例的一种计算设备的结构示意图。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
对本公开实施例进行描述的过程中出现的部分名词或术语适用于如下解释。
主机:主机(host)是指能够访问动态随机存取存储器(内存)的设备,主机包括中央处理单元(Central Processing Unit,简称CPU)、图形处理单元(Graphic ProcessUnit,简称GPU)、数据处理单元(Data Processing Unit,简称DPU)、智能处理单元(Intelligence Processing Unit,简称IPU)等处理器。处理器包括多级缓存(L1、L2和L3),处理器在读取数据时依次从L1、L2和L3级缓存中查找所需的数据,如果L1、L2和L3级缓存中没有处理器所需的数据,从内存中读取数据并加载到L3级缓存,然后再将数据加载到L1和L2级缓存。
共享内存:内存(memory)也被称为主存,用于暂时存放处理器中的运算数据,以及与硬盘等外部存储器交换数据。共享内存是由多个主机共享的内存,多个主机均可以对共享内存进行读写,即均可以访问共享内存。
缓存行:计算机将数据从主存读入缓存(cache)时,需要将所要读取数据附近的一部分数据均读入缓存,这样一次读取的一组数据称为缓存行(cache line)。同样,计算机将数据从缓存写回主存,也需要以缓存行为单位执行。即缓存行是数据读写的单位。每一级缓存可以存放多个缓存行。
事务是指访问并可能更新数据库中数据的一个程序执行单元,是恢复和并发控制的基本单位。在具有多主机的分布式事务处理系统中,用户在客户端发起事务请求后,多个主机相互协作来响应该事务请求,能够确保分布式事务高效处理是其中需要重点考虑的技术,然而目前的技术并不能实现分布式事务的高效处理。鉴于此,本公开实施例提供了一种分布式事务处理方法。
图1所示为本公开实施例提供的分布式事务处理方法的流程图。参照图1,该分布式事务处理方法包括:
步骤S110,接收第一主机发送的第一请求,其中,第一请求用于请求访问共享内存的第一地址,共享内存由多个主机共享;
步骤S120,锁定第一地址对各主机请求的响应,根据第一请求更新第一地址的缓存状态信息,并将第一主机对第一地址对应数据副本的更新后的缓存状态发送到第一主机,其中,内存地址的缓存状态信息用于指示各主机对该内存地址对应数据副本的缓存状态。
步骤S130,解除第一地址对各主机请求的响应锁定,执行第一主机的第一请求。
下面对本公开实施例提供的分布式事务处理方法的步骤进行详细介绍。
一个可选的实施例中,内存地址的缓存状态信息为一个多维向量;多维向量的维数等于对共享内存进行共享的多个主机的数量,多维向量的元素指示该元素对应主机对该内存地址对应数据副本的缓存状态;主机对内存地址对应数据副本的缓存状态包括以下多种:失效状态(Invalidated,简称I)、共享状态(Shared,简称S)、独占状态(Exclusive,简称E)、已修改状态(Modified,简称M)。
具体地,主机对内存地址对应数据副本的缓存状态为失效状态,即该主机未缓存该内存地址对应的数据副本;主机对内存地址对应数据副本的缓存状态为共享状态,即该主机与其他至少一个主机皆缓存有该内存地址对应的数据副本;主机对内存地址对应数据副本的缓存状态为独占状态,即仅该主机缓存有该内存地址对应的数据副本;主机对内存地址对应数据副本的缓存状态为已修改状态,即仅该主机缓存有该内存地址对应的数据副本,且该主机对缓存的该数据副本进行了修改。
以对共享内存进行共享的多个主机为3个主机进行示例性说明,3个主机为主机1、主机2和主机3,则任一内存地址的缓存状态信息为三维向量,其中,第一维元素对应主机1,为主机1对内存地址对应数据副本的缓存状态,第二维元素对应主机2,为主机2对内存地址对应数据副本的缓存状态,第三维元素对应主机3,为主机3对内存地址对应数据副本的缓存状态。在一个示例中,一个内存地址的缓存状态信息为[S,S,I],根据该缓存状态信息可以确定主机1、主机2缓存有该内存地址对应的数据副本,而主机3未缓存该内存地址对应的数据副本。在另一个示例中,一个内存地址对应的缓存状态信息为[E,I,I],根据该缓存状态信息可以确定主机1独占该内存地址对应的数据副本,而主机2、主机3未缓存该内存地址对应的数据副本。
步骤S120中,根据第一请求更新第一地址的缓存状态信息,即确定第一请求的执行会使哪些主机对第一地址对应数据副本的缓存状态发生改变,并根据这些改变更新第一地址的缓存状态信息。同样以多个主机为如上所述的3个主机进行示例性说明。在一个示例中,第一地址的缓存状态信息为[M,I,I],即主机1缓存有第一地址对应的数据副本且对缓存的该数据副本进行了修改,主机2和主机3皆未缓存第一地址对应的数据副本,然后主机1发送第一请求,第一请求是主机1将本地的修改后的第一地址对应数据副本写回到共享内存的第一地址,第一请求执行后主机1对第一地址对应数据副本的缓存状态变为“独占”,而主机2和主机3对第一地址对应数据副本的缓存状态皆不改变,这样根据第一请求,第一地址对应的缓存状态信息要从[M,I,I]更新为[E,I,I]。
上述更新后的第一地址的缓存状态信息指示了各主机对第一地址对应数据副本的缓存状态,因而在实现缓存一致性的过程中各主机无需及时缓存因第一请求而改变的第一地址对应的数据,只需在使用第一地址对应的数据时根据当前的第一地址的缓存状态信息确定从本地读取该数据的副本还是从共享内存的第一地址缓存该数据,从而避免了主机不断复制冗余内存数据,有效提升了分布式事务的处理效能。以上以多维向量表示的内存地址的缓存状态信息,数据较少,更新较为方便,有效促进了缓存一致性的实现。
需要说明的是,由于主机是以缓存行为单位读取共享内存的数据或向共享内存写回数据,因而步骤S110中所述的第一地址可以为一个缓存行的地址。示例性地,一个缓存行为一个大小是512位的数据块,这样共享内存中每512位的数据具有一个缓存状态信息。
另一个可选的实施例中,内存地址还配置有锁定信息,内存地址的锁定信息用于指示该内存地址响应各主机请求时是否处于锁定状态;步骤S120中锁定第一地址对各主机请求的响应,包括,将第一地址的锁定信息设为第一数据;步骤S130中解除第一地址对各主机请求的响应锁定,包括:将第一地址的锁定信息设为第二数据。
需要说明的是,一内存地址响应各主机请求时若处于锁定状态,则该内存地址只对锁定所针对的请求进行响应,步骤S120中的锁定针对的是第一请求,即步骤S120锁定第一地址对各主机请求的响应后第一地址只对第一请求进行响应,直到步骤S130中解除第一地址对各主机请求的响应锁定。反之,一内存地址响应各主机请求时若不处于锁定状态,则该内存地址对各主机的请求皆能够响应。
内存地址的锁定信息设为第一数据,是指示该内存地址响应各主机请求时处于锁定状态;内存地址的锁定信息设为第二数据,是指示该内存地址响应各主机请求时不处于锁定状态。第二数据不同于第一数据,二者可以通过一位二进制数据分别表示,例如将第一数据设为高电平示意的二进制数据“1”,将第二数据设为低电平示意的二进制数据“0”。
在又一个可选的实施例中,多个主机中至少一个第二主机对第一地址对应数据副本的缓存状态因第一请求而改变。同样以多个主机为以上所述的3个主机进行示例性说明。在一个示例中,第一地址的缓存状态信息为[S,S,I],即主机1和主机2皆缓存有第一地址对应的数据副本,主机3未缓存第一地址对应的数据副本,然后主机1发送第一请求,第一请求是主机1对缓存的第一地址的数据副本进行修改,第一请求执行后主机1对第一地址对应数据副本的缓存状态变为“M”,主机2对第一地址对应数据副本的缓存状态变为“I”,主机3对第一地址对应数据副本的缓存状态不变,因而多个主机中有主机2这样一个第二主机对第一地址对应数据副本的缓存状态因第一请求而改变。在另一个示例中,第一地址的缓存状态信息为[I,I,E],即主机1和主机2皆未缓存第一地址对应的数据副本,只有主机3缓存第一地址对应的数据副本,然后主机1发送第一请求,第一请求是主机1对共享内存的第一地址进行读操作,第一请求执行后主机1对第一地址对应数据副本的缓存状态变为“S”,主机2对第一地址对应数据副本的缓存状态不变,主机3对第一地址对应数据副本的缓存状态也变为“S”,因而多个主机中有主机3这样一个第二主机对第一地址对应数据副本的缓存状态因第一请求而改变。
对于上述第二主机对第一地址对应数据副本的缓存状态改变的情况,在步骤S120中根据第一请求更新第一地址的缓存状态信息之后以及步骤S130中解除第一地址对各主机请求的响应锁定之前,分布式事务处理方法还包括:将第二主机对第一地址对应数据副本的更新后的缓存状态发送到第二主机。
具体地,由于第一地址的更新后的缓存状态信息指示了各主机对第一地址对应数据副本的更新后的缓存状态,因而可以根据第一地址的更新后的缓存状态信息来确定向第二主机发送的第二主机对第一地址对应数据副本的更新后的缓存状态。步骤S120中向第一主机发送的第一主机对第一地址对应数据副本的更新后的缓存状态,同样可以根据第一地址的更新后的缓存状态信息来确定。
本公开实施例中,将第二主机对第一地址对应数据副本的更新后的缓存状态发送到第二主机,这样第二主机能够及时获得自身对第一地址对应数据副本的缓存状态,从而确保多个主机获得的各自对第一地址对应数据副本的缓存状态得以一致改变,即实现了缓存一致性。此外,如同向第一主机发送第一主机对第一地址对应数据副本的更新后的缓存状态,向第二主机发送第二主机对第一地址对应数据副本的更新后的缓存状态,也是在步骤S120中根据第一请求更新第一地址的缓存状态信息之后以及步骤S130中解除第一地址对各主机请求的响应锁定之前执行,这是为了使得分布式事务的原子性得以保证。
进一步,可以以数据包的形式向第二主机发送第二主机对第一地址对应数据副本的更新后的缓存状态,该数据包的标头中源地址为执行分布式事务处理方法的装置且目的地址为第二主机,这样对第二主机来说其对第一地址对应数据副本的缓存状态的改变是由执行分布式事务处理方法的装置控制的,第二主机并不知道上述改变是由第一主机发送的第一请求引起的,从而确保了第一主机发送的第一请求对第二主机具有隔离性。
图2(a)、图2(b)和图2(c)所示是根据本公开实施例的一种示例性的分布式事务处理方法,其中,内存控制装置131为执行分布式事务处理方法的装置,H1标识主机121,H2标识主机122,H3标识主机123。如图2(a)所示,第一地址X的缓存状态信息为[S,S,I],即主机121和主机122皆缓存有第一地址X对应的数据副本,主机123没有缓存第一地址X对应的数据副本,此情况下主机121发送第一请求,第一请求如图中所示的“Read_Exlusive[X]”,即请求对共享内存的第一地址X进行独占式读取。然后如图2(b)所示,第一地址X的锁定信息置为“1”,即锁定了共享内存的第一地址X对各主机请求的响应;然后更新第一地址X的缓存状态信息,具体是将所述缓存状态信息中主机121对所述数据副本的缓存状态信息由共享状态更新为独占状态,并将所述缓存状态信息中所述主机122对所述数据副本的缓存状态信息更新为失效状态,即共享内存的第一地址对应的数据副本的缓存状态信息更新为[E,I,I]。接着如图2(c)所示,将第一地址X的锁定信息置“0”,即解除第一地址X对各主机请求的响应锁定。此外,图2(b)还示意了向主机122发送“Invalidate[X]”,即将主机122对第一地址X对应数据副本的更新后的缓存状态“失效”发送到主机122;以及,图2(c)还示意了向主机121发送“Goto E&Response Data”,即执行第一请求而将第一请求所请求读的第一地址的数据发送到主机121。
以上提供的分布式事务处理方法着眼于多个主机上执行的分布式事务,而各主机自身可以通过硬件事务内存(Hardware Transactional Memory,HTM)执行对其内分布式事务的并发控制,具体地,主机采用多核处理器,处理器内每个核基于硬件事务内存跟踪自身所处理事务的读写集并通过基于硬件事务内存的一致性协议检测事务冲突,只有无冲突的情况下事务才会被提交,详细过程基于现有的硬件事务内存的工作原理执行,这里不进行赘述。相较于依赖于软件来维护事务的原子性、一致性和隔离性的一些并发管理策略来说,主机通过硬件事务内存执行对其内分布式事务的并发控制具有机器周期(即CPU周期)占用少的优势,从而促使分布式事务处理系统内各分布式事务的性能开销有效降低。
相应于以上提供的分布式事务的处理方法,本公开实施例还提供了一种内存控制装置,图3所示为该内存控制装置的示意图。参照图3,内存控制装置13i包括:接收单元13i1、处理单元13i2和发送单元13i3。接收单元13i1用于接收第一主机发送的第一请求,其中,第一请求用于请求访问共享内存的第一地址,共享内存由多个主机共享。处理单元13i2用于锁定第一地址对各主机请求的响应,根据第一请求更新第一地址的缓存状态信息,其中,内存地址的缓存状态信息用于指示各主机对该内存地址对应数据副本的缓存状态。发送单元13i3用于将第一主机对第一地址对应数据副本的更新后的缓存状态发送到第一主机。此外,处理单元13i2还用于解除第一地址对各主机请求的响应锁定,执行第一主机的第一请求。
在一个可选的实施例中,多个主机中至少一个第二主机对第一地址对应数据副本的缓存状态因第一请求而改变,发送单元13i3还用于在处理单元13i2根据第一请求更新第一地址的缓存状态信息之后以及解除第一地址对各主机请求的响应锁定之前,将第二主机对第一地址对应数据副本的更新后的缓存状态发送到第二主机。
在一个可选的实施例中,发送单元13i3以数据包的形式向第二主机发送第二主机对第一地址对应数据副本的更新后的缓存状态,数据包的标头中源地址为内存控制装置13i且目的地址为第二主机。
由于上述装置的实现细节在分布式事务处理方法的实施例的详细介绍中已经描述,为节约篇幅,故不赘述。
相应于以上提供的内存控制装置,本公开实施例还提供了一种分布式事务处理系统,图4所示为该分布式事务处理系统的一种结构示意图。参照图4,该分布式事务处理系统100包括交换机110、主机121-12n、内存控制装置131-13m以及至少一个动态随机存取存储器,其中,n为主机121-12n的数量,m为内存控制装置131-13m的数量。交换机110基于计算快速链路分别与主机121-12n和内存控制装置131-13m相连接;内存控制装置131-13m中的每一个与至少一个动态随机存取存储器相连接,连接到内存控制装置131-13m的所有动态随机存取存储器组成由主机121-12n共享的共享内存,分布式事务处理系统100启动时该共享内存即可被主机121-12n中的每一个访问。内存控制装置131-13m中的每一个如以上实施例所述。交换机110用于传输主机121-12n与内存控制装置131-13m之间的交互数据。
基于以上所述,应当理解,虽然图4示意了一个内存控制装置连接两个动态随机存取存储器,然而本公开实施例并不限于此。
一个内存控制装置和与其连接的动态随机存取存储器构成了分布式事务处理系统中的一个事务支持设备,各个事务支持设备在分布式事务处理系统100中充当非统一内存访问(Non Uniform Memory Access,简称NUMA)节点,起到了支持多主机共享数据的作用。
主机121-12n各自可以是在自身的处理器上设置一个模块以支持通过计算快速链路的相关协议与交换机110通信,所述计算快速链路的相关协议包括支持计算快速链路在PCIe 5.0的基础上复用的CXL.cache子协议、CXL.io子协议和CXL.men子协议,所述模块作为处理器中的一个硬件模块为CXL 2.0本地代理(home agent,简称HA)。
内存控制装置131-13m可采用现场可编程门阵列(Field-Programmable GateArray,简称FPGA)这种程序驱动逻辑器件实现CXL 2.0设备所具备的基本功能,包括实现CXL 2.0设备上执行的CXL.cache子协议、CXL.io子协议和CXL.men子协议,从而内存控制装置131-13m各自支持通过计算快速链路与交换机110通信。
交换机110可以将数据包从主机121-12n中的任一个路由到内存控制装置131-13m中的一个,也可以将数据包从内存控制装置131-13m中的任一个路由到主机121-12n中的一个。交换机110与主机121-12n中的每一个以及与内存控制装置131-13m中的每一个皆可以通过快捷外围组件互连链路连接,由于计算快速链路兼容快捷外围组件互连协议,因而分布式事务的处理中涉及的通信能够直接在现有的快捷外围组件互连这种链路上执行而不涉及协议转换,从而实现了低延迟通信,有效提升了分布式事务的处理效能。上述快捷外围组件互连链路可采用×16模式,这样交换机110与主机121-12n之间以及交换机110与内存控制装置131-13m之间能够实现高达128GB/s的双向带宽通信,从而进一步提升了分布式事务的处理效能。
需要说明的是,分布式事务处理系统100中,多个主机虽然都连接在交换机110上,但多个主机之间彼此不可见,即交换机110并不支持将从一个主机接收的数据包直接发送到另一个主机,这样一个主机所发送的请求对另一个主机具有较好的隔离性,即一个主机所发送的请求不会被另一个主机获知,包括不被另一个主机获知请求所包含的数据操作及操作到的数据,从而避免一主机的事务被其他主机生成事务来干扰。
上述CXL.io子协议、CXL.cache子协议和CXL.men子协议作为计算快速链路中定义的协议,其中,CXL.io子协议是PCIe 5.0协议的增强版本,可用于初始化、链接、内存控制装置131-13m的发现等,为内存控制装置131-13m提供了非一致性的加载/存储接口;CXL.cache子协议定义了主机121-12n与内存控制装置131-13m之间的交互,从而允许内存控制装置131-13m使用请求和响应的方法以极低的延迟高效地缓存主机121-12n的内存;CXL.mem子协议使主机121-12n各自的处理器可以使用加载和存储命令访问内存控制装置131-13m的内存。这些协议相结合为主机121-12n和内存控制装置131-13m之间的内存访问和一致性缓存提供了极低的延迟路径,这样各主机可快速访问数据的容量通过内存控制装置得到扩展。上述分布式事务处理系统为分布式数据库/分布式计算框架的事务处理提供了低延迟的可行方案。上述分布式事务处理系统也可用作数据中心的一个多主机服务器,从而使得数据中心的服务器具有大容量的可快速访问的数据。
此外,内存控制装置131-13m各自可以设置至少一个双列直插式存储模块(DualInline Memory Module,简称DIMM),双列直插式存储模块在这里作为动态随机存取存储器使用。对于内存控制装置131-13m中的每一个来说,现场可编程门阵列和双列直插式存储模块可以集成在一块电路板上,整体在外形上体现为一张卡,因而一个内存控制装置和与其连接的双列直插式存储模块一块构成的事务支持设备亦称为事务支持卡(transactionsupporting cards,简称TSC)。
需要说明的是,对于分布式事务处理系统100来说,主机121-12n的数量以及内存控制装置131-13m的数量是受交换机110的端口限制。具体地,主机121-12n的数量不得大于交换机110中上行端口的数量,内存控制装置131-13m的数量不得大于交换机110中下行端口的数量。示例性地,交换机110有8个上行端口,则分布式事务处理系统100最多可设置8个主机;交换机110有8个下行端口,则分布式事务处理系统100最多可设置8个内存控制装置。当然,对于一个有8个上行端口和8个下行端口的交换机110,分布式事务处理系统100也可如图5所示设置3个主机(即主机121、主机122和主机123)和4个内存控制装置(即内存控制装置131、内存控制装置132、内存控制装置133和内存控制装置),此情况下n=3、m=4。由于分布式事务处理系统100中的主机数量大于1,因而n的取值要大于1,但m的取值在一个事务支持设备具有足够的存储空间的情况下可以等于1。
对于图2(a)、图2(b)和图2(c)所示的分布式事务处理方法,图5示意了多个主机与内存控制装置131之间的交互。由于侧重于示意多个主机与内存控制装置之间的交互,因而图5只示意了分布式事务系统的一部分,即没有示意分布式事务系统所包括的动态随机存取存储器。需要说明的是,图5中内存控制装置131连接的动态随机存取存储器上具有第一地址,因而与交换机110连接的多个内存控制装置中只有内存控制装置131与主机进行交互。参照图5,对于图2(a)、图2(b)和图2(c)所示的分布式事务处理方法,首先主机121通过执行步骤S1来向内存控制装置131发送第一请求,接着内存控制装置131通过执行步骤S2来更新第一地址的缓存状态信息,然后内存控制装置131通过执行步骤S3来向主机122发送主机122对应的更新后的缓存状态信息,其中,步骤S1和步骤S3涉及的交互皆通过交换机110传输相应的交互数据来实现。
根据本公开一个实施例的分布式事务处理方法可以由图6所示的计算设备800实现。下面参照图6来描述根据本公开实施例的计算设备800。图6显示的计算设备800仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图6所示,计算设备800以通用计算设备的形式表现。计算设备800的组件可以包括但不限于:上述至少一个处理器810、上述至少一个存储单元820、连接不同系统组件(包括存储单元820和处理器810)的总线830。
其中,所述存储单元820存储有计算机可执行代码,所述计算机可执行代码可以被所述处理器810执行,使得所述处理器810执行本说明书上述示例性方法的描述部分中描述的本公开各种示例性实施方式的步骤。例如,所述处理器810可以执行如图3中所示的各个步骤。
存储单元820可以包括易失性存储单元形式的计算机可读存储介质,例如随机存取存储单元(RAM)8201和/或高速缓存存储单元8202,还可以进一步包括只读存储单元(ROM)8203。
存储单元820还可以包括具有一组(至少一个)程序模块8205的程序/实用工具8204,这样的程序模块8205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线830可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
计算设备800也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该计算设备800交互的设备通信,和/或与使得该计算设备800能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口850进行。并且,计算设备800还可以通过网络适配器860与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器860通过总线830与计算设备800的其它模块通信。应当明白,尽管图中未示出,可以结合计算设备800使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
需要领会,以上所述仅为本公开的优选实施例,并不用于限制本公开,对于本领域技术人员而言,本说明书的实施例存在许多变型。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。
本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理均遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
Claims (11)
1.一种分布式事务处理方法,包括:
接收第一主机发送的第一请求,其中,所述第一请求用于请求访问共享内存的第一地址,所述共享内存由多个主机共享;
锁定所述第一地址对各主机请求的响应,根据所述第一请求更新所述第一地址的缓存状态信息,并将所述第一主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第一主机,其中,内存地址的缓存状态信息用于指示各主机对该内存地址对应数据副本的缓存状态;
解除所述第一地址对各主机请求的响应锁定,执行所述第一主机的所述第一请求。
2.根据权利要求1所述的分布式事务处理方法,其中,
内存地址的缓存状态信息为一个多维向量;
所述多维向量的维数等于所述多个主机的数量,所述多维向量的元素指示该元素对应主机对该内存地址对应数据副本的缓存状态;
以及,主机对内存地址对应数据副本的缓存状态包括以下多种:失效状态、共享状态、独占状态、已修改状态。
3.根据权利要求1所述的分布式事务处理方法,其中,
内存地址还配置有锁定信息,内存地址的锁定信息用于指示该内存地址响应各主机请求时是否处于锁定状态;
锁定所述第一地址对各主机请求的响应,包括,将所述第一地址的锁定信息设为第一数据;
解除所述第一地址对各主机请求的响应锁定,包括:将所述第一地址的锁定信息设为第二数据。
4.根据权利要求1所述的分布式事务处理方法,其中,
所述多个主机中至少一个第二主机对所述第一地址对应数据副本的缓存状态因所述第一请求而改变;
根据所述第一请求更新所述第一地址的缓存状态信息之后以及解除所述第一地址对各主机请求的响应锁定之前,所述方法还包括:将所述第二主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第二主机。
5.根据权利要求4所述的分布式事务处理方法,其中,将所述第二主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第二主机,包括:
以数据包的形式向所述第二主机发送所述第二主机对所述第一地址对应数据副本的更新后的缓存状态,其中,所述数据包的标头中源地址为执行所述分布式事务处理方法的装置且目的地址为所述第二主机。
6.一种内存控制装置,包括:
接收单元,用于接收第一主机发送的第一请求,其中,所述第一请求用于请求访问共享内存的第一地址,所述共享内存由多个主机共享;
处理单元,用于锁定所述第一地址对各主机请求的响应,根据所述第一请求更新所述第一地址的缓存状态信息,其中,内存地址的缓存状态信息用于指示各主机对该内存地址对应数据副本的缓存状态;
发送单元,用于将所述第一主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第一主机;
所述处理单元还用于解除所述第一地址对各主机请求的响应锁定,执行所述第一主机的所述第一请求。
7.根据权利要求6所述的内存控制装置,其中,
所述多个主机中至少一个第二主机对所述第一地址对应数据副本的缓存状态因所述第一请求而改变;
所述发送单元还用于在根据所述第一请求更新所述第一地址的缓存状态信息之后以及解除所述第一地址对各主机请求的响应锁定之前,将所述第二主机对所述第一地址对应数据副本的更新后的缓存状态发送到所述第二主机。
8.根据权利要求7所述的内存控制装置,其中,所述发送单元以数据包的形式向所述第二主机发送所述第二主机对所述第一地址对应数据副本的更新后的缓存状态,所述数据包的标头中源地址为所述内存控制装置且目的地址为所述第二主机。
9.一种分布式事务处理系统,包括:交换机、多个主机、至少一个动态随机存取存储器,至少一个权利要求6-8中任一项所述的内存控制装置,其中,
所述交换机基于计算快速链路分别与所述多个主机和至少一个所述内存控制装置相连接;
所述内存控制装置与至少一个所述动态随机存取存储器相连接,所述至少一个动态随机存取存储器组成由所述多个主机共享的共享内存;
所述交换机用于传输所述主机与所述内存控制装置之间的交互数据。
10.一种计算设备,包括:
存储器,用于存储计算机可执行代码;
处理器,用于执行所述计算机可执行代码,以实现权利要求1-5中任一项所述的分布式事务处理方法的步骤。
11.一种计算机可读存储介质,其存储有计算机可执行代码,所述计算机可执行代码被处理器执行时实现权利要求1-5中任一项所述的分布式事务处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310411153.4A CN116450303A (zh) | 2023-04-10 | 2023-04-10 | 分布式事务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310411153.4A CN116450303A (zh) | 2023-04-10 | 2023-04-10 | 分布式事务处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116450303A true CN116450303A (zh) | 2023-07-18 |
Family
ID=87126871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310411153.4A Pending CN116450303A (zh) | 2023-04-10 | 2023-04-10 | 分布式事务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116450303A (zh) |
-
2023
- 2023-04-10 CN CN202310411153.4A patent/CN116450303A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3987162B2 (ja) | 読取り−共有トランザクションのための強化ブロッキング・メカニズムを含むマルチプロセス・システム | |
US7814279B2 (en) | Low-cost cache coherency for accelerators | |
US6295598B1 (en) | Split directory-based cache coherency technique for a multi-processor computer system | |
US6536000B1 (en) | Communication error reporting mechanism in a multiprocessing computer system | |
US5749095A (en) | Multiprocessing system configured to perform efficient write operations | |
US7395379B2 (en) | Methods and apparatus for responding to a request cluster | |
US6640289B2 (en) | Software controlled cache line ownership affinity enhancements in a multiprocessor environment | |
US8352656B2 (en) | Handling atomic operations for a non-coherent device | |
US20110125974A1 (en) | Distributed symmetric multiprocessing computing architecture | |
US20050021913A1 (en) | Multiprocessor computer system having multiple coherency regions and software process migration between coherency regions without cache purges | |
JP2002304328A (ja) | マルチプロセッサシステム用コヒーレンスコントローラ、およびそのようなコントローラを内蔵するモジュールおよびマルチモジュールアーキテクチャマルチプロセッサシステム | |
WO2006072058A1 (en) | Predictive early write-back of owned cache blocks in a shared memory computer system | |
US20110137861A1 (en) | Methods for Achieving Efficient Coherent Access to Data in a Cluster of Data Processing Computing Nodes | |
US7003633B2 (en) | Methods and apparatus for managing probe requests | |
Cassell et al. | Nessie: A decoupled, client-driven key-value store using RDMA | |
JP2001051959A (ja) | 少なくとも1つのnuma(non−uniformmemoryaccess)データ処理システムとして構成可能な相互接続された処理ノード | |
US6950913B2 (en) | Methods and apparatus for multiple cluster locking | |
EP3885918B1 (en) | System, apparatus and method for performing a remote atomic operation via an interface | |
US7107409B2 (en) | Methods and apparatus for speculative probing at a request cluster | |
US7107408B2 (en) | Methods and apparatus for speculative probing with early completion and early request | |
US7103725B2 (en) | Methods and apparatus for speculative probing with early completion and delayed request | |
US20040117564A1 (en) | System and method for reducing shared memory write overhead in multiprocessor systems | |
US7653790B2 (en) | Methods and apparatus for responding to a request cluster | |
Wang et al. | RDMA-enabled concurrency control protocols for transactions in the cloud era | |
US7337279B2 (en) | Methods and apparatus for sending targeted probes |
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 |