CN114968539A - 数据处理方法、计算机***和中间设备 - Google Patents
数据处理方法、计算机***和中间设备 Download PDFInfo
- Publication number
- CN114968539A CN114968539A CN202110197578.0A CN202110197578A CN114968539A CN 114968539 A CN114968539 A CN 114968539A CN 202110197578 A CN202110197578 A CN 202110197578A CN 114968539 A CN114968539 A CN 114968539A
- Authority
- CN
- China
- Prior art keywords
- data
- server
- information
- version
- intermediate device
- 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 8
- 238000000034 method Methods 0.000 claims description 56
- 238000012545 processing Methods 0.000 claims description 46
- 238000012217 deletion Methods 0.000 claims description 26
- 230000037430 deletion Effects 0.000 claims description 26
- 230000004048 modification Effects 0.000 claims description 21
- 238000012986 modification Methods 0.000 claims description 21
- 238000004891 communication Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 20
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5055—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- 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/54—Interprogram communication
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据处理方法、计算机***和中间设备,所述计算机***包括中间设备、第一服务器和第二服务器,所述第一服务器和第二服务器通过所述中间设备连接,所述第二服务器中存储有数据的第一版本,所述第一版本为所述数据的最新版本,所述中间设备中记录有存储所述数据的最新版本的服务器的信息,所述第一服务器用于通过所述中间设备从所述第二服务器获取所述数据的第一版本。本申请实施例提供的计算机***减少了服务器的负担,提高了***性能。
Description
技术领域
本申请涉及存储技术领域,具体涉及一种数据处理方法、计算机***和中间设备。
背景技术
在共享存储***中,例如在具有可以被多个服务器共享的全局内存的存储***或者分布式共享文件***中,需要保证多个服务器中所缓存数据的一致性,即保证每个服务器都可以访问到最新版本的数据。在一种保证缓存一致性的方法中,对于共享存储***中的每份数据,在该数据的归属服务器中记录该数据的元数据,元数据中包括缓存该数据最新版本的服务器的信息。在数据被归属服务器之外的其他服务器修改之后,归属服务器需要更新元数据,另外,当其他服务器访问数据的最新版本时,需要由归属服务器转发数据访问请求,从而增加了归属服务器的负担。
发明内容
本申请实施例旨在提供一种数据处理方案,通过由连接多个服务器的中间设备存储数据的最新版本所在的服务器的信息,通过中间设备获取数据的最新版本,从而减少了服务器的负担,提高了***性能。
为实现上述目的,本申请第一方面提供一种计算机***,包括中间设备、第一服务器和第二服务器,所述第一服务器和第二服务器通过所述中间设备连接,所述第二服务器中存储有数据的第一版本,所述第一版本为所述数据的最新版本,所述中间设备中记录有存储所述数据的最新版本的服务器的信息,所述第一服务器用于通过所述中间设备从所述第二服务器获取所述数据的第一版本。
通过由中间设备记录存储数据最新版本的第二服务器的信息,其它服务器可通过中间设备转发数据获取请求和数据最新版本,从而可从第二服务器获取数据的最新版本,减少了该数据的归属服务器的负担,提高了***性能。
在本申请第一方面的一种可能的实现方式中,所述第二服务器还用于在获取所述数据的第一版本后,指示所述中间设备记录所述第二服务器为存储所述数据的最新版本的服务器。通过由中间设备在服务器获取数据的最新版本之后记录该服务器的信息,从而其它服务器可通过中间设备根据记录的信息获取数据的最新版本。其中,服务器可通过以下任一方式获取数据的最新版本:新写数据、从其他服务器或本地获取数据之后改写数据、从其他服务器读取数据。
在本申请第一方面的一种可能的实现方式中,所述中间设备存储有所述数据的元数据,所述中间设备用于在所述数据的元数据中记录所述第二服务器的信息。
在本申请第一方面的一种可能的实现方式中,所述第一服务器在通过所述中间设备从所述第二服务器获取所述数据的第一版本时,具体用于向所述中间设备发送对所述数据的获取请求,所述中间设备还用于:从所述第一服务器接收对所述数据的获取请求,根据存储所述数据的最新版本的服务器的信息将所述获取请求转发给所述第二服务器;从所述第二服务器接收所述数据的第一版本并转发给所述第一服务器。
通过由中间设备基于所记录的存储最新版本的服务器的信息将从第一服务器接收的数据获取请求转发给第二服务器,并将从第二服务器接收的数据的最新版本转发给第一服务器,减少了数据的归属服务器的负担。
在本申请第一方面的一种可能的实现方式中,所述第一服务器用于在接收到对所述数据的改写请求,并在本地没有命中所述数据的第一版本时,发送所述获取请求至所述中间设备;所述第一服务器在获取所述数据的第一版本之后,还用于将所述数据的第一版本改写为第二版本。
在本申请第一方面的一种可能的实现方式中,所述第一服务器还用于在将所述数据的第一版本改写为第二版本之后,向所述中间设备发送改写完成信息;所述中间设备还用于从所述第一服务器接收所述改写完成信息,基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息。
通过由中间设备在数据被改写之后接收改写完成信息并修改存储最新版本的服务器的信息,减少了数据的归属服务器的负担。
在本申请第一方面的一种可能的实现方式中,所述获取请求中携带有改写标识,在中间设备将所述获取请求转发给所述第二服务器之后,所述第二服务器用于根据所述获取请求中的改写标识在获取所述数据的第一版本之后删除所存储的所述数据的第一版本。
通过由第二服务器在获取数据的最新版本之后删除本地存储的数据的最新版本,保证了数据的缓存一致性,同时也减轻了服务器的负担。
在本申请第一方面的一种可能的实现方式中,所述中间设备中记录有对所述数据的写锁信息,所述中间设备还用于:在从所述第一服务器接收到对所述数据的获取请求之后,根据所述获取请求中的改写标识修改所述写锁信息以锁定所述数据,在基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息之后,修改所述元数据的写锁信息以对所述数据解锁。
通过由中间设备记录写锁信息并在接收到指示改写的获取请求之后通过写锁信息对数据进行锁定,保证了数据的缓存一致性,同时减轻了数据的归属服务器的负担。
在本申请第一方面的一种可能的实现方式中,所述数据为热点数据。通过使得中间设备只存储热点数据的元数据,减少了对中间设备的存储空间的需求。
在本申请第一方面的一种可能的实现方式中,所述***还包括第三服务器,所述第三服务器与所述中间设备连接,所述第三服务器中也存储有所述数据的第一版本,所述第二服务器在接收到对所述数据的改写请求,并在本地命中所述数据的第一版本后,还用于向所述中间设备发送对所述数据的删除请求,所述中间设备还用于:从所述第二服务器接收对所述数据的删除请求,根据所述存储所述数据的最新版本的服务器的信息,将所述删除请求转发给所述第三服务器,指示所述第三服务器删除所述数据的第一版本;所述第二服务器还用于将所述数据的第一版本改写为第二版本。
在本申请第一方面的一种可能的实现方式中,所述中间设备为网络交换设备。
在本申请第一方面的一种可能的实现方式中,所述中间设备包括相互连接的第一中间设备和第二中间设备,其中,所述第一中间设备中存储有归属于所述第一服务器的数据的元数据,所述第二中间设备中存储有归属于所述第二服务器的数据的元数据。
在本申请第一方面的一种可能的实现方式中,所述计算机***为全局内存***或者分布式共享文件***。
本申请第二方面提供一种数据处理方法,其特征在于,由中间设备执行,所述中间设备分别与第一服务器和第二服务器连接,所述第二服务器中存储有数据的第一版本,所述第一版本为所述数据的最新版本,所述中间设备中记录有存储所述数据的最新版本的服务器的信息,所述方法包括:从所述第一服务器接收对所述数据的获取请求;根据所述存储所述数据的最新版本的服务器的信息,将所述获取请求转发给所述第二服务器;从所述第二服务器接收所述数据的第一版本;将所述数据的第一版本转发给所述第一服务器。
在本申请第二方面的一种可能的实现方式中,所述方法还包括:从所述第一服务器接收对所述数据的改写完成信息;基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息。
在本申请第二方面的一种可能的实现方式中,所述获取请求中携带有改写标识,所述方法还包括,在将所述获取请求转发给所述第二服务器之后,从所述第二服务器接收所述数据的第一版本被删除的信息。
在本申请第二方面的一种可能的实现方式中,所述中间设备中记录有对所述数据的写锁信息,所述方法还包括:在从所述第一服务器接收到对所述数据的获取请求之后,根据所述获取请求中的改写标识修改所述写锁信息以锁定所述数据,在基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息之后,修改所述写锁信息以对所述数据解锁。
在本申请第二方面的一种可能的实现方式中,所述数据为热点数据。
本申请第三方面提供一种中间设备,所述中间设备分别与第一服务器和第二服务器连接,所述第二服务器中存储有数据的第一版本,所述第一版本为所述数据的最新版本,所述中间设备中记录有存储所述数据的最新版本的服务器的信息,所述中间设备包括:接收单元,用于从所述第一服务器接收对所述数据的获取请求;转发单元,用于根据所述存储所述数据的最新版本的服务器的信息,将所述获取请求转发给所述第二服务器;所述接收单元还用于从所述第二服务器接收所述数据的第一版本;所述转发单元还用于将所述数据的第一版本转发给所述第一服务器。
在本申请第三方面的一种可能的实现方式中,所述接收单元还用于从所述第一服务器接收对所述数据的改写完成信息;所述中间设备还包括修改单元,用于基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息。
在本申请第三方面的一种可能的实现方式中,所述获取请求中携带有改写标识,所述接收单元还用于在将所述获取请求转发给所述第二服务器之后,从所述第二服务器接收所述数据的第一版本被删除的信息。
在本申请第三方面的一种可能的实现方式中,所述中间设备中记录有对所述数据的写锁信息,所述修改单元还用于:在从所述第一服务器接收到对所述数据的获取请求之后,根据所述获取请求中的改写标识修改所述写锁信息以锁定所述数据,在基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息之后,修改所述写锁信息以对所述数据解锁。
在本申请第三方面的一种可能的实现方式中,所述数据为热点数据。
本申请第四方面提供一种中间设备,包括处理单元和存储单元,所述存储单元中存储有可执行代码,所述处理单元执行所述可执行代码以实现本申请第二方面所述的方法。
本申请第五方面提供一种中间设备,包括:通信接口,用于与服务器进行数据传输;处理单元,用于对所述通信接口接收的数据进行处理,以执行本申请第二方面所述的方法。
附图说明
通过结合附图描述本申请实施例,可以使得本申请实施例更加清楚:
图1为本申请实施例提供的共享存储***的架构图;
图2为本申请实施例提供的在共享存储***中写数据的方法流程图;
图3为本申请实施例提供的在共享存储***中改写数据的方法流程图;
图4为图3中的第一服务器中未缓存数据时所执行的流程A的流程图;
图5为在数据状态为未共享状态的情况下的数据改写过程示意图;
图6为在数据状态为共享状态的情况下的数据改写过程示意图;
图7为在数据状态为修改状态的情况下的数据改写过程示意图;
图8为数据的状态随对数据的操作的变化示意图;
图9为图3中的第一服务器中缓存有数据且数据的状态为共享状态时所执行的流程B的流程图;
图10为在数据访问请求为数据删除请求情况下的数据改写过程示意图;
图11为本申请实施例提供的在共享存储***中读取数据的方法流程图;
图12为在数据状态为共享或修改状态的情况下的数据读取过程示意图;
图13为本申请实施例提供的共享磁盘***的架构图;
图14为本申请实施例提供的一种中间设备的架构图;
图15为本申请实施例提供的一种中间设备的结构图;
图16本申请实施例提供的一种中间设备的结构图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行描述。
图1为本申请实施例提供的共享存储***的架构图,所述***包括构成服务器集群的多个服务器和至少一台中间设备,其中每台中间设备与至少一个服务器连接,所述中间设备可以为可编程网络连接设备,例如交换机,下文中将以交换机作为中间设备的示例进行描述。图1中示意示出了,交换机1与服务器S1~服务器Si连接,交换机2与服务器Sj~服务器Sn连接。如图1中所示,每个服务器将自己的内存(例如动态随机存取存储器(Dynamic Random Access Memory,DRAM))分为两部分:共享内存和私有的本地缓存(即回写缓存)。服务器集群中的全部服务器的共享内存构成了一个内存池(下文称为全局内存),服务器集群中的任一服务器可以访问所述全局内存。其中,存储在全局内存中的数据的地址可以用16位的节点编号加48位的节点内地址表示,全局内存中的数据可以以地址作为数据标识(或数据编号),节点编号即为在共享内存中存储该数据的服务器的编号,节点内地址即为数据存储在服务器所提供的共享内存中的地址偏移。在各个服务器中,在服务器读写数据时,会首先访问本地缓存,本地缓存中存储有服务器中的应用程序(Application,APP)热数据,例如应用程序新写入的数据或者经常被读取的数据,当本地缓存中的存储空间不够时,可将本地缓存中的数据淘汰至服务器的共享内存中。当在本地缓存没有命中所访问的数据时,则从全局内存中将数据读取至本地内存,再从本地内存中读取数据。所述服务器可以为物理服务器,或者也可以为虚拟机、容器等基于通用硬件资源抽象的虚拟实体。交换机连接各自对应的服务器,并且交换机之间相互连接,以相对于所述多个服务器进行数据的转发。
在图1所示的共享存储***中,需要保证多个服务器中的本地缓存中所缓存的数据的一致性。即,当一份数据被多个服务器缓存在本地缓存时,保证多个服务器中的本地缓存中所缓存的该份数据的一致性,具体地,当一个服务器对该份数据进行修改之后,保证其他服务器可以访问到该份数据的最新版本。例如,假设服务器S1和服务器Sn在其各自的本地缓存中都缓存有编号为d1的数据A,服务器S1先对本地缓存中的数据A进行了改写操作,将数据A更新为数据A1。假设此时服务器Sn运行的应用程序对编号d1对应的数据进行读取操作,服务器Sn将从本地缓存中读取数据A,而不是最新版本的数据A1,从而导致应用程序不能读取到最新的数据。
在相关技术中,为了保证数据A被服务器S1修改为数据A1后,其他服务器仍然能读到最新版本的数据A1,需要在数据修改后,进行缓存一致性处理。具体是,对于全局内存中的数据,例如由在共享内存中存储该数据的服务器作为该数据的归属服务器,并由该归属服务器中生成并存储数据的元数据,该元数据中包括缓存该数据最新版本的服务器的信息。在数据被归属服务器之外的其他服务器修改之后,归属服务器需要更新元数据中的缓存该数据最新版本的服务器的信息,另外,当其他服务器访问数据的最新版本时,需要由归属服务器向缓存该数据的服务器转发数据访问请求,以获取数据的最新版本,从而增加了归属服务器的负担。
在本申请实施例提供的数据处理方案中,如图1所示,由交换机存储全局内存中的数据的元数据,在该元数据中会记录存储每个数据的最新版本的服务器的信息。这样,在服务器访问该数据时,服务器可将数据访问请求发送给交换机,通过交换机的基于数据的元数据的处理,从存储数据的最新版本的服务器获取数据的最新版本。通过如此,在数据被服务器修改之后,由交换机更新数据的元数据中的缓存该数据最新版本的服务器的信息,当其他服务器访问数据的最新版本时,通过交换机将数据访问请求转发给缓存该数据的服务器,从而减少了服务器的处理和网络流量,减少了服务器的负担。
如图1所示,在本申请实施例中,每台交换机可与服务器集群中的部分服务器连接,从而可由多台交换机协同处理各个服务器的数据访问请求。在一种实施方式中,可确定全局内存中的数据与各台交换机之间的对应关系。例如,可按照全局内存中的存储地址范围将全局内存中的数据划分为与多台交换机分别对应。之后,可根据各台服务器的共享内存中存储的数据与各台交换机的对应关系建立交换机与服务器之间的连接,具体是,使得每台交换机与在共享内存中存储与该台交换机对应的数据的服务器连接。每台交换机可以存储其对应的每个数据的元数据以对其对应的每个数据进行缓存一致性处理,或者,每台交换机可以仅存储其对应的数据中的热点数据的元数据,以仅对该热点数据进行缓存一致性处理。在后一情况中,交换机和服务器之间可根据数据的访问热度对数据的元数据进行迁移。例如,对于被频繁访问的数据,该数据的归属服务器可将该数据的元数据发送给其连接的交换机,从而由交换机进行对该数据的缓存一致性处理。反之,如果当前由交换机进行缓存一致性处理的数据的访问频次降低,交换机可将该数据的元数据发送给该数据的归属服务器,从而恢复由归属服务器进行对该数据的缓存一致性处理。如此使得交换机仅处理热点数据的缓存一致性处理,减少了对交换机的存储需求。
其中,数据的元数据中例如包括缓存该数据的服务器列表。服务器列表的格式例如可以是一个位图(bitmap),每个服务器对应于位图中的一位,若服务器中缓存了该数据,则数据的服务器列表中与该服务器对应的位为1,以表示该服务器在该服务器列表中。
数据的元数据中还可以包括数据的状态。数据的状态包括以下三种状态:未共享(unshared),即在服务器集群中,没有服务器在本地缓存中存储有该数据;共享(shared),即服务器集群中的至少一个服务器的本地缓存中存储有该数据,并且该至少一个服务器仅具有对该数据的读权限;修改(modified),即服务器集群中的一个服务器的本地缓存中存储有该数据,并且该服务器具有对该数据的写权限。
在交换机中存储了数据的元数据的情况中,服务器在以下三种情况下向相应的交换机发送数据访问请求:本地缓存中未存储希望读写的数据,即缓存不命中;将要对本地缓存中存储的共享状态的数据进行改写,即写共享;删除本地缓存中存储的数据,即数据逐出。服务器根据数据在本地缓存中的存储情况可向交换机发送以下五种数据访问请求:当本地缓存中未缓存数据,并且服务器希望对该数据进行改写的情况中,服务器发送指示写缺失操作的数据获取请求;当本地缓存中未缓存数据,并且服务器希望对该数据进行读取的情况中,服务器发送指示读缺失操作的数据获取请求;当本地缓存中缓存了数据,在服务器中记录的该数据的状态为共享状态,并且该服务器希望对该数据进行改写的情况中,服务器发送指示写共享操作的数据删除请求;当本地缓存中缓存了数据,在服务器中记录的该数据的状态为修改状态,并且该服务器希望删除该数据的情况中,服务器发送指示逐出修改操作的数据写请求;当本地缓存中缓存了数据,在服务器中记录的该数据的状态为共享状态,并且该服务器希望删除该数据的情况中,服务器发送指示逐出共享操作的处理请求。其中,写缺失操作、读缺失操作、写共享操作、逐出修改操作和逐出共享操作为服务器对数据进行的五种操作类型。
交换机在从服务器接收到数据访问请求之后,可根据数据访问请求的类型、元数据中记录的缓存数据的服务器列表和数据的状态,进行相对应的处理,以用于保证各个服务器的本地缓存中所缓存的数据的一致性,这将在下文进行详细描述。
图2为本申请实施例提供的在共享存储***中写数据的方法流程图。该方法由图1中的服务器集群中的服务器和交换机共同执行。其中,第一服务器可以为服务器集群中的任一服务器,下文中以第一服务器为服务器S1进行示例描述。
当服务器S1中的应用希望向全局内存新写入数据(例如数据A)时,执行步骤S201,生成元数据创建请求。具体是,服务器S1确定全局内存中写入数据的地址,如上文所述,该地址包括服务器节点编号和服务器的节点内地址,将该确定的地址作为数据的编号(下文表示为编号d1),并据此生成元数据创建请求。该元数据创建请求中例如包括数据编号d1等信息。该元数据创建请求中还可以包括请求服务器(即服务器S1)的编号。
服务器S1在生成元数据创建请求之后执行步骤S202,向交换机发送元数据创建请求。该交换机为编号为d1的数据A所对应的交换机,例如,如上文所述,该交换机为与数据的地址相对应的交换机。假设数据的地址指示该数据对应的交换机为图1中的交换机2,则服务器S1可通过交换机1将该元数据创建请求转发给交换机2。
交换机2在从服务器S1接收到元数据创建请求之后,创建数据的元数据,该元数据中例如包括数据A的编号d1、数据A的服务器列表等信息。其中,在创建该元数据之后,由于此时还没有任一服务器在其本地缓存中缓存有数据A,因此初始的服务器列表为空列表,即其中不包括任何服务器的信息。
所述元数据中还可以包括读写锁表。交换机2可通过元数据中的读锁或写锁,避免同时接收的对编号d1的数据的多个数据访问请求之间的冲突。该读写锁例如为16位锁,最高位为写锁,如果值为1,表示该数据被加上写锁,其他服务器将不能对该数据进行其他数据操作(如读操作、写操作、逐出操作等);读写锁的后15位为读锁,表示读该数据的服务器的数量,每加一次读锁,读写锁的后15位的值加1,每解一次读锁,读写锁的后15位的值减1,通过如此设置,如果读写锁的后15位的值不为0,表示该数据被加上读锁,其他服务器将不能对该数据进行写操作,并且可控制读该数据的服务器的最大数目为215-1。
交换机2在创建数据的元数据之后,可通过该读写锁对编号d1的数据加写锁。如上文所述,在加写锁期间,其他服务器将不能通过交换机2对该数据进行其他任何操作。交换机2在后续接收到其他对编号d1的数据的数据访问请求时,如果接收的数据访问请求为上述指示读缺失操作的数据获取请求,交换机2在确定未加写锁的情况中,在元数据中加读锁,如果是上述五种数据访问请求中的其他请求,则交换机2在确定未加写锁的情况中在元数据中加写锁,如果交换机2确定数据已经加写锁或者读锁的数量已经为215-1次,则本次加锁失败,交换机2返回处理失败消息。
在步骤S204,交换机2在创建好数据的元数据之后,对服务器S1返回创建完成信息。该创建完成信息中例如包括对数据加写锁的信息。
在步骤S205,服务器S1在确定交换机2已经创建好数据A的元数据之后,在本地缓存中写入数据A。服务器S1在写入数据A之后,可在本地记录编号为d1的数据的状态为修改状态。当服务器S1希望再次修改编号为d1的数据时,基于该修改状态可直接对本地缓存中的数据A进行修改,即该修改状态指示服务器S1具有对编号为d1的数据的修改权限。另外,服务器S1可记录编号d1与本地缓存中存储数据A的地址(虚拟地址或物理地址)的对应关系,从而可根据该对应关系从本地缓存中读取到数据A。
在步骤S206,服务器S1向交换机2发送数据写完成信息。该数据写完成信息中例如包括数据A的状态(修改状态)。另外,该数据写完成信息中还可以包括服务器列表,该服务器列表中例如包括服务器S1的信息。
在步骤S207,交换机2在从服务器S1接收到数据写完成信息之后,基于数据写完成信息更新编号为d1的数据的元数据。具体是,交换机2可将元数据中的服务器列表修改为包括服务器S1的信息,并在元数据中记录数据A的状态为修改状态。在进行该更新之后,交换机2可在元数据中对编号为d1的数据解写锁。
服务器S1在通过上述步骤在本地缓存中写入数据A之后,根据预定逐出规则,例如当数据A不再是应用的热数据时,或者当数据A写入超过预定时间之后,服务器S1将从本地缓存中逐出修改状态的数据A。为此,服务器S1需要通过交换机2将数据的最新版本(即数据A)存储到其归属服务器中。从而,服务器S1可执行步骤S208,生成指示逐出修改的数据写请求,以将数据A存入归属服务器。由于此时数据A的状态为修改状态,该数据写请求具体为上述指示逐出修改操作的数据写请求。该数据写请求中例如包括请求类型(指示逐出修改操作的数据写请求类型)、数据编号d1、数据A和请求服务器(即服务器S1)的编号。
在步骤S209,服务器S1将数据写请求发送给交换机2。
在步骤S210,交换机2在从服务器S1接收到数据写请求之后,根据编号d1对应的数据地址,将该数据写请求转发给数据A的归属服务器(图2中以第二服务器示出),例如该归属服务器为服务器Sn。
在步骤S211,服务器Sn在接收到数据写请求之后,将数据A写入共享内存中的编号d1对应的地址中。
在步骤S212,服务器Sn在完成对数据A的写入之后,向交换机2返回数据写完成信息。交换机2在从服务器Sn接收到数据写完成信息之后,在步骤S213向服务器S1返回数据写完成信息。
在步骤S214,服务器S1在接收到数据写完成信息之后,在本地缓存中删除数据A,并在步骤S215向交换机2发送数据逐出完成信息。交换机2在接收到逐出完成信息之后,可更新数据A的元数据,具体是,可将元数据中的服务器列表中的服务器S1的信息删除,并将数据状态修改为未共享状态。
在图2所示的流程中虽然示出了通过交换机创建数据的元数据,本申请实施例不限于此。在另一种实施方式中,交换机在接收到数据写请求之后,可根据数据编号中的数据归属服务器的编号,将该元数据创建请求发送给服务器Sn,由服务器Sn创建数据的元数据,并在该数据的访问频次增大成为热点数据之后,由服务器Sn将该元数据移至交换机2中。
在图2所示流程中,通过服务器和交换机进行了创建数据元数据的过程,以及在共享内存中存入数据的过程。在创建了数据的元数据之后,交换机2可根据服务器S1对数据的写操作或逐出操作在元数据中记录缓存编号d1的数据的最新版本的服务器的信息,从而使得其他服务器可通过交换机2获取到数据的最新版本。在该过程中,由交换机进行对元数据的创建和更新,并由交换机进行对数据访问请求的转发,减轻了服务器的负担。
图3为本申请实施例提供的在共享存储***中改写数据的方法流程图。
图3中的第一服务器为服务器集群中希望对数据(例如编号为d1的数据)进行改写的任意服务器,下文中以服务器S1作为第一服务器进行示例描述。
如图3所示,当服务器S1中的应用希望对编号为d1的数据进行改写时,首先在步骤S301,确定本地缓存中是否存储有编号为d1的数据。服务器S1可确定在本地记录的数据编号与本地缓存中的地址的对应关系表中是否包括编号d1,如果不包括编号d1,则可确定本地缓存中没有存储编号为d1的数据,从而可执行流程A。如果包括编号d1,则可确定本地缓存中存储有编号d1的数据。
在确定本地缓存中存储有编号d1的数据的情况下,服务器S1可执行步骤S302,基于本地记录的编号d1的数据状态确定该数据是否为修改状态,如果为修改状态,服务器S1可执行步骤S303,直接对本地缓存中的编号d1的数据进行改写,如果不是修改状态,可确定该数据的状态为共享状态,则服务器S1执行流程B。
图4为图3中的第一服务器中未缓存数据时所执行的流程A的流程图。
如图4所示,在步骤S401,服务器S1生成数据获取请求。该数据获取请求为上述指示写缺失操作的数据获取请求。该数据获取请求中包括请求类型(指示写缺失操作的数据获取请求)、请求改写的数据编号(例如编号d1)和请求服务器的编号(例如服务器S1的编号)。
在步骤S402,服务器S1将数据获取请求发送给交换机2。
服务器S1在生成数据获取请求之后,根据数据的编号d1与交换机2的对应关系可确定该数据与交换机2相对应,并可通过交换机1将该数据获取请求发送给交换机2。
交换机2可确定本地是否存储有编号d1的数据的元数据,在确定本地存储有数据的元数据的情况中,进行图4所示流程的后续步骤。在确定本地未存储数据的元数据的情况中,交换机2根据数据d1的数据编号中的服务器Sn的编号,将该数据获取请求转发给服务器Sn,以由服务器Sn对该数据获取请求进行缓存一致性处理。假设交换机2中存储有编号为d1的数据的元数据,即交换机2在接收到上述数据获取请求之后进行对该请求的缓存一致性处理。
如上文所述,交换机2在接收到数据获取请求之后,可以在元数据中对数据加写锁。
交换机2在每次接收到数据访问请求之后,可以检查该数据访问请求的有效性,包括:检查数据访问请求与交换机元数据中的数据状态是否存在冲突;以及检查该数据访问请求中的请求服务器编号和元数据中该数据的服务器列表是否冲突。若发生冲突,交换机可向请求服务器返回处理失败消息。该处理失败消息中可包括失败的原因,请求服务器在接收到处理失败消息之后,可以重新尝试数据处理操作。其中,数据处理请求与交换机元数据中的数据状态之间的冲突例如包括以下冲突:请求类型为指示写共享或者逐出共享的请求,数据的状态为不共享;请求类型为指示逐出修改的请求,数据的状态不为修改。请求服务器编号和服务器列表之间的冲突例如包括以下冲突:请求类型为指示读缺失或者写缺失的请求,但请求服务器的编号已经在缓存块的服务器列表中;请求类型为指示写共享、逐出共享或者逐出修改的请求时,请求服务器不在服务器列表中。
在步骤S403,交换机2在接收到数据获取请求之后可根据数据的元数据将数据获取请求转发给第二服务器。
在一种情况中,元数据中记录的数据状态为未共享状态,和/或元数据中记录了服务器列表中不包括任何服务器的信息,也即,服务器集群中没有服务器在本地缓存中缓存了编号为d1的数据。在该情况中,交换机2根据编号d1确定数据的归属服务器为服务器Sn,并将该数据获取请求转发给服务器Sn,在该情况中,服务器Sn为第二服务器。
图5为在数据状态为未共享状态的情况下的数据改写过程示意图。如图5所示,服务器S1在将数据获取请求发送给交换机2之后,通过交换机2从服务器Sn的共享内存中拉取编号为d1的数据A,服务器S1将数据A修改为数据A1,并在本地缓存中存储修改后的数据A1,最后交换机2在服务器S1修改完成之后更新编号为d1的数据的元数据,以指示服务器S1中存储有编号为d1的数据的最新版本。
在另一种情况中,元数据中记录的数据状态为共享状态,在该情况中,交换机根据元数据中的服务器列表,将该数据获取请求发送给服务器列表中记录的各个服务器。交换机在向各个服务器转发数据获取请求的同时,还可以指定其中一个服务器返回其缓存的数据。例如,交换机可向各个服务器发送数据包,该数据包中包括指示写缺失操作的数据获取请求和“是否返回数据”字段,通过该字段指示其中一个服务器(例如服务器Si)返回其缓存的数据。此外,该数据包中还可以包括其他字段,如数据d1的状态、数据d1的服务器列表、以及元数据是否在交换机2中等字段。
图6为在数据状态为共享状态的情况下的数据改写过程示意图。如图6所示,服务器S1在将数据获取请求发送给交换机2之后,通过交换机2将数据获取请求转发给缓存数据的各个服务器(例如服务器Si和服务器Sj),并从服务器Sj的本地缓存中拉取编号d1的数据A,服务器S1将数据A修改为数据A1,并在本地缓存中存储修改后的数据A1,最后交换机2在服务器S1修改完成之后更新编号为d1的数据的元数据,以指示服务器S1中存储有编号为d1的数据的最新版本。也就是说,在该情况中,服务器Sj为图4中的第二服务器。
在又一种情况中,元数据中记录的数据的状态为修改状态,在该情况中,交换机根据元数据中的服务器列表,将该数据获取请求发送给服务器列表中记录的一个服务器(例如服务器Si),即,在该情况中,服务器Si为图4中的第二服务器。
图7为在数据状态为修改状态的情况下的数据改写过程示意图。如图7所示,服务器S1在将数据获取请求发送给交换机2之后,通过交换机2从服务器Si的本地缓存中拉取编号d1的数据A,服务器S1将数据A修改为数据A1,并在本地缓存中存储修改后的数据A1,最后交换机2在服务器S1修改完成之后更新编号为d1的数据的元数据,以指示服务器S1中存储有编号为d1的数据的最新版本。
在步骤S404,第二服务器在接收到数据获取请求之后读取数据。
具体是,在图5所示的情况中,第二服务器为服务器Sn,服务器Sn在接收到数据获取请求之后,从共享内存中读取数据A。
在图6所示的情况中,第二服务器为服务器Sj,服务器Sj在接收到包括数据获取请求的数据包之后,根据数据包中的“是否返回数据”字段,从本地缓存中读取数据A以用于返回。在读取数据A之后,服务器Sj根据数据获取请求的请求类型,将本地缓存中的数据A删除,以用于保证数据的缓存一致性。同样地,图6中的服务器Si在接收到交换机转发的数据获取请求之后,也将本地缓存中的数据A删除,以用于保证数据的缓存一致性。
在图7所示的情况中,第二服务器为服务器Si,服务器Si在接收到数据获取请求之后,从本地缓存中读取编号为d1的数据的最新版本(假设为数据A),并将本地缓存中的数据A删除,以保证数据的缓存一致性。
在步骤S405,第二服务器在读取数据A之后,将读取的数据A返回给交换机2。
在步骤S406,交换机2在从第二服务器接收到数据A之后,将该数据A返回给服务器S1。交换机2在将数据A返回给服务器S1的同时,还可以把元数据中编号为d1的数据的数据状态和服务器列表中的至少一个发送给服务器S1。
在步骤S407,服务器S1在接收到返回的数据A之后,将数据A改写为数据A1。
具体是,在图5所示的情况中,服务器S1在还从交换机2接收到编号为d1的数据的服务器列表的情况中,可基于该服务器列表确定只需要从服务器Sn接收回复信息,从而在确定接收到服务器Sn返回的数据A之后进行对数据A的改写。服务器S1在接收到数据的状态为未共享状态的情况中,可基于该状态确定只需要从数据的归属服务器(即服务器Sn)接收回复信息。服务器S1在接收到数据A之后,将数据A修改为数据A1作为编号为d1的数据的最新版本,并将数据A1存储到本地缓存中,其中,对数据A的修改包括对数据A中的至少部分数据的修改。
此外,服务器S1可根据接收的数据d1的状态(即未共享状态)和对数据的操作类型确定数据d1的最新状态。图8为数据的状态随对数据的操作的变化示意图,图8中的节点为数据的当前状态,节点之间的边为数据操作类型。如图8所示,服务器S1根据数据d1的当前未共享状态和写缺失操作可确定数据d1的状态变为修改状态。同时,服务器S1还相应地修改其接收的服务器列表,更新后的服务器列表中仅包括服务器S1。
在图6所示的情况中,服务器S1在还从交换机2接收到编号为d1的数据的服务器列表的情况中,假设该服务器列表中包括服务器Si和服务器Sj的信息,服务器S1可基于该服务器列表确定需要从服务器Si和Sj接收回复信息,从而在确定接收到服务器Si和Sj的回复信息之后,进行对数据A的改写,其中,服务器Si的回复信息中包括删除数据A的信息,服务器Sj的回复信息中包括数据A和删除数据A的信息。服务器S1根据图8可确定,在对共享状态的数据进行写缺失操作之后,数据的状态变为修改状态,并将该更新的数据状态发送给交换机2。
在图7所示的情况中,与图5所示情况类似地,服务器S1根据服务器列表确定在接收到服务器Si发送的数据A之后,可进行对数据A的改写。服务器S1根据图8可确定,在对修改状态的数据进行写缺失操作之后,数据的状态仍为修改状态,并可将该数据状态发送给交换机2。
在步骤S408,服务器S1向交换机2发送数据改写完成信息。
该数据改写完成信息例如包括在进行写缺失操作之后的数据d1的状态和数据d1的服务器列表。在一种实施方式中,在交换机2在接收到指示写缺失操作的数据获取请求之后对数据d1上写锁的情况中,在该数据改写完成信息中还包括写锁解锁信息。
步骤S409,交换机2在接收到数据改写完成信息之后,根据数据改写完成信息更新数据的元数据。
交换机2在接收到上述数据改写完成信息之后,根据数据改写完成信息中的数据d1的状态和数据d1的服务器列表更新编号为d1的数据的元数据。具体是,参考图5-图7,在该对元数据的更新之后,元数据中记录的数据d1的状态为修改状态,并且,元数据中的服务器列表中包括服务器S1。通过在元数据中记录数据的状态为修改状态以及数据的服务器列表中包括服务器S1,表示服务器S1可在本地缓存中对数据d1进行修改,并指示其他服务器:服务器S1的本地缓存中存储有编号为d1的数据的最新版本。从而,当其他服务器希望读写编号为d1的数据时,可通过交换机2从服务器S1读取编号为d1的数据的最新版本,从而保证了数据d1在各个服务器的缓存一致性。
在交换机2已经根据指示写缺失操作的数据获取请求对数据d1上写锁的情况中,在对元数据更新完成之后,交换机2根据数据处理完成信息中的写锁解锁信息对数据d1的写锁解锁,即,如上文所述,将数据d1的读写锁的最高位的值恢复为0。
图9为图3中的第一服务器中缓存有数据且数据的状态为共享状态时所执行的流程B的流程图。
如图9所示,假设第一服务器为服务器S1,服务器S1在确定本地缓存中缓存有编号为d1的数据且本地记录了数据的状态为共享状态的情况中,服务器S1执行步骤S901,生成指示写共享操作的数据删除请求,该数据删除请求中包括请求类型(指示写共享操作的数据删除请求类型)、请求改写的数据编号(编号d1)和请求服务器的编号(服务器S1的编号)。
在步骤S902,服务器S1将数据删除请求发送给交换机2。该步骤可参考上文对步骤S402的描述,在此不再赘述。
在步骤S903,交换机2根据数据的元数据向第二服务器转发数据删除请求。
交换机2可根据元数据中的服务器列表,确定除服务器S1之外的缓存数据的至少一个服务器,并将该数据删除请求转发给每个缓存该数据的服务器。也就是说,图9中的第二服务器可以是除服务器S1之外的缓存该数据的任一服务器,例如服务器Si。
图10为在数据访问请求为数据删除请求情况下的数据改写过程示意图。在数据元数据的服务器列表中包括服务器S1和服务器Si的信息的情况中,交换机2将数据删除请求转发给服务器Si,从而使得服务器Si删除本地缓存中的数据A,以保证数据的缓存一致性。即,在该情况中,服务器Si为图9中的第二服务器。
在步骤S904,服务器Si在接收到数据删除请求之后删除数据。
如图10所示,服务器Si在接收到上述数据删除请求之后,删除本地缓存中的数据A。
在步骤S905,服务器Si向交换机2返回删除完成信息。
在步骤S906,交换机2将接收的删除完成信息转发给服务器S1。交换机在转发删除完成信息的同时,还可以把元数据中数据的状态和数据的服务器列表一起发送给服务器S1。
在步骤S907,服务器S1在接收到来自服务器Si的删除完成信息之后,对本地缓存中的数据A进行改写。服务器S1根据从交换机2接收的数据的服务器列表可确定仅需要从服务器Si接收删除完成信息,并在确定已经从服务器Si接收到删除完成信息之后进行对数据A的改写。具体是,如图10所示,服务器S1从本地缓存中读取数据A,将数据A修改为数据A1作为编号为d1的数据的最新版本,并将数据A1存储到本地缓存中。此外,参考图8,服务器S1可根据从交换机2接收的数据d1的状态(即共享状态)和写共享操作类型将数据d1的状态更新为修改状态。同时,服务器S1还可以修改从交换机2接收的服务器列表,更新后的服务器列表中仅包括服务器S1。
在步骤S908,服务器S1向交换机2发送数据改写完成信息。
该数据改写完成信息例如包括更新的数据的状态和数据的服务器列表。
步骤S909,交换机2根据改写完成信息更新数据的元数据。
交换机2在接收到上述改写完成信息之后,根据改写完成信息中的数据的状态和数据的服务器列表更新编号为d1的数据的元数据。具体是,如图10所示,在该对元数据的更新之后,元数据中记录的数据d1的状态为修改状态,并且,元数据中的服务器列表仅包括服务器S1。
图11为本申请实施例提供的在共享存储***中读取数据的方法流程图。
图11中的第一服务器为服务器集群中希望读取数据的任一服务器,下文中以服务器S1作为第一服务器进行示例描述。
如图11所示,当服务器S1中的应用希望读取编号为d1的数据时,首先在步骤S1101,确定本地缓存中是否缓存有编号为d1的数据。该确定的过程可参考上文对步骤S301的描述,在此不再赘述。在确定本地缓存中缓存有数据的情况中,可直接读取本地缓存中的数据返回给应用。
在确定本地缓存中未缓存数据的情况中,服务器S1执行步骤S1102,生成指示读缺失操作的数据获取请求。该数据获取请求中包括请求类型(指示读缺失操作的数据获取请求类型)、请求获取的数据编号(编号d1)和请求服务器的编号等信息。
在步骤S1103,服务器S1将生成的数据获取请求发送给数据对应的交换机2。
在步骤S1104,交换机2在接收到数据获取请求之后可根据数据的元数据将数据获取请求转发给第二服务器。
在一种情况中,元数据中记录的数据状态为未共享状态,和/或元数据中记录了服务器列表中不包括任何服务器的信息,也即,服务器集群中没有服务器在本地缓存中缓存了编号为d1的数据。在该情况中,交换机2根据编号d1确定数据的归属服务器为服务器Sn,并将该数据获取请求转发给服务器Sn,在该情况中,服务器Sn为图11中的第二服务器。
在另一种情况中,元数据中记录的数据状态为共享状态,在该情况中,交换机根据元数据中的服务器列表,将该数据获取请求发送给服务器列表中记录的任一服务器(例如服务器Si),即,在该情况中,服务器Si为图11中的第二服务器。
在又一种情况中,元数据中记录的数据的状态为修改状态,在该情况中,交换机根据元数据中的服务器列表,将该数据获取请求发送给服务器列表中记录的一个服务器(例如服务器Si),即,在该情况中,服务器Si为图11中的第二服务器。
图12为在数据状态为共享或修改状态的情况下的数据读取过程示意图。如图12所示,服务器S1通过交换机2将指示读缺失操作的数据获取请求发送给服务器Si,以通过交换机2从服务器Si的本地缓存中拉取数据A,存储到本地缓存中,并返回给应用,交换机2在服务器S1读取完成之后更新编号为d1的数据的元数据,以指示服务器S1和服务器Si中都缓存有数据A。
在步骤S1105,第二服务器读取数据。
交换机2可随数据获取请求一起将数据元数据中记录的数据状态一起发送给第二服务器。在上述第二服务器为服务器Sn的情况中,如果服务器Sn接收的数据状态为未共享状态,则服务器Sn可以根据数据的编号d1,从共享内存中读取数据A。在上述第二服务器为服务器Si的情况中,如果服务器Si接收的数据状态为共享状态,或者服务器Si可从本地记录的数据A的状态中确定数据A为共享状态,则服务器Si可从本地缓存中读取数据A。如果服务器Si接收的数据状态为修改状态,或者服务器Si可从本地记录的数据A的状态中确定数据A为修改状态,则服务器Si可从本地缓存中读取数据A,并在该读取之后,在本地记录数据A的状态为共享状态。,以指示当前不再具有对数据A的修改权限。
在步骤S1106,第二服务器在读取数据之后向交换机2返回读取的数据A。
在步骤S1107,交换机2将从第二服务器接收的数据A返回给服务器S1。交换机2在向服务器S1返回数据A的同时,还可以把元数据中数据的状态和数据的服务器列表一起发送给服务器S1。
在步骤S1108,服务器S1在从交换机2接收到数据A之后,将数据A存储到本地缓存中,并向应用返回数据A。此外,参考图8,服务器S1可根据从交换机2接收的数据A的状态和读缺失操作类型确定是否更新数据A的状态。例如,如果数据A的初始状态为未共享状态,根据图8,在经过读缺失操作之后,数据的状态变为共享状态,从而服务器S1将数据A的状态更改为共享状态。如果数据A的初始状态为修改状态,参考图8,同样地,服务器S1将数据A的状态更改为共享状态。如果数据A的初始状态为共享状态,参考图8,在经过该读取之后,数据A的状态仍然为共享状态,不需要更改。同时,服务器S1还相应地修改从交换机2接收的服务器列表,更新后的服务器列表中添加了服务器S1。例如,在数据A的初始状态为共享状态或修改状态的情况中,在该读取操作之后,更新的服务器列表中包括S1和Si。
在步骤S1109,服务器S1向交换机2发送数据读取完成信息。
该数据读取完成信息例如包括更新的数据的状态和数据的服务器列表。在交换机2在接收到指示读缺失操作的数据获取请求之后对数据d1上读锁的情况中,该数据处理完成信息中还可以包括读锁解锁信息。
步骤S1110,交换机2根据数据读取完成信息更新数据的元数据。
交换机2在接收到上述数据读取完成信息之后,根据数据读取完成信息中的数据的状态和数据的服务器列表更新编号为d1的数据的元数据。例如,在数据初始状态为共享或修改状态的情况中,如图12所示,在该对元数据的更新之后,元数据中记录的数据的状态为共享状态,并且,元数据中的服务器列表中包括服务器S1和服务器Si,该元数据中记录的内容表示,服务器S1和Si中都缓存了数据A,其他服务器可从服务器S1或者Si读取数据A。另外,交换机2在完成对编号为d1的数据的元数据的更新之后,对数据的读写锁解读锁,即将读写锁的后15位的值减1。
服务器S1在通过上述步骤在本地缓存中写入数据A之后,根据预定逐出规则,例如当数据A不再是应用的热数据时,或者当数据A写入超过预定时间之后,服务器S1可执行步骤S1111,生成数据的指示逐出共享操作的处理请求,以将数据A从本地缓存中逐出。该处理请求中例如包括请求类型(指示逐出共享操作的处理请求类型)、数据编号d1、和请求服务器(即服务器S1)的编号。
在步骤S1112,服务器S1将处理请求发送给交换机2。
在步骤S1113,交换机2返回对处理请求的回复信息。
交换机2在接收到处理请求之后可进行在元数据中对数据加写锁等操作。
由于该逐出共享操作不会影响其它服务器对数据的缓存一致性,因此,交换机2不需要将该指示逐出共享操作的处理请求转发给其它服务器,从而可直接向服务器S1发送对指示逐出共享操作的处理请求的回复信息,该回复信息中可包括编号为d1的数据的元数据中的状态和服务器列表。
在步骤S1114,服务器S1在接收到回复信息之后在本地缓存中删除数据A。具体是,服务器S1删除本地缓存中的数据A,根据数据A的服务器列表确定数据A的状态,如果服务器列表中只包括服务器S1的信息,则在该删除之后,数据A的状态应变为未共享状态,从而服务器S1修改数据A的状态,如果服务器列表中还包括其他服务器的信息,则在该删除之后,数据A的状态仍为共享状态。同时,在进行该删除之后,服务器S1修改接收的服务器列表,即,在服务器列表中删除服务器S1的信息。
在步骤S1115,服务器S1在删除数据A之后将逐出共享完成信息发送给交换机2,该逐出共享完成信息中可包括数据的状态和服务器列表。
在步骤S1116,交换机2在接收到逐出共享完成信息之后,更新编号为d1的数据的元数据,具体是,在元数据的服务器列表中删除服务器S1的信息。交换机2例如可根据从服务器S1接收的数据的服务器列表更新元数据中数据的服务器列表,如果从服务器接收的数据的状态发生变化,则在元数据中更新数据的状态,并在完成更新之后释放写锁。
在上述参考图2-图12描述的数据处理方案中,在数据被服务器修改之后,由交换机更新数据的元数据中的缓存该数据最新版本的服务器的信息,当其他服务器访问数据的最新版本时,通过交换机将数据访问请求转发给缓存该数据的服务器,从而减少了服务器的处理和网络流量,减少了服务器的负担。
可以理解,上文中虽然以全局内存为例描述基于共享存储***的数据处理方案,本申请实施例提供的数据处理方案不限于用于包括全局内存的共享存储***,而是还适用于其它带缓存的共享存储***。图13示出本申请实施例提供的共享磁盘***的架构图。与图1类似地,在该共享磁盘***中包括多个服务器和至少一个交换机。每个服务器中自己的部分磁盘用作为共享磁盘,全部服务器的共享磁盘构成全局磁盘,服务器集群中的任一服务器可以访问该全局磁盘中存储的数据。该共享磁盘***例如可用作为分布式共享文件***,在分布式共享文件***中,通过将共享文件存储在全局磁盘中,任一服务器都可以访问这些共享文件。全局磁盘中的数据的地址可通过服务器的节点编号和服务器所提供的共享磁盘中的地址偏移构成。在各个服务器中,还设置有本地缓存,在服务器读写数据时,会首先访问本地缓存,本地缓存中存储有服务器中的应用程序(Application,APP)热数据,例如应用程序新写入的数据或者经常被读取的数据,当本地缓存中的存储空间不够时,可将本地缓存中的数据淘汰至服务器的共享磁盘中。当在本地缓存没有命中所访问的数据时,则从全局磁盘中将数据读取至本地缓存,再从本地缓存中读取数据。
在图13所示的共享磁盘***中,同样需要保证多个服务器中的本地缓存中所缓存的数据的一致性,本申请图2-图12所示的数据处理方法同样适用于在共享磁盘***中保证各个服务器的数据的缓存一致性。
图14为本申请实施例提供的一种中间设备的架构图,所述中间设备分别与第一服务器和第二服务器连接,所述第二服务器中存储有数据的第一版本,所述第一版本为所述数据的最新版本,所述中间设备中记录有存储所述数据的最新版本的服务器的信息,所述中间设备包括:
接收单元141,用于从所述第一服务器接收对所述数据的获取请求;
转发单元142,用于根据所述存储所述数据的最新版本的服务器的信息,将所述获取请求转发给所述第二服务器;
所述接收单元141还用于从所述第二服务器接收所述数据的第一版本;
所述转发单元142还用于将所述数据的第一版本转发给所述第一服务器。
在一种可能的实现方式中,所述接收单元141还用于从所述第一服务器接收对所述数据的改写完成信息;所述中间设备还包括修改单元143,用于基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息。
在一种可能的实现方式中,所述获取请求中携带有改写标识,所述接收单元141还用于在将所述获取请求转发给所述第二服务器之后,从所述第二服务器接收所述数据的第一版本被删除的信息。
在一种可能的实现方式中,所述中间设备中记录有对所述数据的写锁信息,所述修改单元143还用于:在从所述第一服务器接收到对所述数据的获取请求之后,根据所述获取请求中的改写标识修改所述写锁信息以锁定所述数据,在基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息之后,修改所述写锁信息以对所述数据解锁。
在一种可能的实现方式中,所述数据为热点数据。
图15为本申请实施例提供的一种中间设备的结构图,包括处理单元151和存储单元152,所述存储单元152中存储有可执行代码,所述处理单元151执行所述可执行代码以实现如图2-图12所示的方法。
图16本申请实施例提供的一种中间设备的结构图,包括:通信接口161,用于与服务器进行数据传输;处理单元162,用于对所述通信接口接收的数据进行处理,以执行如图2-图12所示的方法。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本领域的技术人员可以清楚地了解到,本申请提供的各实施例的描述可以相互参照,为描述的方便和简洁,例如关于本申请实施例提供的各装置、设备的功能以及执行的步骤可以参照本申请方法实施例的相关描述,各方法实施例之间、各装置实施例之间也可以互相参照。
本领域技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的全部或部分步骤;而前述的存储介质包括:只读存储器(read-only memory,ROM)、随机存取存储器(random-access memory,RAM)、磁盘或者光盘等各种可以存储程序代码的介质。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质、或者半导体介质(例如固态硬盘(Solid StateDisk,SSD)等。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,在没有超过本申请的范围内,可以通过其他的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
另外,所描述装置和方法以及不同实施例的示意图,在不超出本申请的范围内,可以与其它***,模块,技术或方法结合或集成。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电子、机械或其它的形式。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (25)
1.一种计算机***,其特征在于,包括中间设备、第一服务器和第二服务器,所述第一服务器和第二服务器通过所述中间设备连接,所述第二服务器中存储有数据的第一版本,所述第一版本为所述数据的最新版本,所述中间设备中记录有存储所述数据的最新版本的服务器的信息,所述第一服务器用于通过所述中间设备从所述第二服务器获取所述数据的第一版本。
2.根据权利要求1所述的***,其特征在于,所述第二服务器还用于在获取所述数据的第一版本后,指示所述中间设备记录所述第二服务器为存储所述数据的最新版本的服务器。
3.根据权利要求2所述的***,其特征在于,所述中间设备存储有所述数据的元数据,所述中间设备用于在所述数据的元数据中记录所述第二服务器的信息。
4.根据权利要求1-3任一项所述的***,其特征在于,所述第一服务器在通过所述中间设备从所述第二服务器获取所述数据的第一版本时,具体用于向所述中间设备发送对所述数据的获取请求,
所述中间设备还用于:从所述第一服务器接收所述获取请求,根据存储所述数据的最新版本的服务器的信息将所述获取请求转发给所述第二服务器;从所述第二服务器接收所述数据的第一版本并转发给所述第一服务器。
5.根据权利要求4所述的***,其特征在于,所述第一服务器用于在接收到对所述数据的改写请求,并在本地没有命中所述数据的第一版本时,发送所述获取请求至所述中间设备;
所述第一服务器在获取所述数据的第一版本之后,还用于将所述数据的第一版本改写为第二版本。
6.根据权利要求5所述的***,其特征在于,所述第一服务器还用于在将所述数据的第一版本改写为第二版本之后,向所述中间设备发送改写完成信息;
所述中间设备还用于从所述第一服务器接收所述改写完成信息,基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息。
7.根据权利要求5或6所述的***,其特征在于,所述获取请求中携带有改写标识,在中间设备将所述获取请求转发给所述第二服务器之后,所述第二服务器用于根据所述获取请求中的改写标识在获取所述数据的第一版本之后删除所存储的所述数据的第一版本。
8.根据权利要求7所述的***,其特征在于,所述中间设备中记录有对所述数据的写锁信息,所述中间设备还用于:在从所述第一服务器接收到对所述获取请求之后,根据所述获取请求中的改写标识修改所述写锁信息以锁定所述数据,在基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息之后,修改所述元数据的写锁信息以对所述数据解锁。
9.根据权利要求1-8任一项所述的***,其特征在于,所述数据为热点数据。
10.根据权利要求1-9任一项所述的***,其特征在于,还包括第三服务器,所述第三服务器与所述中间设备连接,所述第三服务器中也存储有所述数据的第一版本,所述第二服务器在接收到对所述数据的改写请求,并在本地命中所述数据的第一版本后,还用于向所述中间设备发送对所述数据的删除请求,
所述中间设备还用于:从所述第二服务器接收对所述数据的删除请求,根据所述存储所述数据的最新版本的服务器的信息,将所述删除请求转发给所述第三服务器,指示所述第三服务器删除所述数据的第一版本;
所述第二服务器还用于将所述数据的第一版本改写为第二版本。
11.根据权利要求1-10任一项所述的***,其特征在于,所述中间设备为网络交换设备。
12.根据权利要求3-11任一项所述的***,其特征在于,所述中间设备包括相互连接的第一中间设备和第二中间设备,其中,所述第一中间设备中存储有归属于所述第一服务器的数据的元数据,所述第二中间设备中存储有归属于所述第二服务器的数据的元数据。
13.根据权利要求1-12任一项所述的***,其特征在于,所述计算机***为全局内存***或者分布式共享文件***。
14.一种数据处理方法,其特征在于,由中间设备执行,所述中间设备分别与第一服务器和第二服务器连接,所述第二服务器中存储有数据的第一版本,所述第一版本为所述数据的最新版本,所述中间设备中记录有存储所述数据的最新版本的服务器的信息,所述方法包括:
从所述第一服务器接收对所述数据的获取请求;
根据所述存储所述数据的最新版本的服务器的信息,将所述获取请求转发给所述第二服务器;
从所述第二服务器接收所述数据的第一版本;
将所述数据的第一版本转发给所述第一服务器。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:从所述第一服务器接收对所述数据的改写完成信息;
基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息。
16.根据权利要求15所述的方法,其特征在于,所述获取请求中携带有改写标识,所述方法还包括,在将所述获取请求转发给所述第二服务器之后,从所述第二服务器接收所述数据的第一版本被删除的信息。
17.根据权利要求16所述的方法,其特征在于,所述中间设备中记录有对所述数据的写锁信息,所述方法还包括:在从所述第一服务器接收到对所述数据的获取请求之后,根据所述获取请求中的改写标识修改所述写锁信息以锁定所述数据,在基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息之后,修改所述写锁信息以对所述数据解锁。
18.根据权利要求14-17任一所述的方法,其特征在于,所述数据为热点数据。
19.一种中间设备,所述中间设备分别与第一服务器和第二服务器连接,所述第二服务器中存储有数据的第一版本,所述第一版本为所述数据的最新版本,所述中间设备中记录有存储所述数据的最新版本的服务器的信息,所述中间设备包括:
接收单元,用于从所述第一服务器接收对所述数据的获取请求;
转发单元,用于根据所述存储所述数据的最新版本的服务器的信息,将所述获取请求转发给所述第二服务器;
所述接收单元还用于从所述第二服务器接收所述数据的第一版本;
所述转发单元还用于将所述数据的第一版本转发给所述第一服务器。
20.根据权利要求19所述的中间设备,其特征在于,所述接收单元还用于从所述第一服务器接收对所述数据的改写完成信息;
所述中间设备还包括修改单元,用于基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息。
21.根据权利要求20所述的中间设备,其特征在于,所述获取请求中携带有改写标识,所述接收单元还用于在将所述获取请求转发给所述第二服务器之后,从所述第二服务器接收所述数据的第一版本被删除的信息。
22.根据权利要求21所述的中间设备,其特征在于,所述中间设备中记录有对所述数据的写锁信息,所述修改单元还用于:在从所述第一服务器接收到对所述数据的获取请求之后,根据所述获取请求中的改写标识修改所述写锁信息以锁定所述数据,在基于所述改写完成信息,将所述存储所述数据的最新版本的服务器的信息修改为所述第一服务器的信息之后,修改所述写锁信息以对所述数据解锁。
23.根据权利要求19-22任一所述的中间设备,其特征在于,所述数据为热点数据。
24.一种中间设备,其特征在于,包括处理单元和存储单元,所述存储单元中存储有可执行代码,所述处理单元执行所述可执行代码以实现权利要求14-18任意一项所述的方法。
25.一种中间设备,其特征在于,包括:
通信接口,用于与服务器进行数据传输;
处理单元,用于对所述通信接口接收的数据进行处理,以执行权利要求14-18任意一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197578.0A CN114968539A (zh) | 2021-02-22 | 2021-02-22 | 数据处理方法、计算机***和中间设备 |
PCT/CN2022/072422 WO2022174705A1 (zh) | 2021-02-22 | 2022-01-17 | 数据处理方法、计算机***和中间设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110197578.0A CN114968539A (zh) | 2021-02-22 | 2021-02-22 | 数据处理方法、计算机***和中间设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114968539A true CN114968539A (zh) | 2022-08-30 |
Family
ID=82932203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110197578.0A Pending CN114968539A (zh) | 2021-02-22 | 2021-02-22 | 数据处理方法、计算机***和中间设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114968539A (zh) |
WO (1) | WO2022174705A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024066496A1 (zh) * | 2022-09-30 | 2024-04-04 | 华为技术有限公司 | 一种数据的访问方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324584B1 (en) * | 1997-11-26 | 2001-11-27 | International Business Machines Corp. | Method for intelligent internet router and system |
WO2013009806A1 (en) * | 2011-07-12 | 2013-01-17 | Bank Of America Corporation | Service mediation framework |
CN102314506B (zh) * | 2011-09-07 | 2015-09-09 | 北京人大金仓信息技术股份有限公司 | 基于动态索引的分布式缓冲区管理方法 |
CN110059026B (zh) * | 2018-01-19 | 2021-06-29 | 华为技术有限公司 | 一种目录处理方法、装置及存储*** |
CN110933137B (zh) * | 2019-10-31 | 2022-08-02 | 北京浪潮数据技术有限公司 | 一种数据同步方法、***、设备及可读存储介质 |
CN112632029B (zh) * | 2020-12-04 | 2022-08-05 | 杭州海康威视***技术有限公司 | 分布式存储***的数据管理方法、装置及设备 |
-
2021
- 2021-02-22 CN CN202110197578.0A patent/CN114968539A/zh active Pending
-
2022
- 2022-01-17 WO PCT/CN2022/072422 patent/WO2022174705A1/zh active Application Filing
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024066496A1 (zh) * | 2022-09-30 | 2024-04-04 | 华为技术有限公司 | 一种数据的访问方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2022174705A1 (zh) | 2022-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108810041B (zh) | 一种分布式缓存***的数据写入及扩容方法、装置 | |
US11947510B2 (en) | System and method for clustering distributed hash table entries | |
US10528537B2 (en) | System and method for fetching the latest versions of stored data objects | |
US8396936B2 (en) | Computer system with cooperative cache | |
CN110750507B (zh) | 面向dfs的全局命名空间下的持久客户端缓存方法及*** | |
US20150189039A1 (en) | Memory Data Access Method and Apparatus, and System | |
JPWO2004055675A1 (ja) | ファイル管理装置、ファイル管理プログラム、ファイル管理方法およびファイルシステム | |
CN109302448B (zh) | 一种数据处理方法及装置 | |
CN107341114B (zh) | 一种目录管理的方法、节点控制器和*** | |
CN114817341B (zh) | 访问数据库的方法和装置 | |
CN103714014B (zh) | 处理缓存数据的方法及装置 | |
CN110737392B (zh) | 管理存储***中的地址的方法、设备和计算机可读存储介质 | |
CN107992270B (zh) | 一种多控存储***全局共享缓存的方法及装置 | |
CN110032543A (zh) | 一种存储文件***的管理方法 | |
EP2629206B1 (en) | Directory replacement method and device | |
WO2022174705A1 (zh) | 数据处理方法、计算机***和中间设备 | |
CN111406251B (zh) | 数据预取方法及装置 | |
CN106164874B (zh) | 多核***中数据访问者目录的访问方法及设备 | |
CN111796772B (zh) | 缓存的管理方法、缓存节点及分布式存储*** | |
CN110554914B (zh) | 资源锁管理方法、装置、服务器及存储介质 | |
EP0398493B1 (en) | File extension by client processors in a distributed data processing system | |
CN107533512B (zh) | 目录中表项合并的方法以及设备 | |
CN112463757A (zh) | 一种分布式***的资源访问方法及相关装置 | |
CN112748861B (zh) | 用于提供信息的方法、电子设备和计算机程序产品 | |
CN116821058B (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 |