CN106776018A - 用于分布式系统的主节点和从节点的并行处理方法和设备 - Google Patents
用于分布式系统的主节点和从节点的并行处理方法和设备 Download PDFInfo
- Publication number
- CN106776018A CN106776018A CN201611092955.XA CN201611092955A CN106776018A CN 106776018 A CN106776018 A CN 106776018A CN 201611092955 A CN201611092955 A CN 201611092955A CN 106776018 A CN106776018 A CN 106776018A
- Authority
- CN
- China
- Prior art keywords
- node
- sub
- data
- line journey
- broadcast
- 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.)
- Granted
Links
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/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
Abstract
提供一种用于分布式系统的主节点和从节点的并行处理方法和设备,其中,主节点的并行处理方法包括:确定多个子线程中的每个子线程所对应的从节点;将每个子线程的线程信息发送到对应的从节点,以使所述对应的从节点根据接收到的线程信息来恢复每个子线程;从所述从节点接收用于指示所述从节点完成所述恢复的通知;向所述从节点发送用于执行恢复的子线程的控制指令。上述用于分布式系统的主节点和从节点的并行处理方法和设备,能够支持在分布式系统上直接运行传统POSIX多线程程序,提高了分布式系统的兼容性。
Description
技术领域
本发明总体说来涉及分布式系统的并行计算领域,更具体地说,涉及一种用于分布式系统的主节点和从节点的并行处理方法和设备。
背景技术
分布式系统通常由多个节点组成,分布式系统的基本思想是用多个节点来协同求解同一问题,即将被求解的问题分解成若干个部分,各部分均由一个独立的节点来并行处理。
目前,主流的分布式并行处理架构通常不能够兼容传统的POSIX(PortableOperating System Interface,可移植操作系统接口)多线程程序,即,无法使传统的POSIX多线程程序直接运行在分布式系统的多个节点上。
发明内容
本发明的示例性实施例在于提供一种用于分布式系统的主节点和从节点的并行处理方法和设备,以解决传统的POSIX多线程程序无法直接运行在分布式系统上的问题。
根据本发明示例性实施例的一方面,提供一种用于分布式系统的主节点的并行处理方法,所述方法包括:确定多个子线程中的每个子线程所对应的从节点;将每个子线程的线程信息发送到对应的从节点,以使所述对应的从节点根据接收到的线程信息来恢复每个子线程;从所述从节点接收用于指示所述从节点完成所述恢复的通知;向所述从节点发送用于执行恢复的子线程的控制指令。
可选地,所述方法可还包括:检测主节点的内核数据结构信息是否有改动;如果所述内核数据结构信息发生改动,则向各从节点发送用于指示节点的内核数据结构信息发生改动的广播,以使各从节点根据所述广播来修改各自节点的内核数据结构信息。
可选地,所述内核数据结构信息可包括子线程的内存映射文件、子线程的线程描述符和子线程的信号列表。
可选地,所述方法可还包括:在主节点控制所述多个子线程停止工作。
可选地,确定多个子线程中的每个子线程所对应的从节点的步骤可包括:根据预定映射关系表确定所述多个子线程中的每个子线程所对应的从节点,或者,由主节点动态为所述多个子线程中的每个子线程分配对应的从节点。
可选地,所述线程信息可包括寄存器状态和线程描述符,所述线程描述符包括任务名和内存状态。
可选地,所述方法可还包括:响应于从任意一个从节点接收的用于读取数据的请求,将所述请求所指示的数据或者所述请求所指示的数据的存储路径发送给所述任意一个从节点。
可选地,所述方法可还包括:根据从任意一个从节点接收的用于数据更新的广播,将主节点中存储的与所述广播所指示的数据对应的数据删除,并将所述广播所指示的数据的存储路径更新为所述任意一个从节点。
可选地,所述方法可还包括:根据从任意一个从节点接收的用于指示节点的内核数据结构信息发生改动的广播,修改主节点的内核数据结构信息。
根据本发明示例性实施例的另一方面,提供一种用于分布式系统的从节点的并行处理方法,所述方法包括:从主节点接收子线程的线程信息;根据接收的所述线程信息恢复所述子线程;向主节点发送用于指示所述从节点完成所述恢复的通知;从主节点接收控制指令;响应于所述控制指令来执行恢复的子线程。
可选地,接收的所述线程信息可包括寄存器状态和线程描述符,所述线程描述符包括任务名和内存状态。
可选地,根据接收的所述线程信息恢复所述子线程的步骤可包括:创建一个新的子线程;将所述寄存器状态、所述任务名和所述内存状态赋值给所述新的子线程,以将所述新的子线程恢复为所述子线程。
可选地,所述方法可还包括:向主节点发送用于读取数据的请求,并从主节点接收所述请求所指示的数据,或者从主节点接收所述请求所指示的数据的存储路径,从所述存储路径指示的节点读取所述数据。
可选地,向主节点发送用于读取数据的请求的步骤可包括:检测本地是否存储了在执行所述子线程过程中所需的数据;如果本地存储了所述数据,则从本地读取所述数据;如果本地没有存储所述数据,则向主节点发送用于读取数据的请求。
可选地,所述方法可还包括:向所有节点发送用于指示数据更新的广播,以使主节点将所述广播所指示的数据的存储路径更新为所述从节点。
可选地,所述方法可还包括:检测所述从节点的内核数据结构信息是否有改动;如果所述内核数据结构信息发生改动,则向所有节点发送用于指示节点的内核数据结构信息发生改动的广播,以使各节点根据所述广播来修改各自节点的内核数据结构信息。
可选地,所述内核数据结构信息可包括子线程的内存映射文件、子线程的线程描述符和子线程的信号列表。
可选地,所述方法可还包括:根据从任意一个节点接收的用于指示节点的内核数据结构信息发生改动的广播,修改所述从节点的内核数据结构信息。
根据本发明示例性实施例的再一方面,提供一种用于分布式系统的主节点的并行处理设备,所述设备包括:线程处理单元,根据预定映射关系表,确定多个子线程中的每个子线程所对应的从节点,并将每个子线程的线程信息发送到对应的从节点,以使所述对应的从节点根据接收到的线程信息来恢复每个子线程;接收单元,从所述从节点接收用于指示所述从节点完成所述恢复的通知;发送单元,向所述从节点发送用于执行恢复的子线程的控制指令。
可选地,所述设备可还包括:检测单元,检测主节点的内核数据结构信息是否有改动,其中,如果所述内核数据结构信息发生改动,则发送单元可向各从节点发送用于指示节点的内核数据结构信息发生改动的广播,以使各从节点根据所述广播来修改各自节点的内核数据结构信息。
可选地,所述内核数据结构信息可包括子线程的内存映射文件、子线程的线程描述符和子线程的信号列表。
可选地,线程处理单元可控制所述多个子线程停止工作。
可选地,线程处理单元可根据预定映射关系表确定所述多个子线程中的每个子线程所对应的从节点,或者,可动态为所述多个子线程中的每个子线程分配对应的从节点。
可选地,所述线程信息可包括寄存器状态和线程描述符,所述线程描述符包括任务名和内存状态。
可选地,发送单元可还响应于从任意一个从节点接收的用于读取数据的请求,将所述请求所指示的数据或者所述请求所指示的数据的存储路径发送给所述任意一个从节点。
可选地,所述设备可还包括:路径更新单元,根据从任意一个从节点接收的用于数据更新的广播,将主节点中存储的与所述广播所指示的数据对应的数据删除,并将所述广播所指示的数据的存储路径更新为所述任意一个从节点。
可选地,所述设备可还包括:内核数据结构更新单元,根据从任意一个从节点接收的用于指示节点的内核数据结构信息发生改动的广播,修改主节点的内核数据结构信息。
根据本发明示例性实施例的再一方面,提供一种用于分布式系统的从节点的并行处理设备,所述设备包括:信息接收单元,从主节点接收子线程的线程信息;线程恢复单元,根据接收的所述线程信息恢复所述子线程;发送单元,向主节点发送用于指示所述从节点完成所述恢复的通知;指令接收单元,从主节点接收控制指令;执行单元,响应于所述控制指令来执行恢复的子线程。
可选地,信息接收单元可接收的所述线程信息包括寄存器状态和线程描述符,所述线程描述符包括任务名和内存状态。
可选地,线程恢复单元可创建一个新的子线程,将所述寄存器状态、所述任务名和所述内存状态赋值给所述新的子线程,以将所述新的子线程恢复为所述子线程。
可选地,发送单元可还向主节点发送用于读取数据的请求,其中,可还包括数据读取单元,从主节点接收所述请求所指示的数据,或者从主节点接收所述请求所指示的数据的存储路径,从所述存储路径指示的节点读取所述数据。
可选地,所述设备可还包括:第一检测单元,检测本地是否存储了在执行所述子线程过程中所需的数据,其中,如果本地存储了所述数据,则数据读取单元可从本地读取所述数据,如果本地没有存储所述数据,则发送单元可向主节点发送用于读取数据的请求。
可选地,发送单元可还向所有节点发送用于指示数据更新的广播,以使主节点将所述广播所指示的数据的存储路径更新为所述从节点。
可选地,所述设备可还包括:第二检测单元,检测所述从节点的内核数据结构信息是否有改动,其中,如果所述内核数据结构信息发生改动,则发送单元可向所有节点发送用于指示节点的内核数据结构信息发生改动的广播,以使各节点根据所述广播来修改各自节点的内核数据结构信息。
可选地,所述内核数据结构信息可包括子线程的内存映射文件、子线程的线程描述符和子线程的信号列表。
可选地,所述设备可还包括:内核数据结构更新单元,根据从任意一个节点接收的用于指示节点的内核数据结构信息发生改动的广播,修改所述从节点的内核数据结构信息。
上述用于分布式系统的主节点和从节点的并行处理方法和设备工作效率高,能够支持在分布式系统上直接运行传统POSIX多线程程序,提高了分布式系统的兼容性。
附图说明
通过下面结合示例性地示出实施例的附图进行的详细描述,本发明示例性实施例的上述和其它目的、特点和优点将会变得更加清楚,其中:
图1示出根据本发明示例性实施例的分布式系统中主节点与从节点之间信息交互流程的示意图;
图2示出根据本发明示例性实施例的分布式系统中读取数据步骤的流程图;
图3示出根据本发明示例性实施例的分布式系统中写数据步骤的流程图;
图4示出根据本发明示例性实施例的用于分布式系统的主节点的并行处理设备的框图;
图5示出根据本发明示例性实施例的用于分布式系统的从节点的并行处理设备的框图。
具体实施方式
现在,将参照附图更充分地描述不同的示例实施例,其中,一些示例性实施例在附图中示出。
应理解,分布式系统可包括主节点和至少一个从节点,例如,可从分布式系统包含的所有节点中选择一个节点作为主节点,分布式系统中除主节点之外的其他节点可作为从节点。在本发明的示例性实施例中将以所述至少一个从节点中的任意一个从节点为例,来详细介绍主节点与从节点之间的信息交互流程。
图1示出根据本发明示例性实施例的分布式系统中主节点与从节点之间信息交互流程的示意图。
参照图1,在步骤S10中,主节点确定多个子线程中的每个子线程所对应的从节点。
例如,所述多个子线程可首先在主节点上加载并运行,然后主节点再将每个子线程分配到对应的从节点,以使所有节点共同工作,来达到并行处理的目的。
在一个示例中,在执行步骤S10之前,主节点可预先设定预定映射关系表,所述预定映射关系表中可包括所述多个子线程与所有从节点之间的映射关系,此时,主节点可根据预定映射关系表,确定每个子线程所对应的从节点(即,确定每个子线程被分配执行的从节点)。
在另一示例中,主节点可动态为所述多个子线程中的每个子线程分配对应的从节点。例如,所述多个子线程可首先在主节点上加载并运行,主节点在各子线程运行过程中,动态的将子线程分配给对应的从节点。
在步骤S20中,主节点将每个子线程的线程信息发送到对应的从节点,以使所述对应的从节点根据接收到的线程信息来恢复每个子线程。
这里,根据本发明示例性实施例的分布式系统中主节点与从节点之间信息交互流程可还包括:主节点控制所述多个子线程停止工作,而由主节点执行的子线程不被分配,继续在主节点运行。
可选地,可在主节点将每个子线程的线程信息发送到对应的从节点之后,控制所述多个子线程停止工作,或者,也可在主节点确定出多个子线程中的每个子线程所对应的从节点之后,控制所述多个子线程停止工作,在控制所述多个子线程停止工作之后,可将所述多个子线程挂起,移出主节点的执行队列,进入主节点的待执行队列中。
在步骤S30中,从节点从主节点接收子线程的线程信息,并根据接收的所述线程信息恢复所述子线程。
作为示例,接收的子线程的线程信息可包括寄存器状态和线程描述符,所述线程描述符可包括任务名和内存状态。
优选地,在本发明示例性实施例中,根据接收的所述线程信息恢复所述子线程的步骤可包括:创建一个新的子线程;将所述寄存器状态、所述任务名和所述内存状态赋值给所述新的子线程,以将所述新的子线程恢复为所述子线程。
在步骤S40中,从节点向主节点发送用于指示所述从节点完成子线程恢复的通知。这里,当从节点完成恢复子线程的操作之后,可向主节点发送用于指示所述从节点完成子线程恢复的通知。
在步骤S50中,主节点判断是否所有从节点均完成子线程恢复任务,即,主节点可确定是否从所有从节点均接收到用于指示从节点完成子线程恢复任务的通知。
如果所有从节点没有均完成子线程恢复任务,则返回步骤S50,继续进行判断。
如果所有从节点均完成子线程恢复任务,则执行步骤S60:主节点向从节点发送用于执行恢复的子线程的控制指令。这里,主节点向所有从节点均发送所述控制指令,作为示例,所述控制指令可指示从节点开始执行对应的子线程。
在步骤S70中,从节点从主节点接收控制指令,并响应于所述控制指令来执行恢复的子线程。
应理解,在分布式系统中主节点和从节点在执行子线程时,还包括读取数据和写数据的操作,下面参照图2来详细描述分布式系统中读取数据步骤的流程。
图2示出根据本发明示例性实施例的分布式系统中读取数据步骤的流程图。
在步骤S201中,从节点检测本地是否存储了在执行子线程过程中所需的数据。
如果从节点检测到本地存储了所述数据,则执行步骤S202:从节点从本地读取所述数据。
如果从节点没有检测到本地存储了所述数据,则执行步骤S203:从节点向主节点发送用于读取数据的请求。
在步骤S204中,主节点响应于从所述从节点接收的用于读取数据的请求,确定所述请求所指示的数据的存储路径,即,确定所述存储路径所指向的节点。
在步骤S205中,主节点确定所述请求所指示的数据的存储路径是否指向主节点。
如果主节点确定所述存储路径指向主节点,则执行步骤S206:主节点将所述请求所指示的数据发送给从节点。
这里,可在主节点中存储了用于执行多个子线程所需的数据,当从节点首次执行与其具有映射关系的子线程时,可从主节点读取所述数据。
如果主节点确定所述存储路径不指向主节点,则执行步骤S207:主节点将所述请求所指示的数据的存储路径发送给从节点。
例如,主节点中可存储一数据结构表,该数据结构表为数据和所述数据的存储路径之间的对应关系表,主节点可根据所述请求所指示的数据从数据结构表中找到与所述数据对应的数据的存储路径,并将找到的存储路径发送给从节点。
这里,仅在主节点中存储该数据结构表,各从节点读取数据时均可向主节点发送用于读取数据的请求,以由主节点响应于该请求来查找数据结构表,从而保证所有节点读取数据的内容一致性。
在步骤S208中,从节点从所述存储路径指示的节点读取所述数据。
应理解,图2所示为从节点在执行子线程过程中读取所需数据的过程,主节点在执行子线程过程中读取所需数据的过程与从节点读取数据的过程类似,例如,主节点可检测本地是否存储了在执行子线程过程中所需的数据,如果主节点检测到本地存储了所述数据,则主节点从本地读取所述数据,如果主节点没有检测到本地存储了所述数据,则主节点通过查找数据结构表确定所述数据的存储路径,并从所述存储路径指示的节点读取所述数据。
下面参照图3来详细描述分布式系统中写数据步骤的流程。
图3示出根据本发明示例性实施例的分布式系统中写数据步骤的流程图。
在步骤S301中,当从节点在执行子线程过程中执行了写数据操作(即,对数据进行了更新,例如,产生了新数据或对数据进行了修改)时,从节点将更新后的数据存储在从节点的本地。
在步骤S302中,从节点向所有节点发送用于指示数据更新的广播。这里,所有节点可指主节点和所述至少一个从节点中除所述从节点之外的其他从节点。
在步骤S303中,主节点检测本地是否存储了所述广播所指示的数据。例如,所述广播所指示的数据可指与从节点更新后的数据对应的更新前的数据。
如果主节点检测到本地存储了所述广播所指示的数据,则执行步骤S304:主节点删除主节点本地存储的所述广播所指示的数据。
这里,如果主节点没有检测到本地存储了所述广播所指示的数据,则可直接执行步骤S305。
在步骤S305中,主节点更新所述广播所指示的数据的存储路径,即,将将所述广播所指示的数据的存储路径更新为指向所述从节点。
例如,主节点可将数据结构表中与所述广播所指示的数据对应的存储路径所指向的节点更新为所述从节点(即,发送所述广播的从节点)。
在步骤S306中,其他从节点接收到所述广播之后,可检测本地是否存储了所述广播所指示的数据。
如果所述其他从节点检测到本地存储了所述广播所指示的数据,则执行步骤S307:所述其他从节点删除本地存储的所述广播所指示的数据。
这里,如果所述其他从节点没有检测到本地存储了所述广播所指示的数据,则所述其他从节点不对接收到的广播进行处理。
应理解,图3所示为从节点在执行子线程过程中写数据的过程,主节点在执行子线程过程中写数据的过程与从节点写数据的过程类似,例如,当主节点在执行子线程过程中执行了写数据操作时,主节点将更新后的数据存储在主节点的本地,并将数据结构表中与所述更新后的数据对应的数据的存储路径更新为指向主节点,此外,主节点还向各从节点发送用于指示数据更新的广播,各从节点响应于所述广播来删除本地存储的所述广播所指示的数据。这里,图3所示的节点写数据过程,可确保数据仅存储在一个节点上,主节点中存储了最新的数据的存储路径,有效确保所有节点读写数据的同步。
应理解,在分布式系统中主节点和从节点在执行子线程时,节点本地的内核数据结构信息可能发生改动,下面来详细介绍修改内核数据结构信息的过程。
例如,以主节点为例,可检测主节点本地的内核数据结构信息是否有改动,如果主节点的内核数据结构信息发生改动,则向各从节点发送用于指示节点的内核数据结构信息发生改动的广播,作为示例,所述内核数据结构信息可包括子线程的内存映射文件、子线程的线程描述符和子线程的信号列表,所述广播中携带了指示内核数据结构信息中包含的哪部分内容被改动的信息,各从节点在接收到所述广播之后,对所述广播进行解析,并在节点本地根据从所述广播中解析出的信息来修改各自的内核数据结构信息,以使得所有节点的内核数据结构信息保持一致。
类似地,如果检测到从节点本地的内核数据结构信息发生改动,则所述从节点可向所有节点(即,分布式系统中除该从节点之外的其他节点)发送用于指示节点的内核数据结构信息发生改动的广播,所述广播中携带了指示内核数据结构信息中包含的哪部分内容被改动的信息,各节点在接收到所述广播之后,对所述广播进行解析,并在节点本地根据从所述广播中解析出的信息来修改各自的内核数据结构信息,以使得所有节点的内核数据结构信息保持一致。
这里,应理解,传统的、运行在单一SMP(Symmetrical Multi-Processing)节点的POSIX多线程程序可以充分利用单一节点上多个CPU的计算能力完成并行计算任务。传统的POSIX多线程程序开发简单、运行效率高,且已经有很多现成的应用程序,但是它们都无法直接运行在分布式系统上,为使得传统的POSIX多线程程序可运行在分布式系统上,现有技术中通常需借助于MPI(信息传递接口)。现有的MPI是运行在分布式系统的内核之上,即,通过修改系统上层的应用程序来实现多线程运行,MPI的每个节点都需要建立自身的软件库,由软件工程师通过各种并行处理方案的编程技巧来实现分发和数据同步。
根据本发明的示例性实施例的用于分布式系统的主节点和从节点的并行处理方法和设备,通过对现有的分布式系统中各节点的内核数据结构信息的修改可实现在分布式系统上直接运行POSIX多线程程序。
图4示出根据本发明示例性实施例的用于分布式系统的主节点的并行处理设备的框图。如图4所示,根据本发明示例性实施例的用于分布式系统的主节点的并行处理设备包括:线程处理单元10、接收单元20和发送单元30。
图5示出根据本发明示例性实施例的用于分布式系统的从节点的并行处理设备的框图。如图5所示,根据本发明示例性实施例的用于分布式系统的从节点的并行处理设备包括:信息接收单元100、线程恢复单元200、发送单元300、指令接收单元400和执行单元500。下面结合图4和图5来详细介绍分布式系统中主节点与从节点之间信息交互过程。
具体说来,线程处理单元10确定多个子线程中的每个子线程所对应的从节点,并将每个子线程的线程信息发送到对应的从节点,以使所述对应的从节点根据接收到的线程信息来恢复每个子线程。
例如,所述多个子线程可首先在主节点上加载并运行,然后线程处理单元10再将每个子线程分配到对应的从节点,以使所有节点共同工作,来达到并行处理的目的。
在一个示例中,线程处理单元10可预先设定预定映射关系表,所述预定映射关系表中可包括所述多个子线程与所有从节点之间的映射关系,然后线程处理单元10可根据预定映射关系表,确定每个子线程所对应的从节点(即,每个子线程被分配执行的从节点)。
在另一示例中,线程处理单元10可动态为所述多个子线程中的每个子线程分配对应的从节点。例如,所述多个子线程可在主节点上加载并运行,线程处理单元10在各子线程运行过程中,动态的将子线程分配给对应的从节点。
这里,线程处理单元10可还控制所述多个子线程停止工作,而由主节点执行的子线程不被分配,继续在主节点运行。
可选地,可在线程处理单元10将每个子线程的线程信息发送到对应的从节点之后,线程处理单元10控制所述多个子线程停止工作,或者,也可在线程处理单元10确定出多个子线程中的每个子线程所对应的从节点之后,线程处理单元10控制所述多个子线程停止工作,在控制所述多个子线程停止工作之后,可将所述多个子线程挂起,移出主节点的执行队列,进入主节点的待执行队列中。
信息接收单元100从主节点接收子线程的线程信息。作为示例,接收的子线程的线程信息可包括寄存器状态和线程描述符,所述线程描述符可包括任务名和内存状态。
线程恢复单元200根据接收的所述线程信息恢复所述子线程。
优选地,线程恢复单元200可创建一个新的子线程,将所述寄存器状态、所述任务名和所述内存状态赋值给所述新的子线程,以将所述新的子线程恢复为所述子线程。
发送单元300向主节点发送用于指示所述从节点完成子线程恢复的通知。这里,当线程恢复单元200完成恢复子线程的操作之后,发送单元300可向主节点发送用于指示所述从节点完成子线程恢复的通知。
接收单元20从所述从节点接收用于指示所述从节点完成子线程恢复的通知。
这里,接收单元20可判断是否所有从节点均完成子线程恢复任务,即,接收单元20可确定是否从所有从节点均接收到用于指示从节点完成子线程恢复任务的通知。
如果所有从节点没有均完成子线程恢复任务,则接收单元20继续进行判断。
如果所有从节点均完成子线程恢复任务,则发送单元30向所述从节点发送用于执行恢复的子线程的控制指令。这里,发送单元30向所有从节点均发送所述控制指令,作为示例,所述控制指令可指示从节点开始执行对应的子线程。
指令接收单元400从主节点接收控制指令。
执行单元500响应于所述控制指令来执行恢复的子线程。
应理解,在分布式系统中主节点和从节点在执行子线程时,还包括读取数据和写数据的操作,下面来详细描述分布式系统中读取数据的过程。
优选地,根据本发明示例性实施例的用于分布式系统的从节点的并行处理设备可还包括第一检测单元和数据读取单元(未示出),第一检测单元检测从节点本地是否存储了在执行所述子线程过程中所需的数据。
如果第一检测单元检测到从节点本地存储了所述数据,则数据读取单元从从节点本地读取所述数据。
如果第一检测单元没有检测到从节点本地存储了所述数据,则发送单元300还向主节点发送用于读取数据的请求。
用于分布式系统的主节点的并行处理设备中的发送单元30响应于从所述从节点接收的用于读取数据的请求,确定所述请求所指示的数据的存储路径,即,确定所述存储路径所指向的节点。
发送单元30还确定所述请求所指示的数据的存储路径是否指向主节点。
如果确定所述存储路径指向主节点,则发送单元30将所述请求所指示的数据发送给从节点。
如果确定所述存储路径不指向主节点,则发送单元30将所述请求所指示的数据的存储路径发送给从节点。
例如,根据本发明示例性实施例的用于分布式系统的主节点的并行处理设备可还包括存储单元,用于存储数据结构表,该数据结构表为数据和所述数据的存储路径之间的对应关系表,发送单元30可根据所述请求所指示的数据从数据结构表中找到与所述数据对应的数据的存储路径,并将找到的存储路径发送给从节点。
数据读取单元从所述存储路径指示的节点读取所述数据。
这里,仅在主节点中存储该数据结构表,各从节点读取数据时均可向主节点发送用于读取数据的请求,以由发送单元30响应于该请求来查找数据结构表,从而保证所有节点读取数据的内容一致性。
下面来详细描述分布式系统中写数据的过程。
根据本发明示例性实施例的用于分布式系统的从节点的并行处理设备可还包括存储单元,当从节点在执行子线程过程中执行了写数据操作(即,对数据进行了更新,例如,产生了新数据或对数据进行了修改)时,存储单元将更新后的数据存储在从节点的本地。
发送单元300向所有节点发送用于指示数据更新的广播。这里,所有节点可指主节点和所述至少一个从节点中除所述从节点之外的其他从节点。
根据本发明示例性实施例的用于分布式系统的主节点的并行处理设备可还包括第二检测单元和路径更新单元,第二检测单元检测主节点本地是否存储了所述广播所指示的数据。例如,所述广播所指示的数据可指与从节点更新后的数据对应的更新前的数据。
如果第二检测单元检测到主节点本地存储了所述广播所指示的数据,则路径更新单元删除主节点本地存储的所述广播所指示的数据。并且,路径更新单元还更新所述广播所指示的数据的存储路径,即,将所述广播所指示的数据的存储路径更新为指向所述从节点。
例如,路径更新单元可将数据结构表中与所述广播所指示的数据的存储路径所指向的节点更新为所述从节点(即,发送所述广播的从节点)。
这里,如果第二检测单元没有检测到主节点本地存储了所述广播所指示的数据,则可直接更新所述广播所指示的数据的存储路径。
这里,当其他从节点接收到所述广播时,也可检测所述其他从节点本地是否存储了所述广播所指示的数据,如果检测到所述其他从节点本地存储了所述广播所指示的数据,则删除本地存储的所述广播所指示的数据,如果没有检测到所述其他从节点本地存储了所述广播所指示的数据,则所述其他从节点不对接收到的广播进行处理。
应理解,在分布式系统中主节点和从节点在执行子线程时,节点本地的内核数据结构信息可能发生改动,下面来详细介绍修改内核数据结构信息的过程。
例如,以主节点为例,根据本发明示例性实施例的用于分布式系统的主节点的并行处理设备可还包括:第三检测单元和内核数据结构更新单元,第三检测单元可检测主节点本地的内核数据结构信息是否有改动,如果主节点的内核数据结构信息发生改动,则发送单元30可向各从节点发送用于指示节点的内核数据结构信息发生改动的广播,作为示例,所述内核数据结构信息可包括子线程的内存映射文件、子线程的线程描述符和子线程的信号列表,所述广播中携带了指示内核数据结构信息中包含的哪部分内容被改动的信息,各从节点在接收到所述广播之后,内核数据结构更新单元可对所述广播进行解析,并在节点本地根据从所述广播中解析出的信息来修改各自的内核数据结构信息,以使得所有节点的内核数据结构信息保持一致。
类似地,根据本发明示例性实施例的用于分布式系统的从节点的并行处理设备可还包括第四检测单元和内核数据结构更新单元,如果第四检测单元检测到从节点本地的内核数据结构信息发生改动,则发送单元300可向所有节点(即,分布式系统中除该从节点之外的其他节点)发送用于指示节点的内核数据结构信息发生改动的广播,所述广播中携带了指示内核数据结构信息中包含的哪部分内容被改动的信息,各节点在接收到所述广播之后,内核数据结构更新单元对所述广播进行解析,并在节点本地根据从所述广播中解析出的信息来修改各自的内核数据结构信息,以使得所有节点的内核数据结构信息保持一致。
采用本发明示例性实施例的用于分布式系统的主节点和从节点的并行处理方法和设备,不仅能够兼容传统POSIX多线程程序,且此并行处理架构不需要开发人员掌握复杂的并行处理编程技巧就可以开发出高效的分布式应用程序,用户无需进行过多的安装和配置就能够部署和使用分布式应用程序。
此外,根据本发明示例性实施例的用于分布式系统的主节点和从节点的并行处理方法可以被实现为计算机可读记录介质中的计算机代码。本领域技术人员可以根据对上述方法的描述来实现所述计算机代码。当所述计算机代码在计算机中被执行时实现本发明的上述方法。
此外,根据本发明示例性实施例的用于分布式系统的主节点和从节点的并行处理设备中的各个单元可被实现硬件组件。本领域技术人员根据限定的各个单元所执行的处理,可以例如使用现场可编程门阵列(FPGA)或专用集成电路(ASIC)来实现各个单元。
尽管已经参照其示例性实施例具体显示和描述了本发明,但是本领域的技术人员应该理解,在不脱离权利要求所限定的本发明的精神和范围的情况下,可以对其进行形式和细节上的各种改变。
Claims (18)
1.一种用于分布式系统的主节点的并行处理方法,所述方法包括:
确定多个子线程中的每个子线程所对应的从节点;
将每个子线程的线程信息发送到对应的从节点,以使所述对应的从节点根据接收到的线程信息来恢复每个子线程;
从所述从节点接收用于指示所述从节点完成所述恢复的通知;
向所述从节点发送用于执行恢复的子线程的控制指令。
2.如权利要求1所述的方法,还包括:
检测主节点的内核数据结构信息是否有改动;
如果所述内核数据结构信息发生改动,则向各从节点发送用于指示节点的内核数据结构信息发生改动的广播,以使各从节点根据所述广播来修改各自节点的内核数据结构信息。
3.如权利要求2所述的方法,其中,所述内核数据结构信息包括子线程的内存映射文件、子线程的线程描述符和子线程的信号列表。
4.如权利要求1所述的方法,还包括:在主节点控制所述多个子线程停止工作。
5.如权利要求1所述的方法,其中,确定多个子线程中的每个子线程所对应的从节点的步骤包括:根据预定映射关系表确定所述多个子线程中的每个子线程所对应的从节点,或者,由主节点动态为所述多个子线程中的每个子线程分配对应的从节点。
6.如权利要求1所述的方法,其中,所述线程信息包括寄存器状态和线程描述符,所述线程描述符包括任务名和内存状态。
7.如权利要求1所述的方法,还包括:响应于从任意一个从节点接收的用于读取数据的请求,将所述请求所指示的数据或者所述请求所指示的数据的存储路径发送给所述任意一个从节点。
8.如权利要求1所述的方法,还包括:根据从任意一个从节点接收的用于数据更新的广播,将主节点中存储的与所述广播所指示的数据对应的数据删除,并将所述广播所指示的数据的存储路径更新为所述任意一个从节点。
9.如权利要求1所述的方法,还包括:根据从任意一个从节点接收的用于指示节点的内核数据结构信息发生改动的广播,修改主节点的内核数据结构信息。
10.一种用于分布式系统的从节点的并行处理方法,所述方法包括:
从主节点接收子线程的线程信息;
根据接收的所述线程信息恢复所述子线程;
向主节点发送用于指示所述从节点完成所述恢复的通知;
从主节点接收控制指令;
响应于所述控制指令来执行恢复的子线程。
11.如权利要求10所述的方法,其中,接收的所述线程信息包括寄存器状态和线程描述符,所述线程描述符包括任务名和内存状态。
12.如权利要求11所述的方法,其中,根据接收的所述线程信息恢复所述子线程的步骤包括:
创建一个新的子线程;
将所述寄存器状态、所述任务名和所述内存状态赋值给所述新的子线程,以将所述新的子线程恢复为所述子线程。
13.如权利要求10所述的方法,还包括:向主节点发送用于读取数据的请求,并从主节点接收所述请求所指示的数据,或者从主节点接收所述请求所指示的数据的存储路径,从所述存储路径指示的节点读取所述数据。
14.如权利要求13所述的方法,其中,向主节点发送用于读取数据的请求的步骤包括:
检测本地是否存储了在执行所述子线程过程中所需的数据;
如果本地存储了所述数据,则从本地读取所述数据;
如果本地没有存储所述数据,则向主节点发送用于读取数据的请求。
15.如权利要求10所述的方法,还包括:向所有节点发送用于指示数据更新的广播,以使主节点将所述广播所指示的数据的存储路径更新为所述从节点。
16.如权利要求10所述的方法,还包括:
检测所述从节点的内核数据结构信息是否有改动;
如果所述内核数据结构信息发生改动,则向所有节点发送用于指示节点的内核数据结构信息发生改动的广播,以使各节点根据所述广播来修改各自节点的内核数据结构信息。
17.如权利要求16所述的方法,其中,所述内核数据结构信息包括子线程的内存映射文件、子线程的线程描述符和子线程的信号列表。
18.如权利要求10所述的方法,还包括:根据从任意一个节点接收的用于指示节点的内核数据结构信息发生改动的广播,修改所述从节点的内核数据结构信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611092955.XA CN106776018B (zh) | 2016-12-01 | 2016-12-01 | 用于分布式系统的主节点和从节点的并行处理方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611092955.XA CN106776018B (zh) | 2016-12-01 | 2016-12-01 | 用于分布式系统的主节点和从节点的并行处理方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106776018A true CN106776018A (zh) | 2017-05-31 |
CN106776018B CN106776018B (zh) | 2020-09-01 |
Family
ID=58915815
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611092955.XA Active CN106776018B (zh) | 2016-12-01 | 2016-12-01 | 用于分布式系统的主节点和从节点的并行处理方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106776018B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960570A (zh) * | 2017-12-14 | 2019-07-02 | 北京图森未来科技有限公司 | 一种多模块调度方法、装置和系统 |
CN110611746A (zh) * | 2019-09-03 | 2019-12-24 | 苏宁云计算有限公司 | 一种多摄像头同步方法及分布式系统 |
CN111026541A (zh) * | 2019-05-22 | 2020-04-17 | 珠海随变科技有限公司 | 渲染资源调度方法、装置、设备及存储介质 |
CN111212264A (zh) * | 2019-12-27 | 2020-05-29 | 中移(杭州)信息技术有限公司 | 基于边缘计算的图像处理方法、装置、及存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101122868A (zh) * | 2007-09-18 | 2008-02-13 | 中兴通讯股份有限公司 | 一种实现透明进程迁移的装置和方法 |
CN101267345A (zh) * | 2008-03-10 | 2008-09-17 | 中兴通讯股份有限公司 | 业务节点备份方法及分布式系统 |
CN101504618A (zh) * | 2009-02-26 | 2009-08-12 | 浙江大学 | 面向多核处理器的实时线程迁移方法 |
CN101657795A (zh) * | 2007-04-11 | 2010-02-24 | 苹果公司 | 多处理器上的数据并行计算 |
CN102158513A (zh) * | 2010-02-11 | 2011-08-17 | 联想(北京)有限公司 | 一种服务器集群节能的方法、装置和服务器集群 |
CN103092712A (zh) * | 2011-11-04 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种任务中断恢复方法和设备 |
CN104331322A (zh) * | 2014-10-24 | 2015-02-04 | 华为技术有限公司 | 一种进程迁移方法和装置 |
CN104376088A (zh) * | 2014-11-19 | 2015-02-25 | 天津南大通用数据技术股份有限公司 | 一种云数据库的分布式同步方法及数据库系统 |
US9063668B1 (en) * | 2012-07-25 | 2015-06-23 | Google Inc. | Distributed memory allocation in multi-threaded programs |
US9417907B1 (en) * | 2012-05-23 | 2016-08-16 | Emc Corporation | Impact management of system tasks |
US20160259663A1 (en) * | 2013-03-05 | 2016-09-08 | Oracle International Corporation | System and Method for Implementing Reader-Writer Locks Using Hardware Transactional Memory |
-
2016
- 2016-12-01 CN CN201611092955.XA patent/CN106776018B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101657795A (zh) * | 2007-04-11 | 2010-02-24 | 苹果公司 | 多处理器上的数据并行计算 |
CN101122868A (zh) * | 2007-09-18 | 2008-02-13 | 中兴通讯股份有限公司 | 一种实现透明进程迁移的装置和方法 |
CN101267345A (zh) * | 2008-03-10 | 2008-09-17 | 中兴通讯股份有限公司 | 业务节点备份方法及分布式系统 |
CN101504618A (zh) * | 2009-02-26 | 2009-08-12 | 浙江大学 | 面向多核处理器的实时线程迁移方法 |
CN102158513A (zh) * | 2010-02-11 | 2011-08-17 | 联想(北京)有限公司 | 一种服务器集群节能的方法、装置和服务器集群 |
CN103092712A (zh) * | 2011-11-04 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种任务中断恢复方法和设备 |
US9417907B1 (en) * | 2012-05-23 | 2016-08-16 | Emc Corporation | Impact management of system tasks |
US9063668B1 (en) * | 2012-07-25 | 2015-06-23 | Google Inc. | Distributed memory allocation in multi-threaded programs |
US20160259663A1 (en) * | 2013-03-05 | 2016-09-08 | Oracle International Corporation | System and Method for Implementing Reader-Writer Locks Using Hardware Transactional Memory |
CN104331322A (zh) * | 2014-10-24 | 2015-02-04 | 华为技术有限公司 | 一种进程迁移方法和装置 |
CN104376088A (zh) * | 2014-11-19 | 2015-02-25 | 天津南大通用数据技术股份有限公司 | 一种云数据库的分布式同步方法及数据库系统 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960570A (zh) * | 2017-12-14 | 2019-07-02 | 北京图森未来科技有限公司 | 一种多模块调度方法、装置和系统 |
CN109960570B (zh) * | 2017-12-14 | 2021-09-03 | 北京图森智途科技有限公司 | 一种多模块调度方法、装置及系统 |
CN111026541A (zh) * | 2019-05-22 | 2020-04-17 | 珠海随变科技有限公司 | 渲染资源调度方法、装置、设备及存储介质 |
CN110611746A (zh) * | 2019-09-03 | 2019-12-24 | 苏宁云计算有限公司 | 一种多摄像头同步方法及分布式系统 |
CN111212264A (zh) * | 2019-12-27 | 2020-05-29 | 中移(杭州)信息技术有限公司 | 基于边缘计算的图像处理方法、装置、及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106776018B (zh) | 2020-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109144696B (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
US9787706B1 (en) | Modular architecture for analysis database | |
CN105956166B (zh) | 数据库读写方法和读写装置 | |
CN106776018A (zh) | 用于分布式系统的主节点和从节点的并行处理方法和设备 | |
CN104111870B (zh) | 一种中断处理装置及中断处理方法 | |
US20140108753A1 (en) | Merging an out of synchronization indicator and a change recording indicator in response to a failure in consistency group formation | |
JP2009282807A (ja) | メッセージ紐付け処理装置、方法及びプログラム | |
CN109284180B (zh) | 一种任务调度方法、装置、电子设备及存储介质 | |
CN107003893A (zh) | 虚拟机备份方法、备份装置及宿主机 | |
CN108255620A (zh) | 一种业务逻辑处理方法、装置、业务服务器及系统 | |
US10732841B2 (en) | Tracking ownership of memory in a data processing system through use of a memory monitor | |
EP3564898A1 (en) | Apparatus and methods for generating dynamic trace data on a gpu | |
US9734620B2 (en) | Apparatus and method for graphics state management | |
CN103729166A (zh) | 程序的线程关系确定方法、设备及系统 | |
US8219858B2 (en) | Method for testing hard disks under an extensible firmware interface | |
CN105183542A (zh) | 一种内存管理方法及系统 | |
CN111858604B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
US20070226172A1 (en) | File-management apparatus, file-management method, and computer product | |
CN117056123A (zh) | 数据恢复方法、装置、介质及电子设备 | |
CN110018866A (zh) | 用户界面主题更新方法、装置、系统、车机及车辆 | |
CN107908755A (zh) | 一种快照文件处理方法及装置 | |
US20100049747A1 (en) | Apparatus and method for storing log in a thread oriented logging system | |
CN109325005A (zh) | 一种数据处理方法和电子设备 | |
US11055133B2 (en) | Node-local-unscheduler for scheduling remediation | |
US9934035B2 (en) | Device and method for tracing updated predicate values |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |