集群系统、集群系统上的程序执行方法和装置与流程

未命名 08-27 阅读:107 评论:0


1.本技术涉及计算机技术领域,尤其涉及一种集群系统、集群系统上的程序执行方法和装置。


背景技术:

2.在典型的无服务serverless架构中,一个计算请求通常在秒级就可以完成。为了解决应用运行时的内存压力问题,通常会提前创建缓存的数据结构(即应用对应的工作集(working set),工作集中包括应用运行时所需的函数镜像),来避免运行时开销。但是由于应用对应的工作集通常数量庞大,因而单台机器的内存几乎不可能存储下应用的整个工作集。
3.现有技术为解决上述问题,通常在集群系统中采用单一系统镜像(single system image,ssi,指组合个集群中各计算节点上的操作系统来提供对系统资源的统一访问)来提供额外的内存资源,并通过写无效(write invalidate)协议来维护该ssi系统中的内存一致性。
4.然而,上述现有技术是以内存页为单位进行数据访问,因而在预取数据时,容易取多或者取少;此外,写无效协议在运行过程中会产生较多的无效信息,严重影响应用的运行性能。


技术实现要素:

5.本技术实施例提供了一种集群系统、集群系统上的程序执行方法和装置,可以实现在集群系统的分布式内存中精确地进行数据访问,且避免发送无效信息,加速应用的执行速度,提升应用性能。
6.第一方面,本技术提供了一种集群系统,所述集群系统包括多个计算节点,所述集群系统的分布式存储系统包括所述多个计算节点中的存储单元,其中,所述多个计算节点中的第一计算节点,用于执行第一程序,其中,所述第一计算节点中配置有第一逻辑时间,所述第一逻辑时间用于表示所述第一计算节点最近一次对所述第一计算节点上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在所述分布式存储系统中对应至少一个副本;所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。
7.从技术效果上看,本技术通过为分布式存储系统中的每个副本维护一个相应的失效时间,以及为每个计算节点维护对应的逻辑时间,从而对于对应同一对象的多个副本而言,第一计算节点能够对该多个副本中失效时间最晚的副本或者未失效的副本(副本失效时间早于逻辑时间,则失效;否则有效)进行数据访问,即确保对最新的数据进行操作,来保证分布式存储系统的一致性。与现有技术中的写无效协议相比,可以避免在维护分布式存储系统一致性过程中发送大量的无效信息,从而有效地加速应用的执行速度,提升应用性
能。
8.其中,工作集中一个对象在分布式存储系统中对应的至少一个副本中的每个副本与该一个对象中包含的数据相同。
9.在一种可行的实施方式中,所述第一计算节点还用于:每次从所述分布式存储系统中多个副本中的一个副本中读取数据,以及每次向所述分布式存储系统中多个副本中的一个副本中写入数据。
10.从技术效果上看,本技术通过以对象为单位来进行分布式存储系统中数据的访问,相比与现有技术中以内存页为单位进行数据访问的过程,粒度更小,可以实现更加精确地数据读写。
11.在一种可行的实施方式中,所述第一程序的工作集中第一对象在所述分布式存储系统中对应m个副本,所述m个副本分别对应m个失效时间,且所述m个副本分别位于所述多个计算节点中m个不同的计算节点上,m为正整数。
12.从技术效果上看,本技术通过为工作集中每个对象在不同计算节点上对应的副本分别维护一个失效时间,从而可以确保第一计算节点从失效时间最晚或者未失效的副本中进行数据访问,即确保第一计算节点总是能访问最新的数据,从而确保分布式存储系统的一致性。
13.在一种可行的实施方式中,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:所述第一计算节点从所述m个副本中的第一副本中读取数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点,且所述第一副本的失效时间早于所述第一逻辑时间时,将所述第一副本的失效时间更新为所述第一逻辑时间。
14.其中,第一副本的失效时间最晚表示,对该m个副本而言,其中的第一副本是系统/用户最后一次进行数据访问的副本,即第一副本中存储的是最新的数据。
15.从技术效果上看,第一计算节点是从失效时间最晚的第一副本中进行数据访问,从而确保读取到最新的数据。同时,当第一副本已失效,且第一副本位于第一计算节点上时,还会更新第一副本的失效时间,以使第一副本处于未失效状态,即对于分布式存储系统中的该m个副本而言,该m个副本中第一副本中存储的数据是最新的,确保后续能基于该m个副本的失效时间或失效状态来确定进行数据访问的副本,以维护分布式存储系统的一致性。
16.在一种可行的实施方式中,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,将从所述第一副本中读取的数据写入所述第一计算节点中的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于所述多个计算节点中的第二计算节点中;在所述第一副本的失效时间早于第一时间的情况下,将所述第一副本的失效时间更新为所述第一时间,其中,所述第一时间为第二时间和第三时间中的较晚时间,所述第二时间是由所述第一逻辑时间延后租期得到的,所述第三时间是由第二逻辑时间延后所述租期得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;将所述第二
副本的失效时间更新为所述第一副本的失效时间,且在所述第一逻辑时间早于所述第二逻辑时间时,将所述第一逻辑时间更新为所述第二逻辑时间。
17.从技术效果上看,在进行数据读取过程中,若第一副本不位于第一计算节点,而是位于第二计算节点上时,在对第一副本中的数据进行读取后,需要更新第一副本的失效时间,将第一副本的失效时间在第一逻辑时间或者第二逻辑时间的基础上延后一个租期,使得第一对象在第二计算节点中处于有效状态,确保需要从该m个副本中读取数据时,可以直接从失效时间最晚的第一副本中读取数据,以确保访问的数据为最新数据。同时,可以通过将第一副本中的数据写入第一计算节点中的第二副本中,并将第二副本的失效时间更新为第一副本的失效时间,使得后续第一计算节点需要对访问该m个副本中的数据时,可以直接对本地内存中第二副本的数据进行访问,而不用远程访问第一副本,从而节省时间,进而缩短程序运行时长。
18.在一种可行的实施方式中,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:所述第一计算节点向所述第一副本中写入数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点时,将所述第一副本的失效时间更新为第四时间,其中,所述第四时间为所述第一逻辑时间和第五时间中的较晚时间,所述第五时间是由所述第一副本的失效时间延后阈值时间得到的。
19.从技术效果上看,第一计算节点是从失效时间最晚的第一副本中写入数据,以确保数据写入的操作是对存储有最新数据的副本进行操作的,确保分布式存储系统的顺序一致性。同时,当第一副本位于第一计算节点时,还会更新第一副本的失效时间,以使第一副本处于未失效状态,即对于分布式存储系统中的该m个副本而言,该m个副本中第一副本中存储的数据是最新的,确保后续能基于该m个副本的失效时间或失效状态来确定进行数据访问失效时间最晚的第一副本,以维护分布式存储系统的一致性。
20.在一种可行的实施方式中,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,从所述第一副本中读取数据,并将所述读取的数据写入所述第一计算节点上的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于第二计算节点中;在第二逻辑时间早于第六时间的情况下,将所述第二逻辑时间更新为第六时间,其中,所述第六时间是由所述第一副本的失效时间延后阈值时间后得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;在所述第一副本的失效时间早于第七时间的情况下,将所述第一副本的失效时间更新为所述第七时间,其中,所述第七时间为第八时间和第九时间中的较晚时间,所述第八时间是由所述第一逻辑时间延后租期得到的,所述第九时间是由所述第二逻辑时间延后所述租期得到的;将所述第一逻辑时间更新为所述第二逻辑时间,并将所述第二副本的失效时间更新为所述第一副本的失效时间。
21.从技术效果上看,在进行数据写入过程中,若第一副本不位于第一计算节点,而是位于第二计算节点上时,在对第一副本中的进行数据写入后,需要更新第二计算节点上的第二逻辑时间,使得第二计算节点保持正确的逻辑时序;同时更新第一副本的失效时间,将第一副本的失效时间在第一逻辑时间或者第二逻辑时间的基础上延后一个租期,使得第一
副本在第二计算节点中处于有效状态,确保后续需要从该m个副本中读取数据时,可以基于失效时间直接确定进行数据访问的第一副本,以确保访问的数据为最新数据。此外,由于第一副本中的数据是由第一计算节点在执行第一程序的过程中进行使用,因而可以更新第一计算节点上的第一逻辑时间,将第一副本中的数据写入第一计算节点中的第二副本中,并将第二副本的失效时间更新为第一副本的失效时间,使得后续第一计算节点需要访问该m个副本中的数据时,可以直接对本地内存中第二副本的数据进行访问,而不用远程访问第二计算节点中的第一副本,从而节省时间,进而缩短程序运行时长。
22.在一种可行的实施方式中,所述第一计算节点上包括n个副本,n为正整数,所述第一计算节点还用于:当所述n大于或等于预设数值时,所述第一计算节点在创建第三副本之前,删除所述n个副本中的最近最少使用lru副本,其中,所述第三副本在所述第一程序的工作集中对应的对象与所述n个副本中的任一副本在所述第一程序的工作集中对应的对象不同。
23.从技术效果上看,在第一程序执行过程中,每个计算节点的存储单元中只保存一定数量的工作集(即用n个副本来存储第一程序的工作集的部分数据),并通过动态更新每个计算节点上的保存的工作集,来使得在为应用程序分配的内存空间较小的情况下,也可以充分利用每个计算节点上的存储资源来执行相应的应用程序。
24.第二方面,本技术实施例提供了一种集群系统中的程序执行方法,所述集群系统包括多个计算节点,所述集群系统的分布式存储系统包括所述多个计算节点中的存储单元,所述方法包括:通过所述多个计算节点中的第一计算节点执行第一程序,其中,所述第一计算节点中配置有第一逻辑时间,所述第一逻辑时间用于表示所述第一计算节点最近一次对所述第一计算节点上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在所述分布式存储系统中对应至少一个副本;基于所述分布式存储系统中每个副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。
25.在一种可行的实施方式中,所述方法还包括:通过所述第一计算节点每次从所述分布式存储系统中多个副本中的一个副本中读取数据,以及每次向所述分布式存储系统中多个副本中的一个副本中写入数据。
26.在一种可行的实施方式中,所述第一程序的工作集中第一对象在所述分布式存储系统中对应m个副本,所述m个副本分别对应m个失效时间,且所述m个副本分别位于所述多个计算节点中m个不同的计算节点上,m为正整数。
27.在一种可行的实施方式中,所述基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:通过所述第一计算节点从所述m个副本中的第一副本中读取数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点,且所述第一副本的失效时间早于所述第一逻辑时间时,将所述第一副本的失效时间更新为所述第一逻辑时间。
28.在一种可行的实施方式中,所述基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,将从所述第一副本中读取的数据写入所述第一计算节点中的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于所述多
个计算节点中的第二计算节点中;在所述第一副本的失效时间早于第一时间的情况下,将所述第一副本的失效时间更新为所述第一时间,其中,所述第一时间为第二时间和第三时间中的较晚时间,所述第二时间是由所述第一逻辑时间延后租期得到的,所述第三时间是由第二逻辑时间延后所述租期得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;将所述第二副本的失效时间更新为所述第一副本的失效时间,且在所述第一逻辑时间早于所述第二逻辑时间时,将所述第一逻辑时间更新为所述第二逻辑时间。
29.在一种可行的实施方式中,所述基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:通过所述第一计算节点向所述第一副本中写入数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点时,将所述第一副本的失效时间更新为第四时间,其中,所述第四时间为所述第一逻辑时间和第五时间中的较晚时间,所述第五时间是由所述第一副本的失效时间延后阈值时间得到的。
30.在一种可行的实施方式中,所述基于所述一个或多个对象中每个对象对应的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,从所述第一对象中读取数据,并将所述读取的数据写入所述第一计算节点上的第二对象中,其中,所述第二对象为所述m个对象中的一个,所述第一对象位于第二计算节点中;在第二逻辑时间早于第六时间的情况下,将所述第二逻辑时间更新为第六时间,其中,所述第六时间是由所述第一对象的失效时间延后阈值时间后得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;在所述第一对象的失效时间早于第七时间的情况下,将所述第一对象的失效时间更新为所述第七时间,其中,所述第七时间为第八时间和第九时间中的较晚时间,所述第八时间是由所述第一逻辑时间延后租期得到的,所述第九时间是由所述第二逻辑时间延后所述租期得到的;将所述第一逻辑时间更新为所述第二逻辑时间,并将所述第二对象的失效时间更新为所述第一对象的失效时间。
31.在一种可行的实施方式中,所述第一计算节点上包括n个对象,n为正整数,所述方法还包括:当所述n大于或等于预设数值时,在通过所述第一计算节点在创建第三对象之前,删除所述n个对象中的最近最少使用lru对象,其中,所述第三对象属于所述第一程序的工作集,且所述第三对象在所述第一程序的工作集中的位置与所述n个对象中的任一对象在所述第一程序的工作集中的位置不同。
32.第三方面,本技术实施例提供了一种集群系统中的程序执行装置,所述集群系统包括多个计算节点,所述集群系统的分布式存储系统包括所述多个计算节点中的存储单元,所述装置包括:执行单元,用于通过所述多个计算节点中的第一计算节点执行第一程序,其中,所述第一计算节点中配置有第一逻辑时间,所述第一逻辑时间用于表示所述第一计算节点最近一次对所述第一计算节点上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在所述分布式存储系统中对应至少一个副本;维护单元,用于根据所述分布式存储系统中每个副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。
33.在一种可行的实施方式中,所述装置还包括:数据访问单元,用于通过所述第一计
算节点每次从所述分布式存储系统中多个副本中的一个副本中读取数据,以及每次向所述分布式存储系统中多个副本中的一个副本中写入数据。
34.在一种可行的实施方式中,所述第一程序的工作集中第一对象在所述分布式存储系统中对应m个副本,所述m个副本分别对应m个失效时间,且所述m个副本分别位于所述多个计算节点中m个不同的计算节点上,m为正整数。
35.在一种可行的实施方式中,所述维护单元具体用于:通过所述第一计算节点从所述m个副本中的第一副本中读取数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点,且所述第一副本的失效时间早于所述第一逻辑时间时,将所述第一副本的失效时间更新为所述第一逻辑时间。
36.在一种可行的实施方式中,所述数据访问单元,具体用于:当所述第一副本不位于所述第一计算节点时,将从所述第一副本中读取的数据写入所述第一计算节点中的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于所述多个计算节点中的第二计算节点中;所述维护单元,还用于:在所述第一副本的失效时间早于第一时间的情况下,将所述第一副本的失效时间更新为所述第一时间,其中,所述第一时间为第二时间和第三时间中的较晚时间,所述第二时间是由所述第一逻辑时间延后租期得到的,所述第三时间是由第二逻辑时间延后所述租期得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;将所述第二副本的失效时间更新为所述第一副本的失效时间,且在所述第一逻辑时间早于所述第二逻辑时间时,将所述第一逻辑时间更新为所述第二逻辑时间。
37.在一种可行的实施方式中,所述维护单元具体用于:通过所述第一计算节点向所述第一副本中写入数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点时,将所述第一副本的失效时间更新为第四时间,其中,所述第四时间为所述第一逻辑时间和第五时间中的较晚时间,所述第五时间是由所述第一副本的失效时间延后阈值时间得到的。
38.在一种可行的实施方式中,所述数据访问单元,具体用于:当所述第一副本不位于所述第一计算节点时,从所述第一对象中读取数据,并将所述读取的数据写入所述第一计算节点上的第二对象中,其中,所述第二对象为所述m个对象中的一个,所述第一对象位于第二计算节点中;所述维护单元,还用于:在第二逻辑时间早于第六时间的情况下,将所述第二逻辑时间更新为第六时间,其中,所述第六时间是由所述第一对象的失效时间延后阈值时间后得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;在所述第一对象的失效时间早于第七时间的情况下,将所述第一对象的失效时间更新为所述第七时间,其中,所述第七时间为第八时间和第九时间中的较晚时间,所述第八时间是由所述第一逻辑时间延后租期得到的,所述第九时间是由所述第二逻辑时间延后所述租期得到的;将所述第一逻辑时间更新为所述第二逻辑时间,并将所述第二对象的失效时间更新为所述第一对象的失效时间。
39.在一种可行的实施方式中,所述第一计算节点上包括n个对象,n为正整数,所述装置还包括:删除单元,用于当所述n大于或等于预设数值,在通过所述第一计算节点在创建第三对象之前,删除所述n个对象中的最近最少使用lru对象,其中,所述第三对象属于所述第一程序的工作集,且所述第三对象在所述第一程序的工作集中的位置与所述n个对象中
的任一对象在所述第一程序的工作集中的位置不同。
40.第四方面,本技术实施例提供了一种物理机,所述物理机包括至少一个处理器和存储有可执行代码的计算机可读存储介质,所述可执行代码被所述至少一个处理器执行时,上述第二方面中任意一项所述的方法得以实现。
41.第五方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,该计算机程序被执行时,上述第二方面中任意一项所述的方法得以实现。
42.第六方面,本技术实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被执行时,上述第二方面中任意一项所述的方法得以实现。
附图说明
43.以下对本技术实施例用到的附图进行介绍。
44.图1为本技术实施例提供的一种集群系统的架构示意图;
45.图2为本技术实施例提供的一种计算节点的架构示意图;
46.图3为本技术实施例中的一种维护分布式存储系统一致性的流程图;
47.图4为本技术实施例提供的一种集群系统中的程序执行方法的流程示意图;
48.图5为本技术实施例提供的一种集群系统中程序执行装置的结构示意图;
49.图6为本技术实施例提供的一种物理机的硬件结构示意图。
具体实施方式
50.下面结合本技术实施例中的附图对本技术实施例进行描述。其中,在本技术实施例的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;文本中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况,另外,在本技术实施例的描述中,“多个”是指两个或多于两个。
51.本技术的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
52.下面介绍本技术中涉及的专业术语
53.(1)集群系统:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。集群就是一组计算机,它们作为一个整体向用户提供一组网络资源。集群中单个的计算机就是集群中的一个计算节点(node)。集群系统中可以包括一个单一系统镜像ssi的中间层,它通过组合各计算节点上的操作系统提供对系统资源的统一访问。
54.(2)无服务serverless架构:也称为无服务器架构。serverless是一种构建和管理基于微服务架构的完整流程,允许开发者在服务部署级别而不是服务器部署级别来管理应用部署,开发者不用过多考虑服务器的问题,计算资源作为服务而不是服务器的概念出现。
55.(3)单一系统镜像(single system image,ssi):指把多台计算机上的资源聚合成统一的接口,使得原本在单台计算机上运行的程序可以无缝移植到分布式的集群系统上。单一系统镜像ssi包括四层含义:1)单一系统,尽管集群系统中有多个计算机/计算节点,用户仍然把整个集群视为一个单一的计算系统来使用;2)单一控制,用户使用的服务都来自集群中唯一一个位置/计算节点;3)对称性,用户可以从任一个计算节点上获得集群服务,即对于所有计算节点和所有的用户,除了那些具有特定访问权限的服务与功能外,所有集群服务与功能都是对称的;4)位置透明,用户无需了解真正提供服务的物理设备/计算节点的具体位置。
56.(4)云原生(cloudnative):一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生表示应用程序位于云中,而不是传统的数据中心;同时应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性和分布式优势。
57.(5)对象存储:也称为面向对象的存储技术(object-based storage)或者云存储。每个对象包含全局唯一标识符(globally unique identifier,uid)、一个数据本体data和一个元数据metadata。全局唯一标识符是服务器或者用户来检索对象的工具以进行对象中数据本体的访问,而无需知晓对象中数据的物理地址。数据本体即对象中存储的真实数据。元数据类似于数据的标签,标签的条目类型和数量是没有限制的,可以是对象的各种描述信息,例如,在本技术中,每个对象的元数据中可以包括该对象中数据的写入时间和失效时间。
58.(6)写无效(write invalidate)一致性协议:在向分布式存储系统中的一个计算节点上写入一个数据的副本后,向其它计算节点上的相应副本发送无效化invalidate消息使其无效化,以满足分布式存储系统的一致性。
59.(7)分布式存储系统的一致性:也称为顺序一致性(sequential consistency,sc),维护顺序一致性需要保证:1)在单机内部(即一个计算节点内),操作的执行是按顺序执行,而且单机产生的结果必定是一定的;2)所有的机器看到的执行顺序是一致的,即对的话一起对,错的话一起错。通过上述步骤来确保任何一次读都能读到某个数据的最近一次写的数据。
60.(8)工作集(working set):在应用程序在运行前创建的该应用程序运行时所需的数据结构,工作集包括应用程序运行时所需的函数镜像。在集群系统中的每个计算节点上仅保存一部分(0%-100%)工作集中的数据。
61.(9)分布式存储系统:也可称为分布式共享内存,由集群系统中每个计算节点上的存储单元(也称为本地内存)构成,其用于为计算节点上运行的程序提供一个单一的共享内存。
62.(10)分段全局地址空间(partitioned global address space,pgas)模型:一种编程模型,可以实现ssi系统,即用户提交的应用程序代码经过pgas模型改写后,应用程序的运行可以基于集群系统中分布式存储系统来实现。构成该分布式存储系统的每个计算节
点有其私有本地内存,使用指针访问。所有计算节点共享一个全局地址空间,调用相应的接口(例如,pgas_read()/pgas_write)进行访问。
63.请参见图1,图1为本技术实施例提供的一种集群系统的架构示意图。如图1所示,集群系统100在硬件上包括调度节点110、计算集群120和存储节点130,其中,计算集群120(computation cluster)可以包含多个计算节点/计算机,调度节点110可以包含一台或多台计算机/服务器。
64.如图1所示,计算集群120可以包括k个计算节点,k为大于或等于2的正整数。其中,计算节点1上包括存储单元1,

,计算节点k上包括存储单元k。集群系统100中的分布式存储系统包括计算集群120中每个计算节点上的存储单元。该分布式存储系统可以由计算集群120中的任一计算节点进行访问。
65.在软件层面上,计算集群120中的每个计算节点上可以部署有linux容器,应用程序运行在linux容器中。调度节点110上则可以部署kubernetes(简称k8s)。kubernetes为一个开源的linux容器自动化运维平台,其提供了大规模部署容器的编排与管理能力,从而让用户能够构建多容器的应用服务,在计算集群上调度或伸缩这些容器,以及管理它们随时间变化的状态。
66.其中,上述存储节点130可以是用于存储集群系统上运行的一个或多个应用程序分别对应工作集的专用存储设备,例如,硬盘或u盘等,本技术对此不限定。
67.集群系统100执行计算任务的过程如下:用户向集群系统100中的调度节点110提交需要执行的应用程序(例如,下文实施例中的第一程序),调度节点110在接收到用户请求后利用其上部署的pgas模型对提交的应用程序进行改写,同时生成该应用程序后续运行过程中所需的工作集(例如,后文实施例中第一程序的工作集),并将该工作集存储于存储节点130中,该工作集中包括相应的函数镜像。在应用程序改写完后,调度节点通过kubernetes在计算集群120中查找合适的一个或多个计算节点(例如,计算负载较小的计算节点),将改写后的应用程序加载到该一个或多个计算节点上,由该一个或多个计算节点共同执行用户提交的应用程序(下文实施例中将以该一个或多个计算节点中的第一计算节点为例描述应用程序的执行过程),在应用程序运行过程中将应用程序工作集加载到集群系统上的分布式存储系统中,以便后续应用程序运行时进行访问。其中,改写后的应用程序在用户态下增加了pgas运行时,该pgas运行时随应用程序一同被加载到相应的计算节点上,pgas运行时用于在应用程序运行过程中维护分布式存储系统的顺序一致性,一致性维护的具体过程将在接下来的实施例中进行详细描述。
68.请参见图2,图2为本技术实施例提供的一种计算节点的架构示意图。如图2所示,计算节点200包括应用层210(即用户态),操作系统220(即内核态)以及设备层230。其中,计算节点200可以是图1所示计算集群120中的运行用户提交的应用程序的一个或多个计算节点中的任意一个计算节点(例如,下文实施例中的第一计算节点)。
69.应用层210中包括应用程序211和为应用程序211的运行提供支持的pgas运行时212。应用程序211为经过图1所示的调度节点中pgas模型进行改写后的应用程序,此改写过程在调度节点上完成,在完成后加载到计算节点200中进行执行。在应用程序211运行过程中,由pgas运行时212提供对集群系统中的分布式存储系统进行数据访问的接口,如图2所示的pgas_read接口2121和pgas_write接口2122,分别用于进行数据读取和数据写入。在数
据访问过程中,数据访问接口通过分布式存储系统管理模块2123来调用指针解引用模块2124来访问计算节点200的本地内存232,或者通过分布式存储系统管理模块2123调用远程调用模块2125,通过网卡233来远程访问计算集群120中其它计算节点中的数据。应用程序211运行在pgas运行时212提供的用户态线程之上,即由pgas运行时212提供应用程序211运行时对应的用户态线程,由pgas运行时212中的线程调度模块2126进行用户态线程的调度,例如,当一个用户态线程需要等待一个延迟较长的操作(如网络操作)完成时,该用户态线程会主动放弃所占用的中央处理单元(central processing unit,cpu),线程调度模块2126会决定该释放出的cpu执行的用户态线程,以提升系统整体效率。
70.操作系统220中可以包括文件系统和设备驱动(图2未示出)。文件系统可以用于管理和调度文件的存储空间。
71.设备层230中包括处理器231、本地内存232和网卡233等硬件设备。其中,处理器231可以是多核处理器或者异构处理器等,本技术对此不进行展开。本地内存可以是各种可读可写的存储器,例如各种随机存取存储器(random access memory,ram)等,ram包括静态随机存取存储器(static random access memory,sram)、动态随机存取存储器(dynamic random access memory,dram)或同步动态随机存储器(synchronous dram,sdram)、双倍速率sdram(dual data rate sdram,ddr sdram)等。网卡233可以是以太网卡或者远程直接内存访问(remote direct memory access,rdma)网卡,本技术对此不限定。
72.下面将基于图1,并结合具体实施例描述集群系统100中的任务处理过程。
73.其中,由图1可知,所述集群系统包括多个计算节点,所述集群系统的分布式存储系统包括所述多个计算节点中的存储单元。
74.所述多个计算节点中的第一计算节点,用于执行第一程序,其中,所述第一计算节点中配置有第一逻辑时间,所述第一逻辑时间用于表示所述第一计算节点最近一次对所述第一计算节点上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在所述分布式存储系统中对应至少一个副本。所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。
75.其中,集群系统中的d个计算节点用于执行第一程序,该d个计算节点可以是集群系统中的全部或者部分计算节点。第一计算节点可以是集群系统中执行第一程序的d个计算节点中的任意一个计算节点,该d个计算节点通常是该多个计算节点中负载比较小的计算节点,d为正整数。第一程序可以是任意经过调度节点上的pgas模型改写后的应用程序。
76.具体地,在开始执行第一程序时,该d个计算节点中的每个计算节点上配置有一个逻辑时间,且每个计算节点上起始的逻辑时间相同,即为同一外部网络真实时间。例如,在第一程序开始执行时,d个计算节点上的每个计算节点上的逻辑时间可以都配置为0。应当理解,上述例子中逻辑时间的具体表示只是本技术给出的一个示例,并不构成限定,本领域技术人员也可以采用字符或者其它形式来表示每个计算节点上的逻辑时间。
77.进一步地,第一逻辑时间配置于第一计算节点上用于执行第一程序对应任务的中央处理单元(central processing unit,cpu)上。第一计算节点在执行第一程序过程中,会多次访问其上存储的第一工作集,每访问一次,更新一次第一逻辑时间。第一逻辑时间即指第一计算节点上一次或者最近一次对第一工作集访问的时刻。同理,该d个计算节点上的每
个计算节点上用于处理第一程序对应任务的cpu上也配置有相应的逻辑时间,即共d个逻辑时间。应当注意,该d个逻辑时间是为第一程序的执行过程所配置的,在第一程序的运行结束前,不会对该d个逻辑时间进行清零。
78.应当理解,本技术中的逻辑时间用于表示第一程序在运行过程中所处的具体阶段,其可以是一套用户定义的时序,而非真实的外部网络时间,每个计算节点上的逻辑时间依据预定规则进行更新:以第一计算节点为例,第一计算节点上的第一逻辑时间用于表示第一计算节点最近一次对其上的第一工作集进行操作的时刻。具体地,在第一计算节点对其上存储的第一工作集进行一次读操作或者一次写操作后,更新第一计算节点上的第一逻辑时间,该更新后的第一逻辑时间指示对该第一工作集进行操作的时刻。更新后的第一逻辑时间晚于更新前的第一逻辑时间,对第一逻辑时间的更新也可称为对第一逻辑时间进行延后。应当注意,在第一程序的运行过程中,不同计算节点上的逻辑时间可能相同或者不同。
79.举例来说,假设在对第一工作集进行一次读取操作之前,其上的第一逻辑时间为5,则在对该第一工作集进行一次数据读取操作之后,可以将第一逻辑时间加1,即将第一逻辑时间更新为6,更新后得到的第一逻辑时间6指示对第一工作集进行读取操作的时刻。可以看出,逻辑时间用于表示的时刻是一种表示逻辑上先后顺序的时刻,而非外部的真实时刻。应当理解,上述例子并不对计算节点上逻辑时间更新规则的构成限定,本领域技术人员也可以采用递减或者其它规则来更新每个计算节点上的逻辑时间。
80.其中,第一程序的工作集是以对象为单位进行管理的,也即对象存储,第一程序的工作集中的每个对象对应一个全局唯一标识符uid、一个数据本体data和一个元数据metadata。可选地,每个对象对应的数据本体大小为几个字节byte到几百个字节byte,相比于现有技术中以内存页(每个内存页对应1kb)为单位进行管理,本技术中对象的数据量更小,从而在后续对分布式存储系统中的副本进行操作时,可以实现更加精确地数据访问,提升集群系统中第一程序的运行性能。
81.其中,第一程序的工作集中的每个对象在分布式存储系统中对应至少一个副本。该至少一个副本中的每个副本分别位于不同的计算节点。同理,该至少一个副本中每个副本对应一个uid、一个数据本体和元数据,该至少一个副本中所有副本的uid相同,该至少一个副本中任意两个副本的数据本体可能相同或者不同,任意两个副本的元数据可能相同或者不同。每个副本的元数据中包含该副本的数据本体的写入时间和失效时间。
82.其中,第一计算节点上保存的第一工作集即为第一工作集中的对象分别对应的一个副本。
83.应当注意,第一程序的工作集是一个抽象的概念,在集群系统中并不会保存完整的第一程序的工作集,只是在使用第一程序的工作集上一部分对象中的数据时,将该一部分对象复制为对应的副本,并加载在计算节点上的存储单元中。
84.可选地,对于集群系统上的每个计算节点而言,每个计算节点上都会保存一部分第一程序的工作集,例如,每个计算节点上都可以保存第一程序的工作集的1%(数据量),随着第一程序的执行,每个计算节点上保存的第一程序的工作集的大小不变,但是保存的具体数据可以不断进行更新。
85.举例来说,在第一计算节点上某一逻辑时刻,第一计算节点上分别保存了第一程
序的工作集中对象uid1-对象uid10中每个对象对应的一个副本,即10个副本。在后续第一程序运行过程中,第一计算节点可以对该10个副本中的数据进行更新;或者删除对象uid1-对象uid10中部分或者全部对象的副本,写入第一程序工作集中其它对象的副本,但第一计算节点上保存的副本数量(即容量)不变,即还是10个副本。例如,可以删除第一程序的工作集中对象uid1-对象uid5分别对应的副本,保留对象uid6-uid10对应的一个副本,同时,写入对象uid20-对象uid25各自对应的一个副本。
86.应当理解,集群系统中其它计算节点上配置的逻辑时间和保存的第一程序的工作集可以参照第一计算节点上的相应描述,此处不再赘述。
87.其中,分布式存储系统中的每个副本对应一个失效时间,每个计算节点上相应的cpu中配置有指示第一程序所处运行阶段的逻辑时间。
88.具体地,上述第一计算节点基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:第一计算节点基于每个对象的失效时间和每个计算节点上的逻辑时间,确定每个对象对应的至少一个副本中失效时间最晚或者未失效的副本,进而对该副本进行数据访问,以维护分布式存储系统的顺序一致性。
89.在一种可行的实施方式中,所述第一计算节点还用于:每次从所述分布式存储系统中多个副本中的一个副本中读取数据,以及每次向所述分布式存储系统中多个副本中的一个副本中写入数据。
90.具体地,第一程序的工作集是以对象为单位进行管理的,其上的每个对象对应至少一个副本。在第一程序的执行时,第一计算节点从分布式存储系统中存储的第一程序的工作集中进行数据访问的过程中,第一计算节点以副本作为每次进行数据访问的单元:即每次从分布式存储系统中的一个副本中读取数据,以及每次向分布式存储系统中的一个副本中写入数据。由于每个副本中存储的是与该副本对应的对象包含的数据本体,因而相比于现有技术通过内存页进行数据访问,本技术以副本为单元进行每次数据访问的过程可以实现更加准确地数据预取和写入,提升程序运行性能。
91.在一种可行的实施方式中,所述第一程序的工作集中第一对象在所述分布式存储系统中对应m个副本,所述m个副本分别对应m个失效时间,且所述m个副本分别位于所述多个计算节点中m个不同的计算节点上,m为正整数。
92.其中,第一对象为第一程序的工作集中任一对象。第一对象在分布式存储系统中对应m个副本,该m个副本中的每个副本中与第一对象中包含的数据相同。该m个副本中的每个副本对应一个失效时间,用于表示该副本中数据的有效状态:当一个副本的失效时间晚于或等于该副本所属计算节点的逻辑时间时,该副本有效;当一个副本的失效时间早于该副本所属计算节点上的逻辑时间时,该副本失效。该m个副本分别位于上述d个计算节点上的m个不同的计算节点上。
93.具体地,在第一计算节点执行第一程序过程中需要使用第一对象中的数据时,若第一计算节点上未保存第一对象的副本时,则第一计算节点会从其它计算节点上读取第一对象的副本,并将该第一对象的副本保存于第一计算节点上的存储单元中;若第一计算节点上保存有第一对象的副本,则第一计算节点会首先判断第一计算节点中保存的第一对象的副本是否有效,若有效,则直接从第一计算节点中的存储单元中读取,否则,从其它计算
节点上读取有效的第一对象的副本。
94.下面将具体描述第一计算节点如何基于副本的失效时间和每个计算节点上的逻辑时间维护分布式存储系统的一致性。其中,维护分布式存储系统的一致性分为两种情况:读取过程中维护分布式存储系统的一致性;以及写入数据过程中维护分布式存储系统的一致性。
95.(一)读取过程中维护分布式存储系统的一致性
96.在从分布式存储系统中进行读取数据时,第一计算节点可以从本地的存储单元中读取数据,或者从其它计算节点上的存储单元中远程读取数据。此两种情况下,维护分布式存储系统的一致性的操作不同,下面将分别论述。
97.(1)第一计算节点从本地的存储单元中读取数据
98.在一种可行的实施方式中,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:所述第一计算节点从所述m个副本中的第一副本中读取数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点,且所述第一副本的失效时间早于所述第一逻辑时间时,将所述第一副本的失效时间更新为所述第一逻辑时间。
99.具体地,在第一程序执行过程中需要使用第一对象中的数据时,会从第一对象在分布式存储系统中对应的m个副本中读取数据。首先,基于m个副本分别对应的失效时间确定失效时间最晚的副本,即第一副本。第一副本的失效时间最晚表示第一副本为该m个副本中最近一次被进行数据写入的副本,即在该m个副本中,第一副本中的数据为最新数据。基于失效时间来确保第一程序运行过程中能读取到最新的数据。
100.可选地,若第一副本位于第一计算节点上时,第一计算节点可以直接从本地存储单元中读取第一副本上的数据。此时,若第一副本的失效时间早于第一逻辑时间时,表明第一副本已失效,则将第一副本的失效时间更新为第一逻辑时间;若第一副本的失效时间等于或晚于第一逻辑时间时,则不对第一副本的失效时间进行处理。通过上述操作使得第一副本处于有效状态。
101.应当理解,在读取第一副本上的数据后,更新第一副本的失效时间之前,第一逻辑时间已进行过一次更新:即在每次对第一程序的工作集进行操作(数据读取或者数据写入)后,以递增或者递减的方式更新第一逻辑时间,使得第一逻辑时间保持正确的逻辑时序。
102.举例来说,当第一计算节点从第一副本中读取数据后,第一逻辑时间为10,第一副本的失效时间为8,则将第一副本的失效时间更新为10。
103.(2)第一计算节点从其它计算节点上的存储单元中远程读取数据
104.在一种可行的实施方式中,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,将从所述第一副本中读取的数据写入所述第一计算节点中的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于所述多个计算节点中的第二计算节点中;在所述第一副本的失效时间早于第一时间的情况下,将所述第一副本的失效时间更新为所述第一时间,其中,所述第一时间为第二时间和第三时间中的较晚时间,所述第二时间是由所述第一逻辑时间延后租期得到
的,所述第三时间是由第二逻辑时间延后所述租期得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;将所述第二副本的失效时间更新为所述第一副本的失效时间,将所述第一逻辑时间更新为所述第二逻辑时间和所述第一逻辑时间中的较晚时间。
105.具体地,在第一副本位于集群系统中的第二计算节点上时,第一计算节点从第二计算节点上的第一副本中读取数据,并将从第一副本中读取的数据写入第一计算节点上的第二副本中,以便后续第一程序运行过程中使用第一对象中的数据时,直接从本地存储单元中的第二副本中进行数据读取,而无需远程访问第二计算节点上的第一副本,缩短第一程序运行时长。
106.其中,第二副本为第一对象对应的m个副本中的一个。第二计算节点上配置有第二逻辑时间,第二逻辑时间用于指示第二计算节点最后最近一次对第二计算节点上存储的第二工作集进行操作的时刻。第二工作集同为第一程序的工作集的子集,第二工作集中的每个对象包含的数据本体分别存储在第二计算节点上的一个副本中。应当理解,第二工作集中每个对象中的数据本体还可以存储在其它计算节点上相应的副本中。
107.进一步地,在从第二计算节点上的第一副本中读取数据后,基于第一副本的失效时间与第一时间的关系,来确定是否更新第一副本的失效时间:当第一副本的失效时间早于第一时间时,将第一副本的失效时间更新为第一时间;当第一副本的失效时间等于或者晚于第一时间时,不对第一副本的失效时间进行更新,即第一副本的失效时间保持不变。其中,上述第一时间为第二时间和第三时间中的较晚时间,第二时间是由第一逻辑时间延后租期得到的,第三时间是由第二逻辑时间延后租期得到的。
108.具体地,第一时间为第二时间和第三时间在用户定义的同一时序中较晚的时刻。举例来说,若第一逻辑时间为5,第二逻辑时间为7,租期为3,则第二时间和第三时间分别为8和10。此时,第二时间和第三时间中较晚时间为第三时间-10,即此时第一时间为10。
109.进一步地,将第二副本的失效时间更新为经过上述操作之后得到的第一副本的失效时间:即若第一副本的失效时间更新为第一时间,将第二副本的失效时间也更新为第一时间;若第一副本的失效时间未进行更新操作,则将第二副本的失效时间更新第一副本的失效时间。
110.在经过上述操作后,第一计算节点上的第二副本和第二计算节点上的第一副本中的数据相同,且第一副本的失效时间和第二副本的失效时间也相同,此时第一计算节点和第二计算节点处于第一程序运行的相同阶段。若此时第一逻辑时间早于第二逻辑时间,将第一逻辑时间更新为第二逻辑时间,使得第一逻辑时间和第二逻辑时间保持一致;若第一逻辑时间晚于或等于第二逻辑时间,则第一逻辑时间保持不变。
111.(二)写入数据过程中维护分布式存储系统的一致性
112.在向分布式存储系统中写入数据时,第一计算节点可以向本地的存储单元中写入数据,或者向其它计算节点上的存储单元中写入数据。此两种情况下,维护分布式存储系统的一致性的操作不同,下面将分别论述。
113.(1)第一计算节点向本地的存储单元中写入数据
114.在一种可行的实施方式中,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,
包括:所述第一计算节点向所述第一副本中写入数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点时,将所述第一副本的失效时间更新为第四时间,其中,所述第四时间为所述第一逻辑时间和第五时间中的较晚时间,所述第五时间是由所述第一副本的失效时间延后阈值时间得到的。
115.具体地,在第一程序的工作集中的第一对象中包含的数据本体发生更新时,需要对第一对象对应的m个副本中的数据进行更新,此时可以基于m个副本分别对应的失效时间,对失效时间最晚的第一副本中的数据进行更新,即可保证分布式存储系统的一致性,因为后续第一计算节点会基于失效时间从失效时间最晚的第一副本中进行数据读取。
116.进一步地,若此时第一副本位于第一计算节点,可以直接向第一计算节点上的存储单元中第一副本中写入数据,无需进行远程访问。在向第一副本中写入数据后,更新第一副本的失效时间。第一副本失效时间的更新过程为:将第一副本的失效时间更新为第四时间,第四时间为第一逻辑时间和第五时间中的较晚时间,第五时间是由第一副本的失效时间延后阈值时间得到的。其中,阈值时间可以是用户定义的一段时间,例如,在以整数表示计算节点上逻辑时间的方式下,阈值时间可以定义为2。
117.举例来说,若第一副本的失效时间为10,第一逻辑时间为11,阈值时间为2,将第一副本的失效时间延后阈值时间得到第五时间12,第一逻辑时间为11,则此时第四时间为12,将第一副本的失效时间更新为12。
118.其中,本技术实施例中的阈值时间和租期为不同的两个时间段。
119.(2)第一计算节点向其它计算节点上的存储单元中写入数据
120.在一种可行的实施方式中,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:当所述第一副本不位于所述第一计算节点时,从所述第一副本中读取数据,并将所述读取的数据写入所述第一计算节点上的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于第二计算节点中;在第二逻辑时间早于第六时间的情况下,将所述第二逻辑时间更新为第六时间,其中,所述第六时间是由所述第一副本的失效时间延后阈值时间后得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;在所述第一副本的失效时间早于第七时间的情况下,将所述第一副本的失效时间更新为所述第七时间,其中,所述第七时间为第八时间和第九时间中的较晚时间,所述第八时间是由所述第一逻辑时间延后租期得到的,所述第九时间是由所述第二逻辑时间延后所述租期得到的;将所述第一逻辑时间更新为所述第二逻辑时间,并将所述第二副本的失效时间更新为所述第一副本的失效时间。
121.具体地,在第一副本位于第二计算节点时,由于第一副本为m个副本中失效时间最晚的副本,第一计算节点从第二计算节点上的第一副本中写入数据,同时将写入的数据传回第一计算节点,并写入第一计算节点上的第二副本中。以便后续第一计算节点使用第一对象中的数据时,可以直接从第一计算节点的本地存储单元中读取,而不用远程访问其它计算节点进行数据读取。
122.其中,第二计算节点上配置有第二逻辑时间,第二逻辑时间的相关配置和更新过程可以参见前述实施例中的描述,此处不再赘述。
123.进一步地,在向第一副本中写入数据后,基于第二逻辑时间和第六时间的关系来
确定是否更新第二逻辑时间:当第二逻辑时间早于第六时间时,将第二逻辑时间更新为第六时间;当第二逻辑时间晚于或等于第六时间时,不对第二逻辑时间进行更新操作,即保持不变。其中,第六时间为是由第一副本的失效时间上述延后阈值时间得到的。
124.进一步地,在第二逻辑时间经过上述操作(即更新或者保持不变)后,基于第一副本的失效时间和第七时间来确定是否更新第一副本的失效时间:若第一副本的失效时间早于第七时间时,将第一副本的失效时间更新为第七时间;若第一副本的失效时间晚于或等于第七时间时,将第一副本的失效时间保持不变。其中,第七时间时第八时间和第九时间中的较晚时间,第八时间是由第一逻辑时间延后上述租期得到的,第九时间是由第二逻辑时间延后租期得到的。同时,将第一逻辑时间更新为第二逻辑时间。
125.进一步地,在第一副本的失效时间经过上述操作(即更新或者保持不变)后,将第一计算节点上第二副本的失效时间更新为第一副本的失效时间。
126.在一种可行的实施方式中,所述第一计算节点上包括n个副本,n为正整数,所述第一计算节点还用于:当所述n大于或等于预设数值时,所述第一计算节点在创建第三副本之前,删除所述n个副本中的最近最少使用lru副本,其中,所述第三副本在所述第一程序的工作集中对应的对象与所述n个副本中的任一副本在所述第一程序的工作集中对应的对象不同。
127.可选地,在第一计算节点执行第一程序的过程中,第一计算节点上可以采用最近最少使用(least recently used,lru)队列来维护第一计算节点上保存的第一程序工作集中对象所对应副本的数量小于或等于上述预设数值。
128.具体地,第一计算节点上保存有n个副本,该n个副本形成一个最近最少使用(least recently used,lru)队列,当第一计算节点在本地存储单元中创建一个新的第三副本时,且此时数量n大于或等于预设数值时,表明第一计算节点中的存储单元达到了存储第一程序工作集的上限,此时,会从lru队列中删除一个lru副本,并将第三副本加入lru队列中进行维护;若数量n小于预设数值,则直接创建第三副本,并将第三副本加入lru队列中进行维护。
129.其中,该第三副本在第一程序的工作集中对应的对象与n个副本中任一副本在第一程序工作集中对应的对象不同。
130.应当理解,上述实施例只是以第一计算节点为例描述其上维护第一程序工作集对应副本的数量的过程,集群系统中的其它计算节点上的维护第一程序工作集对应副本的数量的过程与上述第一计算节点上的相应过程相同,此处不再赘述。
131.同理,上述所有实施例只是以执行第一程序的d个计算节点中的第一计算节点为例来进行描述,该d个计算节点中其它计算节点上执行第一程序的过程与第一计算节点上的执行过程相同,此处不再赘述。同理,上述集群系统上执行其它程序的过程与第一程序的执行过程也对应相同,本技术中不再赘述。
132.请参见图3,图3为本技术实施例中提供的一种维护分布式存储系统一致性的流程图。下面将基于图3来描述维护分布式存储系统一致性的具体过程。
133.在第一计算节点运行第一程序的过程中,需要访问第一程序工作集中第一对象中的数据时,首先执行步骤s310:基于m个副本分别对应的m个失效时间确定进行数据访问的第一副本。
134.在从第一副本中进行数据读取过程中,首先执行步骤s320:判断第一副本是否位于第一计算节点:若是,则执行步骤s321:基于第一副本的失效时间和第一逻辑时间之间的关系,确定是否更新第一副本的失效时间,以及步骤s322:将第一副本中的数据返回给第一程序;若否,则执行步骤s323:将第一副本中的数据写入第一计算节点上的第二副本中,步骤s324:基于第一副本的失效时间和第一时间的关系,确定是否更新第一副本的失效时间,步骤s325:更新第二副本的失效时间;基于第一逻辑时间和第二逻辑时间的关系,确定第一逻辑时间,以及步骤s326:将第一副本中的数据返回给第一程序。
135.在向第一副本中进行数据写入过程中,首先执行步骤s330:判断第一副本是否位于第一计算节点:若是,则执行步骤s331:向第一副本中的写入数据,并更新第一副本的失效时间,以及步骤s332:将第一副本中的数据返回给第一程序;若否,则执行步骤s333:读取写入到第一副本中的数据,并将读取的数据传回第一计算节点,写入第一计算节点上的第二副本中,步骤s334:基于第二逻辑时间和第六时间的关系,确定是否更新第二逻辑时间,步骤s335:基于第一副本的失效时间和第六七时间的关系,确定是否更新第一副本的失效时间,步骤s336:第一逻辑时间更新为第二逻辑时间,并将第二副本的失效时间更新为第一副本的失效时间,以及步骤s337:将第一副本中的数据返回给第一程序。
136.在将第一副本中的数据返还给第一程序后,结束对第一副本的访问过程。
137.应当理解,上述图3中各步骤的具体执行过程可以参见前述实施例中的具体描述,此处不再赘述。此外,第一程序运行过程中访问工作集中其它对象在分布式存储系统中对应的副本过程中与上述访问第一对象对应副本的过程对应相同。
138.下面将通过试验结果来描述本技术中集群系统相比于现有技术具有的有益效果。
139.将pagerank函数作为集群系统运行的程序,在进行试验过程中,当集群系统中每个计算节点上缓存50%和10%工作集的情况下,采用wi协议来维护分布式存储系统一致性的情况下,pagerank函数的运行时间分别为t1和t2,采用本技术实施例中方式来维护分布式存储系统一致性的情况下,pagerank函数的运行时间分别为t3和t4,此时t1小于t3,t2小于t4。当集群系统中的每个计算节点上缓存5%工作集、1%工作集、0.5%工作集、0.25%工作集、0.13%工作集时,采用wi协议来维护分布式存储系统一致性的情况下,pagerank函数的运行时间分别为t5、t6、t7、t8和t9;采用本技术实施例中方式来维护分布式存储系统一致性的情况下,pagerank函数的运行时间分别为t11、t12、t13、t14和t15,此时,t5大于t11,t6大于t12,t7大于t13,t8大于t14,t9大于t15。
140.表1:不同协议下程序运行时间表
141.运行pagerank函数的图模型wi协议本技术twitter图上运行pagerank用时148104kronecker生成图上运行pagerank用时137100ljournal图上运行pagerank用时193116
142.请参见表1,表1为不同协议下程序运行时间表。表1描述了集群系统中每个计算节点在缓存0.13%pagerank函数工作集的情况下,使用wi协议和本技术中方式维护分布式存储系统一致性时,pagerank函数在不同图结构中的执行时间(将不使用缓存的情况下的pagerank函数的运行时间标准化为100)。如表1所示,当在twitter图上运行ragerank函数时,利用wi协议维护分布式存储系统一致性的情况下,函数运行时长为148,而采用本技术
中方法维护分布式存储系统一致性的情况下,函数运行时长为104;在kronecker生成图上运行pagerank函数时,利用wi协议维护分布式存储系统一致性的情况下,函数运行时长为137,采用本技术中方法维护分布式存储系统一致性的情况下,函数运行时长为100;在ljournal图上运行ragerank函数时,利用wi协议维护分布式存储系统一致性的情况下,函数运行时长为193,而采用本技术中方法维护分布式存储系统一致性的情况下,函数运行时长为仅116。
143.由此可看出,当集群系统中各计算节点上的缓存程序工作集的存储空间较小的情况下,采用本技术实施例中的方法维护分布式存储系统的一致性的情况下,函数运行时间可以显著缩短。
144.请参见图4,图4为本技术实施例提供的一种集群系统中的程序执行方法的流程示意图。其中,集群系统包括多个计算节点,所述集群系统的分布式存储系统包括所述多个计算节点中的存储单元。如图4所示,方法400包括步骤s410和步骤s420。
145.步骤s410:通过所述多个计算节点中的第一计算节点执行第一程序,其中,所述第一计算节点中配置有第一逻辑时间,所述第一逻辑时间用于表示所述第一计算节点最近一次对所述第一计算节点上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在所述分布式存储系统中对应至少一个副本。
146.步骤s420:基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。
147.在一种可行的实施方式中,所述方法还包括:通过所述第一计算节点每次从所述分布式存储系统中多个副本中的一个副本中读取数据,以及每次向所述分布式存储系统中多个副本中的一个副本中写入数据。
148.在一种可行的实施方式中,所述第一程序的工作集中第一对象在所述分布式存储系统中对应m个副本,所述m个副本分别对应m个失效时间,且所述m个副本分别位于所述多个计算节点中m个不同的计算节点上,m为正整数。
149.在一种可行的实施方式中,所述基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:通过所述第一计算节点从所述m个副本中的第一副本中读取数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点,且所述第一副本的失效时间早于所述第一逻辑时间时,将所述第一副本的失效时间更新为所述第一逻辑时间。
150.在一种可行的实施方式中,所述基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,将从所述第一副本中读取的数据写入所述第一计算节点中的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于所述多个计算节点中的第二计算节点中;在所述第一副本的失效时间早于第一时间的情况下,将所述第一副本的失效时间更新为所述第一时间,其中,所述第一时间为第二时间和第三时间中的较晚时间,所述第二时间是由所述第一逻辑时间延后租期得到的,所述第三时间是由第二逻辑时间延后所述租期得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;将所述第二副本的失效时间更新
为所述第一副本的失效时间,且在所述第一逻辑时间早于所述第二逻辑时间时,将所述第一逻辑时间更新为所述第二逻辑时间。
151.在一种可行的实施方式中,所述基于所述第一程序的工作集中每个对象对应副本对应的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:通过所述第一计算节点向所述第一副本中写入数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点时,将所述第一副本的失效时间更新为第四时间,其中,所述第四时间为所述第一逻辑时间和第五时间中的较晚时间,所述第五时间是由所述第一副本的失效时间延后阈值时间得到的。
152.在一种可行的实施方式中,所述基于所述一个或多个对象中每个对象对应的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,从所述第一对象中读取数据,并将所述读取的数据写入所述第一计算节点上的第二对象中,其中,所述第二对象为所述m个对象中的一个,所述第一对象位于第二计算节点中;在第二逻辑时间早于第六时间的情况下,将所述第二逻辑时间更新为第六时间,其中,所述第六时间是由所述第一对象的失效时间延后阈值时间后得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;在所述第一对象的失效时间早于第七时间的情况下,将所述第一对象的失效时间更新为所述第七时间,其中,所述第七时间为第八时间和第九时间中的较晚时间,所述第八时间是由所述第一逻辑时间延后租期得到的,所述第九时间是由所述第二逻辑时间延后所述租期得到的;将所述第一逻辑时间更新为所述第二逻辑时间,并将所述第二对象的失效时间更新为所述第一对象的失效时间。
153.在一种可行的实施方式中,所述第一计算节点上包括n个对象,n为正整数,所述方法还包括:当所述n大于或等于预设数值时,在通过所述第一计算节点在创建第三对象之前,删除所述n个对象中的最近最少使用lru对象,其中,所述第三对象属于所述第一程序的工作集,且所述第三对象在所述第一程序的工作集中的位置与所述n个对象中的任一对象在所述第一程序的工作集中的位置不同。
154.应当理解,上述方法400中的各实施例中的具体步骤可以参见前述图1对应实施例中的描述,此处不再赘述。
155.请参见图5,图5为本技术实施例提供的一种集群系统中程序执行装置的结构示意图。集群系统包括多个计算节点,所述集群系统的分布式存储系统包括所述多个计算节点中的存储单元。如图5所示,集群系统中的程序处理装置500包括执行单元501和维护单元502。
156.执行单元501,用于通过所述多个计算节点中的第一计算节点执行第一程序,其中,所述第一计算节点中配置有第一逻辑时间,所述第一逻辑时间用于表示所述第一计算节点最近一次对所述第一计算节点上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在所述分布式存储系统中对应至少一个副本;维护单元502,用于根据所述分布式存储系统中每个副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。
157.在一种可行的实施方式中,所述装置还包括数据访问单元,用于通过所述第一计算节点每次从所述分布式存储系统中多个副本中的一个副本中读取数据,以及每次向所述
分布式存储系统中多个副本中的一个副本中写入数据。
158.在一种可行的实施方式中,所述第一程序的工作集中第一对象在所述分布式存储系统中对应m个副本,所述m个副本分别对应m个失效时间,且所述m个副本分别位于所述多个计算节点中m个不同的计算节点上,m为正整数。
159.在一种可行的实施方式中,所述维护单元502具体用于:通过所述第一计算节点从所述m个副本中的第一副本中读取数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本属于所述第一计算节点,且所述第一副本的失效时间早于所述第一逻辑时间时,将所述第一副本的失效时间更新为所述第一逻辑时间。
160.在一种可行的实施方式中,所述数据访问单元具体用于:当所述第一副本不位于所述第一计算节点时,将从所述第一副本中读取的数据写入所述第一计算节点中的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于所述多个计算节点中的第二计算节点中;所述维护单元502,还用于:在所述第一副本的失效时间早于第一时间的情况下,将所述第一副本的失效时间更新为所述第一时间,其中,所述第一时间为第二时间和第三时间中的较晚时间,所述第二时间是由所述第一逻辑时间延后租期得到的,所述第三时间是由第二逻辑时间延后所述租期得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;将所述第二副本的失效时间更新为所述第一副本的失效时间,且在所述第一逻辑时间早于所述第二逻辑时间时,将所述第一逻辑时间更新为所述第二逻辑时间。
161.在一种可行的实施方式中,所述维护单元502具体用于:通过所述第一计算节点向所述第一副本中写入数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点时,将所述第一副本的失效时间更新为第四时间,其中,所述第四时间为所述第一逻辑时间和第五时间中的较晚时间,所述第五时间是由所述第一副本的失效时间延后阈值时间得到的。
162.在一种可行的实施方式中,所述数据访问单元具体用于:当所述第一副本不位于所述第一计算节点时,从所述第一对象中读取数据,并将所述读取的数据写入所述第一计算节点上的第二对象中,其中,所述第二对象为所述m个对象中的一个,所述第一对象位于第二计算节点中;所述维护单元502,还用于:在第二逻辑时间早于第六时间的情况下,将所述第二逻辑时间更新为第六时间,其中,所述第六时间是由所述第一对象的失效时间延后阈值时间后得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;在所述第一对象的失效时间早于第七时间的情况下,将所述第一对象的失效时间更新为所述第七时间,其中,所述第七时间为第八时间和第九时间中的较晚时间,所述第八时间是由所述第一逻辑时间延后租期得到的,所述第九时间是由所述第二逻辑时间延后所述租期得到的;将所述第一逻辑时间更新为所述第二逻辑时间,并将所述第二对象的失效时间更新为所述第一对象的失效时间。
163.在一种可行的实施方式中,所述第一计算节点上包括n个对象,n为正整数,所述装置还包括:删除单元,用于当所述n大于或等于预设数值,在通过所述第一计算节点在创建第三对象之前,删除所述n个对象中的最近最少使用lru对象,其中,所述第三对象属于所述第一程序的工作集,且所述第三对象在所述第一程序的工作集中的位置与所述n个对象中的任一对象在所述第一程序的工作集中的位置不同。
164.应当理解,上述装置500中的各单元的具体执行过程可以参见前述图1对应实施例中的描述,此处不再赘述。
165.请参见图6,图6本技术实施例提供的一种物理机的硬件结构示意图。该物理机600可以是前述图1实施例中的任意一个计算节点。物理机600包括处理器601、存储器602、接口电路603和总线604。
166.所述存储器602,用于存储第一程序。所述处理器601,用于执行第一程序。所述处理器601中配置有第一逻辑时间,所述第一逻辑时间用于表示所述处理器601最近一次对所述存储器602上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在分布式存储系统中对应至少一个副本,所述分布式存储系统包括多个物理机上的存储器。所述处理器601,还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。
167.其中,处理器601、存储器602和接口电路603通过总线604进行数据传输。
168.应当理解,上述物理机600中第一程序的具体执行过程可以参见前述实施例中的描述,此处不再赘述。
169.其中,存储器602可以是随机存取存储器(random access memory,ram)、只读存储器(read-only memory,rom)或闪存(flash memory)等存储器中的任意一种;其中,ram包括静态随机存储器(static ram,sram)和动态随机存储器(dynamic ram,dram)等,rom包括可擦除可编程rom(erasable programmable rom,eprom)和电可擦可编程只读存储器(electrically erasable programmable rom,eeprom)等。处理器601可以是单核或多核中央处理单元(central processing unit,cpu),本技术对此不限定。
170.应当理解,本技术实施例中电子设备上处理器601和存储器602的具体运行过程可以参见前述方法实施例中的对应过程,此处不再赘述。
171.本技术实施例提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,该计算机程序被执行时,使得上述方法实施例中记载的任意一种的部分或全部步骤得以实现。
172.本技术实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被处理器执行时,使得上述方法实施例中记载的任意一种的部分或全部步骤得以实现。
173.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本技术所必须的。
174.在本技术所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,
可以是电性或其它的形式。
175.上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
176.以上所述,以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。

技术特征:
1.一种集群系统,其特征在于,所述集群系统包括多个计算节点,所述集群系统的分布式存储系统包括所述多个计算节点中的存储单元,其中,所述多个计算节点中的第一计算节点,用于执行第一程序,其中,所述第一计算节点中配置有第一逻辑时间,所述第一逻辑时间用于表示所述第一计算节点最近一次对所述第一计算节点上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在所述分布式存储系统中对应至少一个副本;所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。2.根据权利要求1所述的集群系统,其特征在于,所述第一计算节点还用于:每次从所述分布式存储系统中多个副本中的一个副本中读取数据,以及每次向所述分布式存储系统中多个副本中的一个副本中写入数据。3.根据权利要求1或2所述的集群系统,其特征在于,所述第一程序的工作集中第一对象在所述分布式存储系统中对应m个副本,所述m个副本分别对应m个失效时间,且所述m个副本分别位于所述多个计算节点中m个不同的计算节点上,m为正整数。4.根据权利要求3所述的集群系统,其特征在于,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:所述第一计算节点从所述m个副本中的第一副本中读取数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点,且所述第一副本的失效时间早于所述第一逻辑时间时,将所述第一副本的失效时间更新为所述第一逻辑时间。5.根据权利要求4所述的集群系统,其特征在于,所述第一计算节点基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,将从所述第一副本中读取的数据写入所述第一计算节点中的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于所述多个计算节点中的第二计算节点中;在所述第一副本的失效时间早于第一时间的情况下,将所述第一副本的失效时间更新为所述第一时间,其中,所述第一时间为第二时间和第三时间中的较晚时间,所述第二时间是由所述第一逻辑时间延后租期得到的,所述第三时间是由第二逻辑时间延后所述租期得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;将所述第二副本的失效时间更新为所述第一副本的失效时间,且在所述第一逻辑时间早于所述第二逻辑时间时,将所述第一逻辑时间更新为所述第二逻辑时间。6.根据权利要求3所述的集群系统,其特征在于,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:
所述第一计算节点向所述第一副本中写入数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点时,将所述第一副本的失效时间更新为第四时间,其中,所述第四时间为所述第一逻辑时间和第五时间中的较晚时间,所述第五时间是由所述第一副本的失效时间延后阈值时间得到的。7.根据权利要求6所述的集群系统,其特征在于,所述第一计算节点还用于基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,从所述第一副本中读取数据,并将所述读取的数据写入所述第一计算节点上的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于第二计算节点中;在第二逻辑时间早于第六时间的情况下,将所述第二逻辑时间更新为第六时间,其中,所述第六时间是由所述第一副本的失效时间延后阈值时间后得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;在所述第一副本的失效时间早于第七时间的情况下,将所述第一副本的失效时间更新为所述第七时间,其中,所述第七时间为第八时间和第九时间中的较晚时间,所述第八时间是由所述第一逻辑时间延后租期得到的,所述第九时间是由所述第二逻辑时间延后所述租期得到的;将所述第一逻辑时间更新为所述第二逻辑时间,并将所述第二副本的失效时间更新为所述第一副本的失效时间。8.根据权利要求1-7中任一项所述的集群系统,其特征在于,所述第一计算节点上包括n个副本,n为正整数,所述第一计算节点还用于:当所述n大于或等于预设数值时,所述第一计算节点在创建第三副本之前,删除所述n个副本中的最近最少使用lru副本,其中,所述第三副本在所述第一程序的工作集中对应的对象与所述n个副本中的任一副本在所述第一程序的工作集中对应的对象不同。9.一种集群系统中的程序执行方法,其特征在于,所述集群系统包括多个计算节点,所述集群系统的分布式存储系统包括所述多个计算节点中的存储单元,所述方法包括:通过所述多个计算节点中的第一计算节点执行第一程序,其中,所述第一计算节点中配置有第一逻辑时间,所述第一逻辑时间用于表示所述第一计算节点最近一次对所述第一计算节点上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在所述分布式存储系统中对应至少一个副本;基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。10.根据权利要求9所述的方法,其特征在于,所述方法还包括:通过所述第一计算节点每次从所述分布式存储系统中多个副本中的一个副本中读取数据,以及每次向所述分布式存储系统中多个副本中的一个副本中写入数据。11.根据权利要求9或10所述的方法,其特征在于,所述第一程序的工作集中第一对象在所述分布式存储系统中对应m个副本,所述m个副
本分别对应m个失效时间,且所述m个副本分别位于所述多个计算节点中m个不同的计算节点上,m为正整数。12.根据权利要求11所述的方法,其特征在于,所述基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:通过所述第一计算节点从所述m个副本中的第一副本中读取数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点,且所述第一副本的失效时间早于所述第一逻辑时间时,将所述第一副本的失效时间更新为所述第一逻辑时间。13.根据权利要求12所述的方法,其特征在于,所述基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,将从所述第一副本中读取的数据写入所述第一计算节点中的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于所述多个计算节点中的第二计算节点中;在所述第一副本的失效时间早于第一时间的情况下,将所述第一副本的失效时间更新为所述第一时间,其中,所述第一时间为第二时间和第三时间中的较晚时间,所述第二时间是由所述第一逻辑时间延后租期得到的,所述第三时间是由第二逻辑时间延后所述租期得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;将所述第二副本的失效时间更新为所述第一副本的失效时间,且在所述第一逻辑时间早于所述第二逻辑时间时,将所述第一逻辑时间更新为所述第二逻辑时间。14.根据权利要求11所述的方法,其特征在于,所述基于所述第一程序的工作集中每个对象对应副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,包括:通过所述第一计算节点向所述第一副本中写入数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点时,将所述第一副本的失效时间更新为第四时间,其中,所述第四时间为所述第一逻辑时间和第五时间中的较晚时间,所述第五时间是由所述第一副本的失效时间延后阈值时间得到的。15.根据权利要求14所述的方法,其特征在于,所述基于所述一个或多个对象中每个对象对应的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性,还包括:当所述第一副本不位于所述第一计算节点时,从所述第一对象中读取数据,并将所述读取的数据写入所述第一计算节点上的第二对象中,其中,所述第二对象为所述m个对象中的一个,所述第一对象位于第二计算节点中;在第二逻辑时间早于第六时间的情况下,将所述第二逻辑时间更新为第六时间,其中,所述第六时间是由所述第一对象的失效时间延后阈值时间后得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;在所述第一对象的失效时间早于第七时间的情况下,将所述第一对象的失效时间更新为所述第七时间,其中,所述第七时间为第八时间和第九时间中的较晚时间,所述第八时间是由所述第一逻辑时间延后租期得到的,所述第九时间是由所述第二逻辑时间延后所述租
期得到的;将所述第一逻辑时间更新为所述第二逻辑时间,并将所述第二对象的失效时间更新为所述第一对象的失效时间。16.根据权利要求9-15任一项所述的方法,其特征在于,所述第一计算节点上包括n个对象,n为正整数,所述方法还包括:当所述n大于或等于预设数值时,在通过所述第一计算节点在创建第三对象之前,删除所述n个对象中的最近最少使用lru对象,其中,所述第三对象属于所述第一程序的工作集,且所述第三对象在所述第一程序的工作集中的位置与所述n个对象中的任一对象在所述第一程序的工作集中的位置不同。17.一种集群系统中的程序执行装置,其特征在于,所述集群系统包括多个计算节点,所述集群系统的分布式存储系统包括所述多个计算节点中的存储单元,所述装置包括:执行单元,用于通过所述多个计算节点中的第一计算节点执行第一程序,其中,所述第一计算节点中配置有第一逻辑时间,所述第一逻辑时间用于表示所述第一计算节点最近一次对所述第一计算节点上存储的第一工作集进行操作的时刻,所述第一工作集为所述第一程序的工作集的子集,所述第一程序的工作集中的每个对象在所述分布式存储系统中对应至少一个副本;维护单元,用于根据所述分布式存储系统中每个副本的失效时间和所述第一逻辑时间维护所述分布式存储系统的一致性。18.根据权利要求17所述的装置,其特征在于,所述装置还包括:数据访问单元,用于通过所述第一计算节点每次从所述分布式存储系统中多个副本中的一个副本中读取数据,以及每次向所述分布式存储系统中多个副本中的一个副本中写入数据。19.根据权利要求17或18所述的装置,其特征在于,所述第一程序的工作集中第一对象在所述分布式存储系统中对应m个副本,所述m个副本分别对应m个失效时间,且所述m个副本分别位于所述多个计算节点中m个不同的计算节点上,m为正整数。20.根据权利要求19所述的装置,其特征在于,所述维护单元具体用于:通过所述第一计算节点从所述m个副本中的第一副本中读取数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本属于所述第一计算节点,且所述第一副本的失效时间早于所述第一逻辑时间时,将所述第一副本的失效时间更新为所述第一逻辑时间。21.根据权利要求20所述的装置,其特征在于,所述数据访问单元,具体用于:当所述第一副本不位于所述第一计算节点时,将从所述第一副本中读取的数据写入所述第一计算节点中的第二副本中,其中,所述第二副本为所述m个副本中的一个,所述第一副本位于所述多个计算节点中的第二计算节点中;所述维护单元,还用于:在所述第一副本的失效时间早于第一时间的情况下,将所述第一副本的失效时间更新为所述第一时间,其中,所述第一时间为第二时间和第三时间中的较晚时间,所述第二时间
是由所述第一逻辑时间延后租期得到的,所述第三时间是由第二逻辑时间延后所述租期得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;将所述第二副本的失效时间更新为所述第一副本的失效时间,且在所述第一逻辑时间早于所述第二逻辑时间时,将所述第一逻辑时间更新为所述第二逻辑时间。22.根据权利要求19所述的装置,其特征在于,所述维护单元具体用于:通过所述第一计算节点向所述第一副本中写入数据,所述第一副本的失效时间为所述m个失效时间中的最晚失效时间;当所述第一副本位于所述第一计算节点时,将所述第一副本的失效时间更新为第四时间,其中,所述第四时间为所述第一逻辑时间和第五时间中的较晚时间,所述第五时间是由所述第一副本的失效时间延后阈值时间得到的。23.根据权利要求22所述的装置,其特征在于,所述数据访问单元,具体用于:当所述第一副本不位于所述第一计算节点时,从所述第一对象中读取数据,并将所述读取的数据写入所述第一计算节点上的第二对象中,其中,所述第二对象为所述m个对象中的一个,所述第一对象位于第二计算节点中;所述维护单元,还用于:在第二逻辑时间早于第六时间的情况下,将所述第二逻辑时间更新为第六时间,其中,所述第六时间是由所述第一对象的失效时间延后阈值时间后得到的,所述第二逻辑时间为所述第二计算节点最近一次对所述第二计算节点上存储的第二工作集进行操作的时刻;在所述第一对象的失效时间早于第七时间的情况下,将所述第一对象的失效时间更新为所述第七时间,其中,所述第七时间为第八时间和第九时间中的较晚时间,所述第八时间是由所述第一逻辑时间延后租期得到的,所述第九时间是由所述第二逻辑时间延后所述租期得到的;将所述第一逻辑时间更新为所述第二逻辑时间,并将所述第二对象的失效时间更新为所述第一对象的失效时间。24.根据权利要求17-23任一项所述的装置,其特征在于,所述第一计算节点上包括n个对象,n为正整数,所述装置还包括:删除单元,用于当所述n大于或等于预设数值,在通过所述第一计算节点在创建第三对象之前,删除所述n个对象中的最近最少使用lru对象,其中,所述第三对象属于所述第一程序的工作集,且所述第三对象在所述第一程序的工作集中的位置与所述n个对象中的任一对象在所述第一程序的工作集中的位置不同。25.一种物理机,其特征在于,所述物理机包括至少一个处理器和存储有可执行代码的计算机可读存储介质,所述可执行代码被所述至少一个处理器执行时,权利要求9-16中任一项所述的方法得以实现。26.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,该计算机程序被执行时,权利要求9-16中任意一项所述的方法得以实现。27.一种计算机程序,其特征在于,该计算机程序包括指令,当该计算机程序被执行时,权利要求9-16中任意一项所述的方法得以实现。

技术总结
本申请公开了一种集群系统、集群系统上的程序执行方法和装置,集群系统包括多个计算节点,该多个计算节点中的第一计算节点,用于执行第一程序,第一计算节点中配置有第一逻辑时间,第一逻辑时间用于表示第一计算节点最近一次对第一计算节点上存储的第一工作集进行操作的时刻,第一工作集为第一程序的工作集的子集,第一程序的工作集中的每个对象在分布式存储系统中对应至少一个副本;第一计算节点基于第一程序的工作集中的每个对象对应副本的失效时间和第一逻辑时间维护分布式存储系统的一致性。通过本申请,可以实现在集群系统的分布式内存中精确地进行数据访问,且避免发送无效信息,加速应用的执行速度。加速应用的执行速度。加速应用的执行速度。


技术研发人员:贾兴国 戚正伟
受保护的技术使用者:华为技术有限公司
技术研发日:2022.02.11
技术公布日:2023/8/24
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐