CN117851021A - 分布式内存系统、分布式内存管理方法、装置及相关设备 - Google Patents

分布式内存系统、分布式内存管理方法、装置及相关设备 Download PDF

Info

Publication number
CN117851021A
CN117851021A CN202211212936.1A CN202211212936A CN117851021A CN 117851021 A CN117851021 A CN 117851021A CN 202211212936 A CN202211212936 A CN 202211212936A CN 117851021 A CN117851021 A CN 117851021A
Authority
CN
China
Prior art keywords
node
memory
information
nodes
memory information
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
Application number
CN202211212936.1A
Other languages
English (en)
Inventor
张正义
刘勇
张景芳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Huawei Technology Co Ltd
Original Assignee
Chengdu Huawei Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Chengdu Huawei Technology Co Ltd filed Critical Chengdu Huawei Technology Co Ltd
Priority to CN202211212936.1A priority Critical patent/CN117851021A/zh
Priority to PCT/CN2023/101055 priority patent/WO2024066499A1/zh
Publication of CN117851021A publication Critical patent/CN117851021A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种分布式内存系统,该分布式内存系统可以不依赖管理节点进行内存信息同步。其中,分布式内存系统包括N个节点,所述N个节点的内存构成共享内存池,所述N大于或等于2;所述N个节点中的第一节点用于通过所述N个节点中的第二节点获取所述N个节点中除所述第一节点外的N‑1个节点的内存信息,所述N‑1个节点的内存信息与所述第一节点的内存信息构成所述共享内存池的信息,所述第一节点为所述N个节点中的任意一个节点;所述第一节点还用于基于所述共享内存池的信息为业务分配所述共享内存池中的内存。本申请还提供了对应的分布式内存管理方法、装置、计算设备集群、计算机可读存储介质以及计算机程序产品。

Description

分布式内存系统、分布式内存管理方法、装置及相关设备
技术领域
本申请涉及数据处理技术领域,尤其涉及一种分布式内存系统、分布式内存管理方法、装置及相关设备。
背景技术
随着高性能网络的发展,分布式内存系统(distributed memory system,dms)在许多场景中得到了应用。分布式内存系统可以包括多个内存资源节点。多个内存资源节点的内存资源构成共享内存池,业务可以基于共享内存池中的内存资源执行。在一些应用场景中,内存资源节点可以为业务分配共享内存池中的内存。也就是说,内存资源节点可以将业务分配到分布式内存系统中的一个或多个内存资源节点,以便所述一个或多个内存资源节点共同承载对应的业务。
为了便于内存资源节点为业务分配共享内存池中的内存,分布式内存系统可以进行内存信息同步。其中,内存信息同步是指分布式内存系统中每个内存资源节点将自身的内存信息发送给其他内存资源节点,并接收其他内存资源节点发送的内存信息。目前,分布式内存系统的内存信息同步依赖分布式内存系统中的管理节点。内存资源节点可以将本地的内存信息发送给管理节点。管理节点接收并统计多个内存资源节点发送的内存信息,并将统计好的内存信息分别发送给每个内存资源节点,实现内存信息同步。
但是,上述内存信息同步的方法对管理节点的性能要求较高。如果管理节点的性能不满足分布式内存系统的需求,内存信息无法得到及时的同步,出现内存分配不均,影响业务的运行速度
发明内容
有鉴于此,本申请提供了一种分布式内存系统,该分布式内存系统可以不依赖管理节点进行内存信息同步。本申请还提供了对应的分布式内存管理方法、装置、计算设备集群、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种分布式内存系统,该分布式内存系统中包括N个节点(N为大于或等于2的),N个节点的内存构成共享内存池。在分布式内存系统运行的过程中,上述N个节点中的第一节点用于通过N个节点中的第二节点获取N个节点中除了第一节点以外其他N-1个节点的内存信息。第一节点可以根据第一节点的内存信息,以及第一节点通过第二节点获取到的内存信息确定共享内存池的信息。这样,第一节点可以基于共享内存池的信息为业务分配共享内存池中的内存。
这样,第一节点可以获取到分布式内存系统对应的共享内存池的信息,以便基于共享内存池的信息为业务分配共享内存池中的内存。如此,由于无需管理节点进行内存信息同步,自然不会受到管理节点的性能的限制。即使分布式内存系统的规模扩大或者内存消耗的速度增加,也能使即使进行内存信息同步,保证分布式内存系统的正常运行。
在一些可能的实施方式中,分布式内存系统中每个节点包括数据处理单元(DataProcessing Unit,DPU)。第一节点可以通过第一节点的DPU获取N个节点中除第一节点以外的N-1个节点的内存信息。另外,第二节点还可以通过第二节点的DPU向第一节点的DPU发送内存信息。
在一些可能的实施方式中,第二节点可以包括N-1个节点中的至少一个节点。也就是说,分布式内存系统中除了第一节点以外的N-1个节点的内存信息,可以是一个节点向第一节点发送的,也可以是多个节点向第一节点发送的。
在一些可能的实施方式中,分布式内存系统中的N个节点可以按照内存信息传输的方向构成一个逻辑环。也就是说,内存信息在分布式内存系统的N个节点中呈环形流动。即,组成逻辑环的N个节点中第i个节点用于将第i个节点的内存信息,以及第i个节点从第i-1个节点接收到的内存信息,向第i+1个节点发送。这样,第i+1个节点可以获取到第一逻辑环上N个节点的内存信息。分布式内存系统中每个节点都可以获取N个节点的内存信息,得到共享内存池的信息。
在一些可能的实施方式中,分布式内存系统中的N个节点可以分成M组节点。每组节点按照内存信息传输的方向构成一个逻辑环。每个逻辑环中包括至少一个公用节点。公用节点同时存在与两个逻辑环中。M个逻辑环中第一逻辑环中的第i个第i个节点用于将第i个节点的内存信息及从第i-1个节点接收的内存信息发送至第i+1个节点,直到第一逻辑环中的每个节点都包括第一逻辑环中的所有节点的内存信息。另外,第一逻辑环中的公用节点用于将所述第一逻辑环中的所有节点的内存信息传输至与第二逻辑环的节点中,直到N个节点中的每个节点都包括所述N个节点的内存信息,第一逻辑环为M个逻辑环中的任意一个逻辑环,第二逻辑环与第一逻辑环包括相同的所述公用节点,i为大于1且小于N的正整数。
第二方面,本申请提供了一种分布式内存管理方法,该分布式内存管理方法可以应用于分布式内存系统。分布式内存系统包括N个节点,N个节点包括第一节点和第二节点。在执行本申请提供的分布式内存系统时,第一节点可以通过第二节点获取N个节点中除第一节点以外的N-1个节点的内存信息,从而根据获取到的N-1个节点的内存信息和第一节点的内存信息确定共享内存池的信息。接着,第一节点可以根据共享内存池的信息为业务分配共享内存池中的内存。
在一些可能的实施方式中,分布式内存系统中的N个节点每个节点可以包括DPU。上文所述的共享内存池的信息被存储在DPU中。第一节点通过DPU从第二节点的DPU获取N个节点中除第一节点以外的N-1个节点的内存信息。
在一些可能的实施方式中,第二节点可以包括N-1个节点中的至少一个节点。也就是说,分布式内存系统中除了第一节点以外的N-1个节点的内存信息,可以是一个节点向第一节点发送的,也可以是多个节点向第一节点发送的。
在一些可能的实施方式中,N个节点按照内存信息传输的方向构成一个逻辑环。假设第一节点为N个节点中的第i个节点,那么第二节点为N个节点中第i-1个节点。其中,i为大于1且小于N的正整数。相应地,在进行分布式内存管理时,第二节点可以周期性地向第一节点发送第二节点的内存信息,以及第二节点中存储的其他节点的内存信息。第一节点可以接收第二节点发送的内存信息,并向逻辑环中第i+1个节点发送第一节点的内存信息以及第一节点所存储的其他节点的内存信息。如此,内存信息在逻辑环中按照环路传输,分布式内存系统的N个节点可以获取到其他节点的内存信息,得到共享内存池的信息。
在一些可能的实施方式中,N个节点分成M组节点,每组节点按照内存信息传输的方向构成一个逻辑环,每个逻辑环中包括至少一个公用节点。公用节点同时存在于两个逻辑环中。假设第一节点为M个逻辑环中第一逻辑环和第二逻辑环中的公用节点,且第一节点在第二逻辑环中为第j个节点。那么第一节点可以周期性地接收第二节点发送的内存信息,并周期性向第i+1个节点和第j+1个节点发送内存信息。其中,第一节点接收的内存信息包括和第一逻辑环上除第一节点以外其他节点的内存信息。第一节点发送的内存信息包括第一逻辑环上节点的内存信息,以及第二逻辑环上节点的内存信息。这样,不同逻辑环上节点的内存信息可以通过公用节点相互传递,使得分布式内存系统中的节点可以获取其他节点的内存信息。
第三方面,本申请提供了一种信息传递的方法,该方法应用于分布式内存系统中的第一节点,包括:
接收第二节点发送的第一内存信息,第一内存信息包括所述第二节点的内存信息;
根据第一信息传递路径向第三节点发送第二内存信息,所述第二内存信息包括所述第三节点的内存信息和所述第一节点的内存信息,在所述第一信息传递路径上,所述第二节点为所述第一节点的上游节点,且所述第一节点为所述第三节点的上游节点
在一些可能的实施方式中,所述第一内存信息还包括所述第一信息传递路径上所述第二节点的上游节点的内存信息。
在一些可能的实施方式中,在接收到所述第二节点发送的所述第一内存信息之后,所述方法还包括:
存储所述第一内存信息;
在根据第一信息传递路径向第三节点发送第二内存信息之前,所述方法还包括:
响应于周期任务被触发,读取存储的所述第一内存信息;
获取所述第一节点的内存信息;
根据所述第一内存信息和所述第一节点的内存信息,确定第二内存信息。
在一些可能的实施方式中,所述根据所述第一内存信息和所述第一节点的内存信息,确定第二内存信息包括:响应于所述第一内存信息包括所述第一节点的内存信息,根据获取到的第一节点的内存信息,更新所述第一内存信息中所述第一节点的内存信息,得到所述第二内存信息。
在一些可能的实施方式中,所述第一信息传递路径为环形的信息传递路径,所述第一内存信息还包括所述第一节点的内存信息,所述第一内存信息中所述第一节点的内存信息是所述第三节点向所述第二节点发送的。
在一些可能的实施方式中,所述方法还包括:
接收第四节点发送的第三内存信息,所述第三内存信息包括所述第四节点的内存信息;
根据第二信息传递路径向第五节点发送第四内存信息,所述第四内存信息包括所述第四节点的内存信息和所述第二内存信息,在所述第二信息传递路径上,所述第四节点为所述第一节点的上游节点,且所述第一节点为所述第五节点的上游节点。
在一些可能的实施方式中,所述第四节点属于第四信息传递路径,所述第三内存信息包括所述第四信息传递路径上节点的内存信息和所述第三信息传递路径上节点的内存信息。
第四方面,本申请提供了一种信息传递的装置,该装置应用于分布式内存系统中的第一节点,包括:接收模块,用于接收第二节点发送的第一内存信息,第一内存信息包括所述第二节点的内存信息;发送模块,用于根据第一信息传递路径向第三节点发送第二内存信息,所述第二内存信息包括所述第三节点的内存信息和所述第一节点的内存信息,在所述第一信息传递路径上,所述第二节点为所述第一节点的上游节点,且所述第一节点为所述第三节点的上游节点
在一些可能的实施方式中,所述第一内存信息还包括所述第一信息传递路径上所述第二节点的上游节点的内存信息。
在一些可能的实施方式中,所述装置还包括存储模块和获取模块。所述存储模块,用于存储所述第一内存信息。所述获取模块,用于在根据第一信息传递路径向第三节点发送第二内存信息之前,响应于周期任务被触发,读取存储的所述第一内存信息;获取所述第一节点的内存信息;根据所述第一内存信息和所述第一节点的内存信息,确定第二内存信息。
在一些可能的实施方式中,所述获取模块,用于响应于所述第一内存信息包括所述第一节点的内存信息,根据获取到的第一节点的内存信息,更新所述第一内存信息中所述第一节点的内存信息,得到所述第二内存信息。
在一些可能的实施方式中,所述第一信息传递路径为环形的信息传递路径,所述第一内存信息还包括所述第一节点的内存信息,所述第一内存信息中所述第一节点的内存信息是所述第三节点向所述第二节点发送的。
在一些可能的实施方式中,所述接收模块,还用于接收第四节点发送的第三内存信息,所述第三内存信息包括所述第四节点的内存信息。所述发送模块,还用于根据第二信息传递路径向第五节点发送第四内存信息,所述第四内存信息包括所述第四节点的内存信息和所述第二内存信息,在所述第二信息传递路径上,所述第四节点为所述第一节点的上游节点,且所述第一节点为所述第五节点的上游节点。
在一些可能的实施方式中,所述第四节点属于第四信息传递路径,所述第三内存信息包括所述第四信息传递路径上节点的内存信息和所述第三信息传递路径上节点的内存信息。
第五方面,本申请提供一种计算设备集群,所述计算设备包括至少一个计算设备,所述至少一个计算设备包括至少一个处理器和至少一个存储器;所述至少一个存储器用于存储指令,所述至少一个处理器执行所述至少一个存储器存储的该指令,以使所述计算设备集群执行上述第三方面或第三方面任一种可能实现方式中的信息传递的方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。所述至少一个计算设备还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
第六方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在至少一个计算设备上运行时,使得所述至少一个计算设备执行上述第三方面或第一方面的任三种实现方式所述的方法。
第七方面,本申请提供了一种包含指令的计算机程序产品,当其在至少一个计算设备上运行时,使得所述至少一个计算设备执行上述第三方面或第三方面的任一种实现方式所述的方法。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的传统的分布式内存系统的一种结构示意图;
图2为本申请实施例提供的分布式内存系统的一种结构示意图;
图3为本申请实施例提供的一示例性应用场景的示意图;
图4为本申请实施例提供的信息传递的方法的一种流程示意图;
图5为本申请实施例提供的另一示例性应用场景的示意图;
图6为本申请实施例提供的又一示例性应用场景的示意图;
图7为本申请实施例提供的再一示例性应用场景的示意图;
图8为本申请实施例提供的一种计算设备的结构示意图;
图9为本申请实施例提供的一种计算设备集群的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请提供的实施例中的方案进行描述。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。
分布式内存系统包括多个内存资源节点。每个内存资源节点包括内存单元,用于提供内存资源。分布式内存系统中所有内存资源节点的内存资源构成共享内存池。在接收到需要处理的业务时,可以调用共享内存池中的内存资源处理业务。
在一些应用场景中,例如在基于高性能网络实现的分布式内存系统中,不同内存资源节点之间相互连接,且内存资源节点可以对其他的内存资源节点的内存进行读写。这样,内存资源节点可以将自身需要处理的数据写入其他内存资源节点,从而由其他内存资源节点对数据进行处理。这样,相当于由内存资源节点为业务分配共享内存池中的内存,提升了数据处理的速度。
为了便于内存资源节点为业务分配共享内存池,分布式内存系统可以进行内存信息同步。目前,可以在分布式内存系统中设置管理节点。内存资源节点可以统计本地的内存信息并向管理节点发送内存信息。其中,内存信息例如可以包括本地内存的使用情况、本地内存的剩余情况和本地内存的消耗速率等信息。管理节点可以接收多个内存资源节点的内存信息并进行统计,然后分别向每个内存资源节点发送统计后的内存信息。这样,分布式内存系统中每个内存资源节点可以获取到其他内存资源节点内存信息,从而根据其他内存资源节点的内存信息为业务分配内存。也就是说,目前通过管理节点中转内存信息,实现了分布式内存系统的内存信息同步。
例如,在图1所示的应用场景中,管理节点用于实现内存资源节点1、内存资源节点2、内存资源节点3和内存资源节点4的内存信息同步。具体地,管理节点可以接收内存资源节点1的内存信息、内存资源节点2的内存信息、内存资源节点3的内存信息和内存资源节点4的内存信息。管理节点还可以向内存资源节点1发送内存资源节点2的内存信息、内存资源节点3的内存信息和内存资源节点4的内存信息、向内存资源节点2发送内存资源节点1的内存信息、内存资源节点3的内存信息和内存资源节点4的内存信息、向内存资源节点3发送内存资源节点1的内存信息、内存资源节点2的内存信息和内存资源节点4的内存信息,向内存资源节点4发送内存资源节点1的内存信息、内存资源节点2的内存信息和内存资源节点3的内存信息。
但是,由于内存信息同步基于管理节点实现,管理节点的性能和规模可能影响内存信息同步的效率,进而影响到分布式内存系统的正常运行。
例如,随着分布式内存系统的发展,内存资源节点中内存消耗速度逐渐增加,分布式内存系统对于内存信息同步的速度的要求越来越高。根据上文介绍可知,每次内存信息同步,都需要管理节点接收多个内存资源节点发送的内存信息,并向多个内存资源节点发送内存信息。这样,内存信息同步的速度越快,管理节点的读写频率也就越高,管理节点处理的数据量也就越大。如果内存信息同步所需的资源量超过管理节点能够提供的最大资源量,可能导致分布式内存系统无法完成内存信息同步,影响分布式内存系统的正常运行,影响业务的正常运行。
下面结合以图1所示应用场景,以管理节点的输入/输出(Input/Output,I/O)资源为例进行说明。在一次内存信息同步中,管理节点需进行四次数据的写入,每次写入用于写入一个内存资源节点的内存信息。另外,管理节点还需要进行四次数据的发送,每次向一个内存资源节点发送其他三个内存资源节点的内存信息。也就是说,内存信息同步需要管理节点进行四次写入和四次读取。这样,如果分布式内存系统需要在单位时间内进行N次内存信息同步(N为正整数),那么管理节点就需要在单位时间内进行4N写入和4N次读取。显然,随着N的增加,管理节点写入数据和读取数据的次数越来越多。在N较大的情况下,管理节点的I/O压力较大。并且,显然,随着管理节点所管理的内存资源节点的数量的增多,管理节点的I/O压力会进一步增大。
如果管理节点在单位时间内需要处理的I/O数量超过了管理节点在单位时间内能够处理的最大I/O数量,那么管理节点可能会丢弃部分未处理的内存资源节点的内存信息。这样,分布式内存系统中的部分内存资源节点无法进行内存资源同步。那么接收到新的计算任务时,可能无法合理地均衡分布式内存系统的内存资源,导致部分计算任务分配不均,分布式内存系统中部分内存节点的负载较高,出现热点。其中,热点是指分布式内存系统中负载显著高于其他内存资源节点的内存资源节点。
另外,如果分布式内存系统的规模发生改变,分布式内存系统中的内存资源节点的数量会发生改变。但是如果管理节点的数量或处理能力没有随着分布式存储系统的规模及时调整,会导致分布式内存系统的管理资源需求与实际的管理资源不匹配,影响分布式内存系统的正常运行。
基于此,本申请实施例提供了一种分布式内存系统。该分布式内存系统包括N个内存资源节点(N为大于1的正整数)。不同的内存资源节点之间可以传递内存信息,从而在不经过管理节点的条件下进行内存信息同步。具体地,对于分布式内存系统中的第一节点,可以通过分布式内存系统中的第二节点获取分布式内存系统中其他节点的内存信息。这样,第一节点可以获取到分布式内存系统对应的共享内存池的信息,以便基于共享内存池的信息为业务分配共享内存池中的内存。如此,由于无需管理节点进行内存信息同步,自然不会受到管理节点的性能的限制。即使分布式内存系统的规模扩大或者内存消耗的速度增加,也能使即使进行内存信息同步,保证分布式内存系统的正常运行。
可以理解的是,上述“第一节点”,以及下文中的各个节点,为分布式内存系统中用于提供内存资源的内存资源节点。在下文介绍中,内存资源节点被简称为节点。
可选地,本申请实施例提供的分布式内存系统可以如图2所示。在图2所示的分布式内存系统中,包括节点1、节点2和节点3。节点1、节点2和节点3相互连接。节点1可以通过节点2获取节点2的内存信息和节点3的内存信息并存储。如果有需要处理的待处理业务时,节点1可以根据节点2的内存信息和节点3的内存信息,为待处理业务分配内存资源。即,节点1可以根据节点2的内存信息,确定向节点2发送的待处理业务的相关数据,根据节点3的内存信息,确定向节点3发送的待处理业务的相关数据。然后,节点1分别向节点2的内存和节点3的内存中写入对应的数据,以使节点2和节点3对待处理业务进行处理。
另外,本申请实施例还提供了一种分布式内存管理方法。该方法可以应用于分布式内存系统。分布式内存系统中包括N个节点(N为大于1的正整数)。N个节点中包括第一节点和第二节点。那么第一节点可以通过第二节点获取N个节点中除第一节点以外其他节点的内存信息,从而得到分布式内存系统的共享内存储的信息。接着,第一节点可以基于共享内存池的内存信息为业务分配共享内存池中的内存。
另外,如果N个节点中还包括第三节点,那么第一节点可以向第三节点发送内存信息。其中,第一节点向第三节点发送的内存信息包括第二节点的内存信息和第一节点的内存信息。这样,第三节点可以通过第一节点获取到分布式内存系统中除了第三节点以外其他节点的内存信息。
即,图2所示的分布式内存系统可以执行上述分布式内存管理同步方法,以实现分布式内存系统的内存信息同步。
进一步地,本申请实施例还提供了一种应用于节点的信息传递的方法。具体地,在实现本申请实施例提供的内存信息管理方法时,分布式内存系统中的节点可以执行上述信息传递方法。通过执行该信息传递的方法,分布式内存系统中的节点可以获取其他节点的内存信息,实现分布式内存系统的信息同步。
具体地,在执行本申请实施例提供的信息同步方法时,分布式内存系统的第一节点中的信息传递装置可以执行以下步骤:首先,第一节点中的信息传递装置可以接收第二节点发送的第一内存信息。第一资源信息可以包括第二节点的内存信息。接着,信息传递装置可以根据第一信息传递路径确定第三节点,并向第三节点发送第二内存信息。其中,第一信息传递路径为分布式内存系统中用于内存信息同步的信息传递路径,第一信息传递路径指示第二节点为第一节点的上游节点,且第一节点为第三节点的上游节点。第二内存信息可以包括第一节点的内存信息和第三节点的内存信息。在内存信息从第二节点经第一节点传输到第三节点的过程中,第一节点将自身的内存信息添加到传递的内存信息中。也就是说,随着内存信息沿着第一信息传递路径的传输,途径的节点可以将自身的内存信息发送给下游的节点。第一信息传递路径的尾节点可以接收到第一信息传递路径上每个节点的内存信息。可见,如果在分布式内存系统中部署多条信息传递路径,并进行多轮内存信息的传递,可以将节点的内存信息发送到任一其他节点,完成分布式内存系统的内存信息同步。通过节点之间的信息传递,以去中心化的方式在不依赖管理节点的基础上实现了内存信息同步。
作为一种示例,上述信息传递装置可以被部署于分布式内存系统中的内存资源节点,用于实现分布式内存系统的内存信息同步。例如,在图3所示的应用场景中,信息传递装置110具体可以应用于分布式内存系统中的第一节点100。并且,该分布式内存系统还包括第二节点200和第三节点300。信息传递装置110可以用于分布式内存系统100的内存信息同步。另外,除了信息传递装置110以外,第一节点还可以包括分配装置,分配装置用于根据分布式内存系统的共享内存池的信息为业务分配共享内存池中的内存。可选地,所述分配装置可以属于信息传递装置110,或者,分配装置可以是独立于信息传递装置110的装置。例如,分配装置可以运行于第一节点100的DPU。
可选地,上述包括第一节点100的分布式内存系统可以包括管理节点,也可以不包括管理节点。如果分布式内存系统包括管理节点,该管理节点不用于分布式内存系统的内存信息同步。为了便于说明,下文介绍中将内存资源节点简称为节点。
作为一种可能的实现,为了提高内存信息同步的速度,分布式内存系统中的节点可以包括DPU。本申请实施例提供的技术方案可以基于节点中的DPU实现。其中,所述DPU例如可以是远程直接数据存取(remote direct memory access,RDMA)网卡等模块。
实际应用时,信息传递装置110可以包括接收模块111和发送模块112。其中,接收模块111用于接收第二节点200发送的第一内存信息,第一内存信息中包括第二节点的内存信息。发送模块112用于根据第一信息传递路径向第三节点300发送第二内存信息。第二内存信息包括第二节点的内存信息和第一节点的内存信息。这样,第一节点100可以接收第一信息传递路径上的上游节点(例如第二节点200)的内存信息,并向第一信息传递路径上的下游节点(例如第三节点300)发送本地的内存信息和上游节点的内存信息。如此,沿第一信息传递路径传递内存信息,实现了分布式内存系统的内存信息同步。
实际应用时,上述信息传递装置可以通过软件实现,或者可以通过硬件实现。
信息传递装置作为软件功能单元的一种举例,可以包括运行在计算实例上的代码。其中,计算实例可以包括物理主机(计算设备)、虚拟机、容器中的至少一种。进一步地,上述计算实例可以是一台或者多台。例如,信息传递装置可以包括运行在多个主机/虚拟机/容器上的代码。需要说明的是,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的区域(region)中,也可以分布在不同的region中。进一步地,用于运行该代码的多个主机/虚拟机/容器可以分布在相同的可用区(availability zone,AZ)中,也可以分布在不同的AZ中,每个AZ包括一个数据中心或多个地理位置相近的数据中心。其中,通常一个region可以包括多个AZ。
同样,用于运行该代码的多个主机/虚拟机/容器可以分布在同一个虚拟私有云(virtual private cloud,VPC)中,也可以分布在多个VPC中。其中,通常一个VPC设置在一个region内,同一region内两个VPC之间,以及不同region的VPC之间跨区通信需在每个VPC内设置通信网关,经通信网关实现VPC之间的互连。
信息传递装置作为硬件功能单元的一种举例,信息传递装置可以包括至少一个计算设备,如服务器等。或者,信息传递装置也可以是利用专用集成电路(application-specific integrated circuit,ASIC)实现、或可编程逻辑器件(programmable logicdevice,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complexprogrammable logical device,CPLD)、现场可编程门阵列(field-programmable gatearray,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
例如,在一些可能的实现方式中,信息传递装置可以集成在分布式内存系统中节点的网卡中。具体地,可以在节点的网卡中建立存储单元和逻辑处理单元。逻辑处理单元用于接收其他节点发送的内存信息,并将内存信息更新到网卡的存储单元中。另外,还可以统计本节点的内存信息,并将本节点的内存信息存储到信息表中。在向其他节点发送内存信息时,逻辑处理单元可以从信息表中读取内存信息并向其他节点发送。另外,在节点的处理器单元使用本节点的内存信息时,可以从网卡的存储单元中查询本节点的内存信息。
信息传递装置包括的多个计算设备可以分布在相同的region中,也可以分布在不同的region中。信息传递装置包括的多个计算设备可以分布在相同的AZ中,也可以分布在不同的AZ中。同样,信息传递装置包括的多个计算设备可以分布在同一个VPC中,也可以分布在多个VPC中。其中,所述多个计算设备可以是服务器、ASIC、PLD、CPLD、FPGA和GAL等计算设备的任意组合。
接下来,对信息传递过程的各种非限定性的具体实施方式进行详细描述。
参阅图4,为本申请实施例中信息传递的方法的一种流程示意图。该方法可以应用于上述图2所示的应用场景中,或者也可以是应用于其它可适用的应用场景中。下面以应用于图2所示的应用场景为例进行说明。需要说明的是,图2所示的应用场景中,信息传递装置110不仅包括接收模块111和发送模块112,还可以进一步包括获取模块113和存储模块114。并且,各个模块的功能,具体参见下述实施例的相关描述。
图4所示的信息传递的方法具体可以包括:
S401:接收模块111接收第二节点发送的第一内存信息。
接收模块111可以接收第二节点200发送的第一内存信息。第一内存信息包括第二节点200的内存信息。可选地,第二节点200的内存信息用于指示第二节点200的内存被使用的情况,以及第二节点200提供内存资源的能力。例如,第二节点200的内存信息可以包括第二节点200的剩余内存资源量、第二节点200中已被占用的内存资源量和第二节点200的内存消耗速率等。
在本申请实施例中,第二节点200和获取模块111所属的第一节点100均属于第一信息传递路径。在第一信息传递路径中,第二节点200为第一节点100的上游节点。其中,节点的上游和下游关系用于指示内存信息传递的关系。也就是说第二节点200可以向第一信息传递路径上第二节点200在的下游节点,例如第一节点100,发送第二节点200的内存信息。
除了第二节点200的内存信息以外,第一内存信息还可以包括其他节点的内存信息。其中,所述其他节点的内存信息,是指第一信息传递路径上第二节点的上游节点的内存信息。第二节点的上游节点的内存信息是第二节点的上游节点向第二节点发送的。
也就是说,如果第一信息传递路径上第二节点200的上游节点(本段内简称上游节点)向第二节点200发送了自身的内存信息,那么第二节点200在接收到上游节点的内存信息之后,可以将第二节点200的内存信息与上游节点的内存信息整合为第一内存信息,并向第一节点100发送。
在本实施例中,如果第一信息传递路径上存在其他节点位于第二节点200和第一节点100之间,那么第一节点接收到的内存信息中还可以包括这些节点的内存信息。也就是说,如果第一信息传递路径上第二节点200和第一节点100之间还存在N个节点(N为大于1的正整数),那么第二节点可以向N个节点中首个节点发送第二节点的内存信息。上述首个节点可以向第二个节点发送第二节点的内存信息和本节点的内存信息。N个节点中第i个节点(i为大于1且小于N的正整数)在接收到第i-1个节点发送的内存信息之后,可以将接收到的内存信息与第i个节点的内存信息进行整合,并向第i+1个节点发送整合后的内存信息。这样,在第一节点100接收到的内存信息中,既包括第二节点200的内存信息,也包括第一路径上第二节点200和第一节点100之间的N个节点的内存信息。
可以理解的是,在上述介绍中,第二节点200向首个节点发送的内存信息还可以包括第二节点200在第一信息传递路径上的上游节点的内存信息。并且,第二节点200和第一节点100之间的N个节点的顺序根据第一信息传递路径所指示的上下游关系确定。即第i个节点为第i-1个节点的下游节点,第i个节点为第i+1个节点的上游节点。
作为一种可能的实现,在接收到第二节点200发送的第一内存信息之后,接收模块111可以向发送模块112发送第一内存信息。作为一种其他可能的实现,接收模块111可以将接收到的内存信息存储到存储模块114,以便发送模块112从存储模块114中读取内存信息。
S402:发送模块112根据第一信息传递路径向第三节点300发送第二内存信息。
在获取到接收模块111接收到的第一内存信息之后,发送模块112可以根据第一信息传递路径向第三节点300发送第二内存信息。其中,第三节点300在第一信息传递路径上为第一节点100的下游节点。即,在第一信息传递路径上,第二节点200为第一节点100的上游节点,第一节点100为第三节点300的上游节点。
在本申请实施例中,第二内存信息包括第二节点200的内存信息和第一节点100的内存信息。其中,第二内存信息中第二节点200的内存信息是从第一内存信息中得到的,第一节点100的内存信息可以是第一节点100从本地获取的。可选地,上述获取第一节点100的内存信息的动作可以由获取模块113执行。
也就是说,在接收到第二节点200发送的第一内存信息之后,获取模块113可以获取本地的内存信息,并将本地的内存信息与接收到的第一内存信息整合,得到第二内存信息。再由发送模块112向第一信息传递路径上第一节点100的下游节点(例如第三节点300)发送。
根据前文介绍可知,接收模块111可以将接收到的第一内存信息存储在存储模块114中。相应地,在获取到第一节点100的内存信息之后,获取模块113可以将存储模块114中存储的内存信息更新为第二内存信息。例如,在一些可能的实现方式中,第一内存信息不包括第一节点的内存信息,那么获取模块113可以将获取到的第一节点100的内存信息存储到存储模块114中。存储模块114中存储的内存信息为第二内存信息。
在一些其他可能的实现方式中,第一内存信息中包括第一节点100的内存信息。而第一内存信息所包括的第一节点100的内存信息为第一节点100之前的内存信息。因此,为了提高内存信息同步的实时性,获取模块113可以并利用新获取的第一节点100的内存信息,替代第一内存信息中第一节点100的内存信息,得到第二内存信息。关于第一内存信息包括第一节点100的内存信息的介绍可以参见后文,这里不再赘述。
需要说明的是,上述“在接收到第二节点200发送的第一内存信息之后”只表示发送第二内存信息和接收第一内存信息之间的先后关系,并非限定示第二内存信息的发送是由第一内存信息的接收触发的。在本申请实施例中,发送模块112向第三节点300发送第二内存信息的触发可以包括但不限于以下三种实现方式:
实现方式一:发送模块112基于周期任务向第三节点300发送第二内存信息。
在第一种可能的实现方式中,可以在信息传递装置100中部署周期任务。周期任务用于周期性触发发送模块112发向第三节点300发送第二内存信息。发送模块112向第三节点300发送第二内存信息是由周期任务触发的,而非接收模块111接收到第一内存信息触发的。也就是说,图4所示实施例中的步骤S401和S402之间可以不存在逻辑关系。
可选地,接收模块111在接收到第一内存信息之后,可以将第一内存信息存储到存储模块114中。在周期任务触发之后,获取模块113可以获取第一节点100的内存信息,并根据第一节点100的内存信息更新存储模块114中存储的内存信息,得到第二内存信息。接着,发送模块112可以从存储模块114中读取第二内存信息,并向第三节点300发送第二内存信息。
在一些可能的应用场景中,例如内存信息同步的首个周期中,接收模块111没有接收到第二节点200发送的内存信息,那么发送模块112向第三节点300发送的内存信息包括第一节点100的内存信息,不包括第二节点200的内存信息。也就是说,即使接收模块111未接收到第一内存信息,在周期任务触发之后,获取模块113也可以获取第一节点100的内存信息并存储到存储模块114中。发送模块112读取存储模块114中存储的内存信息并向第三节点300发送。
可选地,为了提高分布式内存系统内存信息同步的速度,可以将周期任务的触发周期设置的较短,例如可以设置周期任务的触发周期为数微秒(μs,microsecond)到数十μs之间。
实现方式二:发送模块112基于第一信息传递路径上第一节点110的上游节点发送的内存信息,向第三节点300发送第二内存信息。
在第二种可能的实现方式中,发送模块112在第一节点100接收到第一信息传递路径上第一节点100的上游节点发送的内存信息之后,向第三节点300发送第二内存信息。即,在接收到其他节点发送的内存信息之后,第一节点100根据发送该内存信息的节点所属的信息传递路径,确定下游节点,并向下游节点发送更新后的内存信息。
也就是说,在接收到了第一内存信息之后,第一节点100可以根据第一内存信息确定第一信息传递路径,然后从第一信息传递路径上找到第一节点100的下游节点(例如第三节点300)。然后,第一节点100向第三节点发送第二内存信息。
例如,第二节点200还可以向第一节点100发送第一信息传递路径的标识和/或第二节点200的标识,以便第一节点100根据第一信息传递路径的标识和/或第二节点200的标识确定第一信息传递路径。这样,在确定了第一信息传递路径之后,发送模块112可以向第一信息传递路径上作为第一节点100的下游节点的第三节点300发送第二内存信息。
可以理解的是,发送模块112还可以向第三节点300发送第一信息传递路径的标识和/或节点100的标识。
实现方式三:发送模块112基于任意节点发送的内存信息,向第三节点300发送第二内存信息。
在第三种可能的实现方式中,发送模块113在第一节点100接收到任意其他节点发送的内存信息之后,向第三节点300发送第二内存信息。也就是说,如果分布式内存系统中存在多条信息传递路径,且第一节点100属于至少两条信息传递路径,那么在接收到任一信息传递路径上第一节点100的上游节点发送的内存信息之后,发送模块112可以分别向每条信息传递路径上第一节点100的下游节点发送第二内存信息。
例如,假设第一节点100还属于第二信息传递路径。第二信息传递路径上第四节点为第一节点100的上游节点。那么在接收到第四节点向第一节点100发送的第三内存信息之后,第一节点100可以向第三节点100发送第三内存信息,以及,第一节点100还可以向第二信息传递路径上第一节点100的下游节点发送第三内存信息。另外,在接收到第二节点200发送的第一内存信息之后,第一节点还可以向第二信息传递路径上第一节点100的下游节点发送第二内存信息。关于第二信息传递路径及其他的介绍可以参见下文,这里不再赘述。
在上述介绍中,第一节点100可以接收第一信息传递路径上的上游节点(即第二节点200)发送的内存信息,第一节点100还可以向第一信息传递路径上的下游节点(即第三节点300)发送自身的内存信息和上游节点的内存信息。这样,随着内存信息沿着第一信息传递路径的传输,途径的节点可以将自身的内存信息发送给下游的节点。第一信息传递路径的尾节点可以接收到第一信息传递路径上每个节点的内存信息。可见,如果在分布式内存系统中部署多条信息传递路径,并进行多轮内存信息的传递,可以将节点的内存信息发送到任一其他节点,完成分布式内存系统的内存信息同步。通过节点之间的信息传递,以去中心化的思想在不依赖管理节点的基础上实现了内存信息同步。如此,由于无需管理节点进行内存信息同步,自然不会受到管理节点的性能的限制。即使分布式内存系统的规模扩大或者内存消耗的速度增加,也能使即使进行内存信息同步,保证分布式内存系统的正常运行。
根据前文介绍可知,分布式内存系统的内存信息同步是指将分布式内存系统中每个节点的内存信息通告给其他节点。为此,接收模块111还可以接收除了第一信息路径传递路径上第一节点100的上游节点以外其他节点的内存信息。也就是说,第一节点可以通过第二节点获取分布式内存系统中除第一节点外的其他节点的内存信息。
为了使得接收模块111能够接收除了第一信息路径传递路径上第一节点100的上游节点以外其他节点的内存信息,本申请提供了以下多种实现方式。下面分别进行介绍。可以理解的是,下文所述的实现方式一、实现方式二和实现方式三仅作为示例。实际应用时,也可以将下文所述的三种实现方式混合使用,或者通过其他实现方式进行内存信息同步。
实现方式一:在分布式内存系统中建立反向的信息传递路径。
在第一种可能的实现方式中,可以在分布式内存系统中建立反向的信息传递路径。也就是说,分布式内存系统中还包括一条与第一信息传递路径方向相反的信息传递路径。这样,第一信息传递路径上第一节点100的下游节点,在另一条信息传递路径上为第一节点100的上游节点。
在内存信息同步时,节点的内存信息可以沿两条信息传递路径并行传递。第一节点100既可以接收到第一信息传递路径上第一节点100的上游节点的内存信息,又可以接收到第一信息传递路径上第一节点100的下游节点的内存信息。这样,第一节点100可以接收到第一信息传递路径上每个节点的内存信息。可见,随着内存信息沿着两条方向相反的信息传递路径分别传递,第一信息传递路径上每个节点都可以接收到其他节点的内存信息。如此,实现了分布式内存系统的内存信息同步。
可以理解的是,如果分布式内存系统中仅存在第一信息传递路径和与第一信息传递路径方向相反的两条信息传递路径,那么第一信息传递路径上可以包括分布式内存系统中全部需要进行内存信息同步的内存资源节点。
实现方式二:在分布式内存系统中建立多条网状结构的信息传递路径。
在第二种可能的实现方式中,可以在分布式内存系统中建立多条信息传递路径,且多条信息传递路径组成网状结构。这样,节点的内存信息在分布式内存系统中可以延网络传递,从而到达其他的节点,实现了分布式内存系统的内存信息同步
实现方式三:在分布式内存系统中建立环形的信息传递路径。
在第三种可能的实现方式中,可以在分布式内存系统中建立至少一条环形的信息传递路径。对于环形的信息传递路径,节点的内存信息可以在信息传递路径中循环传递。这样,由于不存在头节点和尾节点,环形的信息传递路径上某个节点既可以为另一个节点的上游节点,也可以作为该节点的下游节点。如此,内存信息在环形的信息传递路径中循环传递,实现了分布式内存系统的内存信息同步。
也就是说,假设分布式内存系统中包括N个节点,那么这N个节点可以按照内存信息传输的方向构成一个逻辑环。其中,内存信息传输的方向是指前述信息传递路径所指示的方向,逻辑环是指信息传递路径在逻辑上为首尾相接的环形。
即,对于逻辑环上的第i个节点(i为大于1且小于N的正整数)。第i个节点可以从第i-1个节点接收内存信息。第i个节点所接收的内存信息包括第i-1个节点的内存信息,还可以包括其他节点的内存信息。并且,第i个节点还用于向第i+1个节点发送第i个节点的信息,以及第i节点从第i-1个节点处接收到的内存信息。可选地,如果第i个节点从第i-1个节点处接收到的内存信息包括第i个节点的内存信息,第i个节点可以丢弃从第i-1个节点处接收到的内存信息中第i个节点的内存信息。
结合图3所示的应用场景进行说明。假设第一信息传递路径为环形的信息传递路径,那么第三节点300可以向第一信息传递路径上第三节点300的下游节点发送第三节点300的内存信息。随着第一信息传递路径上各个节点的传递,第三节点300的内存信息被发送到第二节点200,第二节点200可以第三节点300的内存信息添加到第一内存信息中向第一节点100发送。这样,由于第一信息传递路径为环形回路,第三节点300既可以作为第一节点100的下游节点,也可以作为第一节点100的上游节点。如此,内存信息可以在第一信息传递路径中循环传递。第一信息传递路径上的节点构成一个逻辑环,内存信息在逻辑环内按照第一信息传递路径所指示的方向传递。
可以理解的是,如果分布式内存系统仅包括第一信息传递路径一条信息传递路径,那么第一信息传递路径上可以包括分布式内存系统中全部需要进行内存信息同步的内存资源节点。
下面结合说明书附图对环形的信息传递路径做进一步说明。
例如,参见图5,在图5所示的应用场景中,第一信息传递路径包括节点501、节点502、节点503、节点504、节点505、节点506、节点507和节点508。第一信息传递路径指示节点501向节点502直接发送内存信息,指示节点502向节点503直接发送内存信息,指示节点503向节点504直接发送内存信息,指示节点504向节点505直接发送内存信息,指示节点505向节点506直接发送内存信息,指示节点506向节点507直接发送内存信息,指示节点507向节点508直接发送内存信息,指示节点508向节点501直接发送内存信息。
其中,图5所示的应用场景中任一节点均可作为上述介绍中的第一节点100,执行本申请实施例提供的信息传递方法。
根据前文介绍可知,节点可以基于周期任务向下游节点发送内存信息。下面以这种实现方式为例,介绍第一信息传递路径上8个节点进行内存信息同步的过程。其中,图5所示应用场景中每个节点均部署有周期任务,且不同节点部署的周期任务对应的触发周期可以相同。
在周期任务第一次被触发时,节点501可以获取节点501的内存信息,并向节点502发送节点501的内存信息;节点502可以获取节点502的内存信息,并向节点503发送节点52的内存信息;节点503可以获取节点503的内存信息,并向节点504发送节点503的内存信息;节点504可以获取节点545的内存信息,并向节点505发送节点504的内存信息;节点505可以获取节点505的内存信息,并向节点506发送节点505的内存信息;节点506可以获取节点506的内存信息,并向节点507发送节点506的内存信息;节点507可以获取节点507的内存信息,并向节点508发送节点507的内存信息;节点508可以获取节点508的内存信息,并向节点501发送节点508的内存信息。
在周期任务第二次被触发时,节点501可以获取节点501在本周期(后称第二周期)的内存信息,并将节点501在本周期的内存信息,与上一周期(后称第一周期)接收到的、节点508的内存信息发送给节点502。同理,节点502可以获取节点502在第二周期的内存信息,并将节点502在第二周期的内存信息,与第一周期接收到的、节点501的内存信息发送给节点503;节点503可以获取节点503在第二周期的内存信息,并将节点503在第二周期的内存信息,与第一周期接收到的、节点502的内存信息发送给节点505;节点504可以获取节点504在第二周期的内存信息,并将节点504在第二周期的内存信息,与第一周期接收到的、节点503的内存信息发送给节点505;节点505可以获取节点505在第二周期的内存信息,并将节点505在第二周期的内存信息,与第一周期接收到的、节点504的内存信息发送给节点506;节点506可以获取节点506在第二周期的内存信息,并将节点506在第二周期的内存信息,与第一周期接收到的、节点505的内存信息发送给节点507;节点507可以获取节点507在第二周期的内存信息,并将节点507在第二周期的内存信息,与第一周期接收到的、节点506的内存信息发送给节点508;节点508可以获取节点508在第二周期的内存信息,并将节点508在第二周期的内存信息,与第一周期接收到的、节点508的内存信息发送给节点501。
这样,在第二周期结束时,节点501可以接收到节点508发送的,节点507在第一周期的内存信息和节点508在第二周期的内存信息。
在周期任务第三次被触发时,节点501获取节点501在第三周期的内存信息,并将节点501在第三周期的内存信息、节点507在第一周期的内存信息和节点508在第二周期的内存信息发送给节点502。同理,在第三周期结束时,节点501可以接收到节点508发送的,节点506在第一周期的内存信息、节点507在第二周期的内存信息和节点508在第三周期的内存信息。
以此类推,在第四周期结束时,节点501可以接收到节点505在第一周期的内存信息、节点506在第二周期的内存信息、节点507在第三周期的内存信息和节点508在第四周期的内存信息。
在第五周期结束时,节点501可以接收到节点504在第一周期的内存信息、节点505在第二周期的内存信息、节点506在第三周期的内存信息、节点507在第四周期的内存信息和节点508在第五周期的内存信息。
在第六周期结束时,节点501可以接收到节点503在第一周期的内存信息、节点504在第二周期的内存信息、节点505在第三周期的内存信息、节点506在第四周期的内存信息、节点507在第五周期的内存信息和节点508在第六周期的内存信息。
在第七周期结束时,节点501可以接收到节点502在第一周期的内存信息、节点503在第二周期的内存信息、节点504在第三周期的内存信息、节点505在第四周期的内存信息、节点506在第五周期的内存信息、节点507在第六周期的内存信息和节点508在第七周期的内存信息。
在第八周期结束时,节点501可以接收到节点501在第一周期的内存信息、节点502在第二周期的内存信息、节点503在第三周期的内存信息、节点504在第四周期的内存信息、节点505在第五周期的内存信息、节点506在第六周期的内存信息、节点507在第七周期的内存信息和节点508在第八周期的内存信息。
根据前文介绍可知,如果第一内存信息中包括第一节点100的内存信息,信息传递装置110可以更新其中第一节点100的内存信息。那么在第九周期开始时,节点501可以获取节点501的内存信息,并利用新获取的内存信息,覆盖节点501在第八周期接收到的节点501的内存信息,并向节点502发送节点501在第九周期的内存信息、节点502在第二周期的内存信息、节点503在第三周期的内存信息、节点504在第四周期的内存信息、节点505在第五周期的内存信息、节点506在第六周期的内存信息、节点507在第七周期的内存信息和节点508在第八周期的内存信息。
根据上文介绍可知,周期任务的触发周期较短,那么节点的内存信息在几个乃至数十个周期内的变化可以忽略不计。那么在图5所示的应用场景中,在本周期之前八个周期的内存信息可以作为本周期的内存信息使用。也就是说,图5所示实施例中每个节点均可以获取其他节点在本周期的内存信息,实现了分布式存储系统的内存信息同步。
在上述介绍的应用场景中,分布式内存系统的每个节点均可以根据周期任务发送内存信息。在一些其他可能的应用场景中,也可以设置信息传递路径上部分节点根据周期任务发送内存信息,其他节点根据接收到的节点发送内存信息。
可以理解的是,如果分布式内存系统仅包括第一信息传递路径一条信息传递路径,那么第一信息传递路径上可以包括分布式内存系统中全部需要进行内存信息同步的内存资源节点。这样,通过执行上述方法,可以实现分布式内存系统的内存信息同步。
但是,如果分布式内存系统的节点的数量较多,将所有节点均部署在第一信息传递路径上,可能导致节点接收到的内存信息出现滞后,影响内存信息同步的效果。
例如,对于第一节点100接收到的第三节点300的内存信息,是第三节点300发送的,且由第二节点200向第一节点100发送的。假设第三节点300为第一信息传递路径上第一节点100的下一跳节点,那么第一节点100接收到的第三节点300的信息,经过了第一信息传递路径上除第一节点100和第三节点300以外每个节点的传输。假设第一信息传递路径包括N个节点(N为不小于3的正整数),那么第一节点100所接收到的第三节点300的内存信息,需要经过N-2个节点的传输。假设节点通过周期任务触发发送内存信息,那么第一节点100接收到的第三节点300的内存信息,为第N-2个周期之前第三节点300的内存信息。这样,如果N的数量较大,第一节点100接收到的第三节点300的内存信息会出现滞后,影响内存信息同步的效果。
为了解决上述问题,可以控制第一信息传递路径上节点的数量不超过预设阈值。在此基础上,为了实现分布式内存系统的内存信息同步,可以在分布式内存系统中建立多条信息传递路径,并进行跨信息传递路径之间的内存信息交互。
其中,跨信息传递路径的内存信息交互是指将一条信息传递路径上节点的内存信息,发往另一条信息传递路径上的节点。跨信息传递路径的内存信息交互又可以被称为不同逻辑环之间的内存信息交流。也就是说,每条信息传递路径可以构成一个逻辑环。不同的逻辑环之间通过公用节点连接。即,公用节点同时存在两个逻辑环中,用于实现不同的逻辑环之间的内存信息交流。
也就是说,假设第一逻辑环上第i个节点为公用节点,且该节点在逻辑环上为第j节点(i和j为大于1的正整数)。那么该节点可以接收第一逻辑环上第i-1个节点发送的内存信息,以及接收第二逻辑环上第j-1个节点发送的内存信息。另外,该节点还可以向第一逻辑上第i+1个节点发送内存信息,并向第二逻辑环上第j+1个节点发送内存信息。其中,向第一逻辑上第i+1个节点发送的内存信息,以及向第二逻辑环上第j+1个节点发送的内存信息,既包括第一逻辑环上的节点的内存信息,也包括第二逻辑环上节点的内存信息。
例如,对于上述属于第一信息传递路径(和第一逻辑环)的第一节点100,为了实现跨信息路径的内存信息交互,第一节点100还可以属于第二信息传递路径(和第二辑环)。在第二信息传递路径上,第四节点为第一节点100的上游节点,第五节点为第一节点的下游节点。
这样,前述接收模块111还可以接收第四节点发送的第三内存信息,第三内存信息包括第四节点的内存信息,还可以第二信息传递路径上其他节点的内存信息。接着,发送模块112可以向第五节点发送第四内存信息。第四内存信息包括第四节点的内存信息,以及前述第二内存信息。这样,将第一信息传递路径上节点的内存信息(即第二内存信息)发送给第二信息传递路径上的第五节点,实现了跨信息传递路径之间的内存信息交互。
可以理解的是,如果接收模块111还接收了第三内存信息,那么前述步骤S402中向第三节点300发送的第二内存信息中还可以包括第四节点的内存信息。
在本申请实施例中,跨信息传递路径之间的内存信息传递包括但不限于以下两种实现方式。
实现方式一:多条信息传递路径并行传递,并基于关联节点实现跨信息传递路径的内存信息交互。
在第一种可能的实现方式中,可以在信息传递路径上设置关联节点,关联节点同时属于两条或多条信息传递路径。并且,每条信息传递路径之间的信息并行传递。也就是说,第一信息传递路径可以通过第一节点100与第二信息传递路径进行跨信息传递路径的内存信息交互。在第一信息传递路径内的节点进行内存信息交互时,第一节点100可以将第二信息传递路径上节点的内存信息发送给第三节点300,以使第二信息传递路径上节点的内存信息在第一信息传递路径中循环传递。
下面结合说明书附图进行说明。
参见图6,该图为本申请实施例提供的一种应用场景示意图。在图6所示的应用场景中,分布式内存系统包括信息传递路径1和信息传递路径2。其中,信息传递路径1包括节点611、节点612、节点613和节点614,信息传递路径2包括节点611、节点621、节点622和节点623。
在信息传递路径1中,节点611可以向节点612发送内存信息,节点612可以向节点613发送内存信息,节点613可以向节点614发送内存信息,节点614可以向节点611发送内存信息。在信息传递路径2中,节点611可以向节点621发送内存信息,节点621可以向节点622发送内存信息,节点622可以向节点623发送内存信息,节点623可以向节点611发送内存信息。
在接收内存信息时,节点611可以接收到节点614的内存信息,以及节点623的内存信息。那么在发送内存信息时,节点611可以向节点612发送节点623的内存信息,相当于将信息传递路径2中节点的内存信息引入信息传递路径1。节点611还可以向节点621发送节点614的内存信息,相当于将信息传递路径1中节点的内存信息引入信息传递路径2。如此,实现了跨信息传递路径的内存信息交互。
可以理解的是,如果分布式内存系统中节点的数量较多,可以划分多条信息传递路径。例如,假设图6所示的应用场景中新增了3个节点,那么可以将这三个节点和节点622划分到信息传递路径3中,由节点622作为关联节点实现跨信息传递路径的内存信息交互。这样随着节点数量的增加,可以不断在新划分出的信息传递路径的基础上进一步划分新的信息传递路径,以实现跨信息传递路径的内存信息交互。
也就是说,将每条信息传递路径以作为一个环结构,那么通过关联节点可以将多个环进行关联,得到链式结构。
实现方式二:建立层级式的信息传递路径,通过高级的信息传递路径跨信息传递路径的内存信息交互。
在上述实现方式一中,每条信息传递路径可以存在两个节点作为关联节点,分布式内存系统中信息传递路径的拓扑结构呈链型结构,每条信息传递路径可以作为链型结构的一个环结构。但是,随着分布式内存系统中节点的数量的增加,链型结构中环结构的数量增加,上述链型结构仍然会限制内存信息同步的速度。
为此,在第二种实现方式中,可以建立层级式的信息传递路径,从而通过高级的信息传递路径实现跨信息传递路径的内存信息交互。其中,高级的信息传递路径上每个节点均属于低级的信息传递路径。
具体地,分布式内存系统中可以包括多条第一级信息传递路径,每条第一级信息传递路径包括多个节点,且任意两条第一级信息传递路径上不包括相同的节点。另外,分布式内存系统中还包括至少一条第二级信息传递路径。第二级信息传递路径包括多个节点,且第二级信息传递路径上多个节点属于至少两条第一级信息传递路径。任意一条第一级信息传递路径上存在至少一个节点属于第二级信息传递路径。
例如,假设分布式内存系统包括五条第一级信息传递路径,且分布式存储系统包括一条第二级信息传递路径,那么该第二级信息传递路径上每个节点均属于第一级信息传递路径,且每条第一级信息传递路径上至少存在一个节点属于第二级信息传递路径。
可选地,为了避免第二级信息传递路径中节点数量过多,如果分布式内存系统中节点的数量较多,可以在分布式内存系统中设置多条第二级信息传递路径。另外,还可以设置第三级信息传递路径,第三级信息传递路径上每个节点均属于第二级信息传递路径,且每条第二级信息传递路径上至少存在一个节点属于第三级信息传递路径。如果内存系统中节点的数量进一步增多,还可以建立第四级信息传递路径乃至更高级的信息传递路径。这里不再赘述。
下面结合说明书附图进行说明。
参见图7,该图为本申请实施例提供的一种应用场景示意图。在图7所示的应用场景中,分布式内存系统包括信息传递路径1、信息传递路径2、信息传递路径3和信息传递路径4。其中,信息传递路径1、信息传递路径2和信息传递路径3为第一级信息传递路径,信息传递路径4为第二级信息传递路径。信息传递路径1包括节点711、节点712和节点713,信息传递路径2包括节点721、节点722和节点723,信息传递路径3包括节点731、节点732和节点733,信息传递路径4包括节点711、节点721和节点731。
内存信息同步的首个周期中,在信息传递路径1中,节点711向节点712发送节点711的内存信息,节点712向节点713发送节点712的内存信息,节点713向节点711发送节点713的内存信息;在信息传递路径2中,节点721向节点722发送节点721的内存信息,节点722向节点723发送节点722的内存信息,节点723向节点721发送节点723的内存信息;在信息传递路径3中,节点731向节点732发送节点731的内存信息,节点732向节点733发送节点732的内存信息,节点733向节点731发送节点733的内存信息。另外,在信息传递路径4中,节点711向节点721发送节点711的内存信息,节点721向节点731发送节点721的内存信息,节点731向节点711发送节点731的内存信息。
在内存信息同步的第二个周期中,节点711可以分别向节点712和节点721发送节点711的内存信息,以及节点711在首个周期中接收到的内存信息。即,节点711分别向节点712和节点721发送节点711的内存信息、节点731的内存信息和节点713的内存信息。同样,节点721分别向节点722和节点731发送节点721的内存信息、节点711的内存信息和节点723的内存信息。节点731分别向节点722和节点711发送节点731的内存信息、节点721的内存信息和节点733的内存信息。
可见,通过更高级的信息传递路径4,信息传递路径1、信息传递路径2和信息传递路径3中节点的内存信息得到了交互,实现了内存信息的同步。可以理解的是,如果分布式内存系统中节点的数量更多,可以建立多条第一级信息传递路径以及至少一条第二级信息传递路径。
需要说明的是,本实施例中,对于信息传递装置内的各个模块的划分以及功能描述仅作为一种示例。比如,在其他实施例中,接收模块111可以用于执行上述信息传递的方法中的任意步骤,类似的,发送模块112、获取模块113和存储模块114均可以用于执行上述信息传递的方法中的任意步骤,并且,接收模块111、发送模块112、获取模块113和存储模块114负责实现的步骤可根据需要指定,通过接收模块111、发送模块112、获取模块113和存储模块114分别实现信息传递的方法中不同的步骤来实现信息传递装置的全部功能。
上述图4所示实施例中,针对数据检索过程中所涉及到的信息传递装置(包括上述接收模块111、发送模块112、获取模块113和存储模块114)可以是配置于计算设备或者计算设备集群上的软件,并且,通过在计算设备或者计算设备集群上运行该软件,可以使得计算设备或者计算设备集群实现上述信息传递装置所具有的功能。下面,基于硬件设备实现的角度,对数据检索的过程中所涉及的信息传递装置进行详细介绍。
图8示出了一种计算设备的结构示意图,上述信息传递装置可以部署在该计算设备上,该计算设备可以是云环境中的计算设备(如服务器),或边缘环境中的计算设备,或终端设备等具体可以用于实现上述图4所示实施例中接收模块111、发送模块112、获取模块113和存储模块114的功能。
如图8所示,计算设备800包括处理器810、存储器820、通信接口830和总线840。处理器810、存储器820和通信接口830之间通过总线840通信。总线840可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extendedindustry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。通信接口830用于与外部通信,例如接收内存信息和发送内存信息等。
其中,处理器810可以为中央处理器(central processing unit,CPU)、专用集成电路(application specific integrated circuit,ASIC)、图形处理器(graphicsprocessing unit,GPU)或者一个或多个集成电路。处理器810还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,信息传递装置中各个模块的功能可以通过处理器810中的硬件的集成逻辑电路或者软件形式的指令完成。处理器810还可以是通用处理器、数据信号处理器(digital signal process,DSP)、现场可编程逻辑门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件,分立门或者晶体管逻辑器件,分立硬件组件,可以实现或者执行本申请实施例中公开的方法、步骤及逻辑框图。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,结合本申请实施例所公开的方法可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器820,处理器810读取存储器820中的信息,结合其硬件完成信息传递装置中的部分或全部功能。
存储器820可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器820还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,HDD或SSD。
存储器820中存储有可执行代码,处理器810执行该可执行代码以执行前述信息传递装置所执行的方法。
具体地,在实现图4所示实施例的情况下,且图4所示实施例中所描述的接收模块111、发送模块112、获取模块113和存储模块114为通过软件实现的情况下,执行图4中的接收模块111、发送模块112、获取模块113和存储模块114的功能所需的软件或程序代码存储在存储器820中,交互模块201与其它设备的交互通过通信接口830实现,处理器用于执行存储器820中的指令,实现信息传递装置所执行的方法。
图9示出的一种计算设备集群的结构示意图。其中,图9所示的计算设备集群90包括多个计算设备,上述信息传递装置可以分布式地部署在该计算设备集群90中的多个计算设备上。如图9所示,计算设备集群90包括多个计算设备900,每个计算设备900包括存储器920、处理器910、通信接口930以及总线940,其中,存储器920、处理器910、通信接口930通过总线940实现彼此之间的通信连接。
处理器910可以采用CPU、GPU、ASIC或者一个或多个集成电路。处理器910还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,信息传递装置的部分功能可用通过处理器910中的硬件的集成逻辑电路或者软件形式的指令完成。处理器910还可以是DSP、FPGA、通用处理器、其他可编程逻辑器件,分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的部分方法、步骤及逻辑框图。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器920,在每个计算设备900中,处理器910读取存储器920中的信息,结合其硬件可以完成信息传递装置的部分功能。
存储器920可以包括ROM、RAM、静态存储设备、动态存储设备、硬盘(例如SSD、HDD)等。存储器920可以存储程序代码,例如,用于实现接收模块111的部分或者全部程序代码、用于实现发送模块112的部分或者全部程序代码、用于获取模块113的部分或者全部程序代码、用于实现存储模块114的部分或者全部程序代码等。针对每个计算设备900,当存储器920中存储的程序代码被处理器910执行时,处理器910基于通信接口930执行信息传递装置所执行的部分方法,如其中一部分计算设备900可以用于执行上述接收模块111和发送模块112所执行的方法,另一部分计算设备900用于执行上述获取模块113和存储模块114所执行的方法。存储器920还可以存储数据,例如:处理器910在执行过程中产生的中间数据或结果数据,例如,上述第一内存信息、第二内存信息和第一节点的内存信息等。
每个计算设备900中的通信接口903用于与外部通信,例如与其它计算设备900进行交互等。
总线940可以是外设部件互连标准总线或扩展工业标准结构总线等。为便于表示,图9中每个计算设备900内的总线940仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
上述多个计算设备900之间通过通信网络建立通信通路,以实现信息传递装置的功能。任一计算设备可以是云环境中的计算设备(例如,服务器),或边缘环境中的计算设备,或终端设备。
或者,图9所示的计算设备集群也可以作为分布式内存系统,执行本申请实施例提供的内存信息同步方法。在这种实现方式中,计算设备集群90中每个计算设备900可以作为分布式内存系统中的一个节点,执行本申请实施例提供的信息传递方法。
此外,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在一个或者多个计算设备上运行时,使得该一个或者多个计算设备执行上述实施例信息传递装置的各个模块所执行的方法。
此外,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品被一个或者多个计算设备执行时,所述一个或者多个计算设备执行前述信息传递的方法中的任一方法。该计算机程序产品可以为一个软件安装包,在需要使用前述信息传递的方法的任一方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。

Claims (14)

1.一种分布式内存系统,其特征在于,所述分布式内存系统包括N个节点,所述N个节点的内存构成共享内存池,所述N大于或等于2;
所述N个节点中的第一节点用于通过所述N个节点中的第二节点获取所述N个节点中除所述第一节点外的N-1个节点的内存信息,所述N-1个节点的内存信息与所述第一节点的内存信息构成所述共享内存池的信息,所述第一节点为所述N个节点中的任意一个节点;
所述第一节点还用于基于所述共享内存池的信息为业务分配所述共享内存池中的内存。
2.根据权利要求1所述的系统,其特征在于,所述N个节点中的每个节点包括数据处理单元DPU,所述第一节点的DPU,用于通过所述第二节点的DPU获取所述N个节点中除所述第一节点外的N-1个节点的内存信息。
3.根据权利要求1所述的系统,其特征在于,所述第二节点包括所述N-1个节点中的至少一个节点。
4.根据权利要求1-3任一项所述的系统,所述N个节点按照内存信息传输的方向构成一个逻辑环,所述N个节点中的第i个节点用于将所述第i个节点的内存信息及从所述第i-1个节点接收的内存信息发送至第i+1个节点,直到每个节点都包括所述N个节点的内存信息,其中,所述第i-1个节点为所述逻辑环中所述第i个节点的上一个节点,i为大于1且小于N的正整数。
5.根据权利要求1-3任一项所述的系统,其特征在于,所述N个节点分成M组节点,每组节点按照内存信息传输的方向构成一个逻辑环,每个逻辑环中包括至少一个公用节点,所述公用节点同时存在两个逻辑环中,所述M个逻辑环中的第一逻辑环中的第i个节点用于将所述第i个节点的内存信息及从所述第i-1个节点接收的内存信息发送至第i+1个节点,直到所述第一逻辑环中的每个节点都包括所述第一逻辑环中的所有节点的内存信息,所述第一逻辑环中的公用节点用于将所述第一逻辑环中的所有节点的内存信息传输至与第二逻辑环的节点中,直到所述N个节点中的每个节点都包括所述N个节点的内存信息,所述第一逻辑环为所述M个逻辑环中的任意一个逻辑环,所述第一逻辑环与所述第二逻辑环包括相同的所述公用节点,i为大于1且小于N的正整数。
6.一种分布式内存管理方法,其特征在于,所述方法应用于分布式内存系统,所述分布式内存系统包括N个节点,所述N个节点包括第一节点和第二节点,所述方法包括:
所述N个节点中的第一节点通过所述N个节点中的第二节点获取所述N个节点中除所述第一节点外的N-1个节点的内存信息,所述N-1个节点的内存信息与所述第一节点的内存信息构成所述共享内存池的信息,所述第一节点为所述N个节点中的任意一个节点;
所述第一节点基于所述共享内存池的信息为业务分配所述共享内存池中的内存。
7.根据权利要求6所述的方法,其特征在于,所述N个节点中的每个节点包括数据处理单元DPU,所述共享内存池的信息存储在所述第一节点的DPU中,
所述N个节点中的第一节点通过所述N个节点中的第二节点获取所述N个节点中除所述第一节点外的N-1个节点的内存信息包括:
所述第一节点的DPU通过所述第二节点的DPU获取所述N个节点中除所述第一节点外的N-1个节点的内存信息。
8.根据权利要求6或7所述的方法,其特征在于,所述第二节点包括所述N-1个节点中的至少一个节点。
9.根据权利要求6至8任意一项所述的方法,所述N个节点按照内存信息传输的方向构成一个逻辑环,所述第一节点为所述N个节点中的第i个节点,所述第二节点为所述N个节点中的第i-1个节点;
所述N个节点中的第一节点通过所述N个节点中的第二节点获取所述N个节点中除所述第一节点外的N-1个节点的内存信息包括:
所述第i-1个节点周期性地发送第i-1个节点的内存信息及所述i-1个节点中的其他节点的内存信息至所述第i个节点;
所述第i个节点接收所述第i-1个节点的内存信息及所述i-1个节点中的其他节点的内存信息;
所述第i个节点周期性地将所接收的内存信息及所述第i个节点的内存信息发送至第i+1个节点,其中i为大于1且小于N的正整数。
10.根据权利要求6至8任意一项所述的方法,其特征在于,所述N个节点分成M组节点,每组节点按照内存信息传输的方向构成一个逻辑环,每个逻辑环中包括至少一个公用节点,所述公用节点同时存在两个逻辑环中,所述第一节点为所述M个逻辑环中的第一逻辑环中的第i个节点,所述第二节点为所述第一逻辑环中的第i-1个节点,
所述N个节点中的第一节点通过所述N个节点中的第二节点获取所述N个节点中除所述第一节点外的N-1个节点的内存信息包括:
所述第i个节点接收所述第i个节点接收所述第i-1个节点的内存信息及所述i-1个节点中的其他节点的内存信息;
所述第i个节点周期性地将所接收的内存信息及所述第i个节点的内存信息发送至第i+1个节点,其中i为大于1且小于N的正整数;
当所述第i个节点为公用节点,所述第i个节点周期性地将所接收的内存信息及所述第i个节点的内存信息分别发送至所述第一逻辑环的第i+1个节点,及所述第二逻辑环中的第j+1个节点,所述第一节点在所述第二逻辑环中为第j个节点。
11.一种计算设备集群,其特征在于,所述计算设备集群包括至少一个计算设备,每个计算设备包括处理器以及存储器:
所述存储器用于存储指令;
所述处理器用于根据所述指令,以使得所述计算设备集群执行权利要求6-10中任一项所述的方法。
12.一种芯片,其特征在于,所述芯片包括存储器和处理器,存储器用于存储指令或程序代码,处理器用于从存储器中调用并运行所述指令或程序代码,以执行如权利要求6-10任一项所述的信息传递的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算设备上运行时,使得所述计算设备执行如权利要求6-10任一项所述的方法。
14.一种包含指令的计算机程序产品,当其在计算设备上运行时,使得所述计算设备执行如权利要求6-10任一项所述的方法。
CN202211212936.1A 2022-09-30 2022-09-30 分布式内存系统、分布式内存管理方法、装置及相关设备 Pending CN117851021A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202211212936.1A CN117851021A (zh) 2022-09-30 2022-09-30 分布式内存系统、分布式内存管理方法、装置及相关设备
PCT/CN2023/101055 WO2024066499A1 (zh) 2022-09-30 2023-06-19 分布式内存系统、分布式内存管理方法、装置及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211212936.1A CN117851021A (zh) 2022-09-30 2022-09-30 分布式内存系统、分布式内存管理方法、装置及相关设备

Publications (1)

Publication Number Publication Date
CN117851021A true CN117851021A (zh) 2024-04-09

Family

ID=90475914

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211212936.1A Pending CN117851021A (zh) 2022-09-30 2022-09-30 分布式内存系统、分布式内存管理方法、装置及相关设备

Country Status (2)

Country Link
CN (1) CN117851021A (zh)
WO (1) WO2024066499A1 (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100489815C (zh) * 2007-10-25 2009-05-20 中国科学院计算技术研究所 一种内存共享的系统和装置及方法
CN101207515B (zh) * 2007-12-12 2011-11-30 中兴通讯股份有限公司 一种多机共享内存的处理方法、实现方法和同步方法
CN104793986B (zh) * 2015-05-05 2018-07-31 苏州中晟宏芯信息科技有限公司 一种节点间共享内存的虚拟机迁移方法
WO2017135953A1 (en) * 2016-02-04 2017-08-10 Hewlett Packard Enterprise Development Lp Shared memory access
CN106201742B (zh) * 2016-07-04 2019-09-20 东软医疗系统股份有限公司 一种共享内存管理方法、装置及系统

Also Published As

Publication number Publication date
WO2024066499A1 (zh) 2024-04-04

Similar Documents

Publication Publication Date Title
US10649953B2 (en) Blockchain-based data migration method and apparatus
CN110809760B (zh) 资源池的管理方法、装置、资源池控制单元和通信设备
CN110058940B (zh) 一种多线程环境下的数据处理方法及装置
CN110119304B (zh) 一种中断处理方法、装置及服务器
CN115129621B (zh) 一种内存管理方法、设备、介质及内存管理模块
CN110858162A (zh) 内存管理方法及装置、服务器
US11243714B2 (en) Efficient data movement method for in storage computation
US10599436B2 (en) Data processing method and apparatus, and system
CN106936931A (zh) 分布式锁的实现方法、相关设备及系统
CN108304272B (zh) 一种数据io请求的处理方法及装置
AU2018303662A1 (en) Scalable statistics and analytics mechanisms in cloud networking
CN109783002B (zh) 数据读写方法、管理设备、客户端和存储系统
CN103530253A (zh) 集群多全局缓冲池系统、中心节点、计算节点及管理方法
US9658951B1 (en) Scalable high bandwidth memory in a network device
CN111562883B (zh) 固态硬盘的缓存管理系统、方法、装置
CN115934624B (zh) 多主机远程直接内存访问网络管理的方法、设备及介质
CN117851021A (zh) 分布式内存系统、分布式内存管理方法、装置及相关设备
CN103414756A (zh) 一种任务分发方法、分发节点及系统
CN113328948B (zh) 资源管理方法、装置、网络设备及计算机可读存储介质
CN111679918B (zh) 一种消息传输方法及装置
CN110046040B (zh) 分布式任务处理方法及系统和存储介质
CN115878309A (zh) 资源分配方法、装置、处理核、设备和计算机可读介质
CN115801787B (zh) 路端数据传输方法、装置及电子设备、存储介质
CN110968370B (zh) 一种数据处理方法及装置
US10331550B2 (en) Symmetric addressing

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