分布式任务分配与认领方法以及电子设备的制作方法
【专利摘要】提供了一种用于局域网中的分布式任务分配与认领方法、以及相应的电子设备。该分布式任务分配方法包括:确定一任务;将所述任务分成多个子任务;将所述多个子任务通过多播地址进行任务发布,以使得所述局域网内的多个第二电子设备能够通过所述多播地址自动地获得所述多个子任务;以及接收所述多个第二电子设备响应愿意执行所述多个子任务中的子任务的响应信息。本发明的分布式任务分配与认领方法及电子设备通过利用局域网中的网络多播通信方式或者多播通信方式与单播通信方式的组合,在局域网中各对等电子设备之间进行任务分配与执行,从而省略了对调度服务器的需要,能够在本地局域网中零配置地自动组成分布式任务执行网络。
【专利说明】分布式任务分配与认领方法以及电子设备
【技术领域】
[0001]本发明涉及任务的分配与认领,并且更具体地涉及一种分布式任务分配与认领方法、以及相应的电子设备。
【发明内容】
[0002]分布式计算把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。也就是说,分布式计算实现了资源共享并且在多台计算机上平衡计算负载。
[0003]例如,分布式计算已经被用来分析来自外太空的电讯号、寻找并发现对抗艾滋病病毒的更为有效的药物,等等。这些项目都很庞大,需要惊人的计算量,仅仅由单个的电脑或是个人在一个能让人接受的时间内计算完成是决不可能的
[0004]目前,分布式计算网络的组网配置都很复杂,至少需要调度服务器来给网络内的各计算节点(电子设备)分配调度任务。在一些情况下,还需要数据服务器。此外,分布式计算的应用程序一般也非常专业、配置非常复杂,普通的消费者通常很难使用分布式计算来执行任务。
[0005]因此,需要一种不需要调度服务器的方便使用的分布式任务分配与认领方法。
[0006]
【发明内容】
:
[0007]考虑到上述问题而作出了本发明。本发明旨在提供一种应用于局域网内的分布式任务分配与认领方法,其在无需专门的调度服务器的情况下,通过在对等的局域网内各电子设备之间的通信而实现任务分配与认领,从而在局域网中零配置地自动组成分布式计算/任务执行网络。
[0008]根据本发明的一方面,提供了一种分布式任务分配方法,所述方法应用于一第一电子设备中,所述第一电子设备位于局域网中,所述局域网具有至少一个多播地址,包括:确定一任务;将所述任务分成多个子任务;将所述多个子任务通过所述多播地址进行任务发布,以使得所述局域网内的多个第二电子设备能够通过所述多播地址自动地获得所述多个子任务;以及接收所述多个第二电子设备响应愿意执行所述多个子任务中的子任务的响应信息。
[0009]优选地,在对于所述多个子任务中的一个子任务接收到多个响应信息的情况下,所述分布式任务分配方法还包括:从所述多个响应信息中,选择所述多个响应信息中的至少一个响应信息所对应的至少一个第二电子设备;以及向所述至少一个第二电子设备发出确认响应,以便使得接收到确认响应的第二电子设备能够开始执行任务。
[0010]优选地,所述分布式任务分配方法还包括:从所述至少一个第二电子设备获得任务执行结果。
[0011]优选地,在所述分布式任务分配方法中,所述将所述多个子任务通过所述多播地址进行任务发布包括:对于每个子任务,生成任务发布请求,该任务发布请求至少包括子任务标识;以及通过所述多播地址多播所述任务发布请求。[0012]优选地,在所述分布式任务分配方法中,每个响应信息至少包括该响应信息所针对的子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为该子任务所分配的端口号。
[0013]优选地,在所述分布式任务分配方法中,通过多播方式或单播方式接收所述响应信息。
[0014]优选地,在所述分布式任务分配方法中,每个响应信息还包括用于表示发出该响应信息的第二电子设备接收该子任务的意愿程度的意愿值。
[0015]优选地,在所述分布式任务分配方法中,所述向所述至少一个第二电子设备发出确认响应包括:通过所述多播地址多播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识、以及所述至少一个第二电子设备的地址。
[0016]优选地,在所述分布式任务分配方法中,所述向所述至少一个第二电子设备发出确认响应包括:向所述至少一个第二电子设备中的每个第二电子设备单播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识。
[0017]根据本发明的另一方面,提供了一种电子设备,其位于局域网中,所述局域网具有至少一个多播地址,包括:任务确定部件,用于确定一任务;任务划分部件,用于将所述任务分成多个子任务;任务发布部件,用于将所述多个子任务通过所述多播地址进行任务发布,以使得所述局域网内的多个第二电子设备能够通过所述多播地址自动地获得所述多个子任务;以及响应接收部件,用于接收所述多个第二电子设备响应愿意执行所述多个子任务中的子任务的响应信息。
[0018]优选地,所述电子设备还包括:响应选择部件,用于在对于所述多个子任务中的一个子任务接收到多个响应信息的情况下,从所述多个响应信息中,选择所述多个响应信息中的至少一个响应信息所对应的至少一个第二电子设备;以及确认发送部件,用于向所述至少一个第二电子设备发出确认响应,以便使得接收到确认响应的第二电子设备能够开始执行任务。
[0019]优选地,所述电子设备还包括:执行结果获得部件,用于从所述至少一个第二电子设备获得任务执行结果。
[0020]优选地,在所述电子设备中,所述任务发布部件包括:发布请求生成部件,用于对于每个子任务生成任务发布请求,该任务发布请求至少包括子任务标识;以及任务请求发布部件,用于通过所述多播地址多播所述任务发布请求。
[0021]优选地,在所述电子设备中,每个响应信息至少包括该响应信息所针对的子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为该子任务所分配的端口号。
[0022]优选地,在所述电子设备中,所述响应接收部件通过多播方式或单播方式接收所述响应信息。
[0023]优选地,在所述电子设备中,每个响应信息还包括用于表示发出该响应信息的第二电子设备接收该子任务的意愿程度的意愿值。
[0024]优选地,在所述电子设备中,所述确认发送部件通过所述多播地址多播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识、以及所述至少一个第二电子设备的地址。
[0025]优选地,在所述电子设备中,所述确认发送部件向所述至少一个第二电子设备中的每个第二电子设备单播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识。
[0026]根据本发明的再一方面,提供了一种分布式任务认领方法,所述方法应用于一第一电子设备中,所述第一电子设备位于一局域网内,所述局域网具有至少一个多播地址,包括:接收通过所述多播地址发布的多个子任务;对于所述多个子任务中的每个子任务,判断是否能够执行该子任务,并生成第一判断结果,在该第一判断结果表明能够执行该子任务的情况下,生成针对该子任务的响应信息;以及将所生成的响应信息发送给第二电子设备,所述第二电子设备通过所述多播地址发布了所述多个子任务。
[0027]优选地,在所述分布式任务认领方法中,所述接收通过所述多播地址发布的多个子任务包括:对于每个子任务,接收通过所述多播地址发布的该子任务的任务发布请求,该任务发布请求至少包括该子任务的子任务标识。
[0028]优选地,所述分布式任务认领方法还包括:从所述第二电子设备接收确认响应,该确认响应至少包括该确认响应所针对的子任务的子任务标识、以及所述第一电子设备的地址,并且指示所述第一电子设备开始执行该子任务;执行该子任务;以及向所述第一电子设备发送该子任务的任务执行结果。
[0029]优选地,在所述分布式任务认领方法中,所述响应信息至少包括该响应信息所针对的子任务的子任务标识、所述第二电子设备的地址、以及为该子任务所分配的端口号。
[0030]优选地,在所述分布式任务认领方法中,所述将所生成的响应信息发送给第二电子设备包括:通过多播方式或单播方式发送所述响应信息。
[0031]优选地,在所述分布式任务认领方法中,所述响应信息还包括用于表示所述第二电子设备接收该子任务的意愿程度的意愿值。
[0032]优选地,在所述分布式任务认领方法中,所述确认响应是通过单播方式或多播方式发送的。
[0033]根据本发明的又一方面,提供了一种电子设备,其位于局域网中,所述局域网具有至少一个多播地址,包括:任务接收部件,用于接收通过所述多播地址发布的多个子任务;第一判断部件,用于对于所述多个子任务中的每个子任务,判断是否能够执行该子任务,并生成第一判断结果;响应生成部件,用于对于所述多个子任务中的每个子任务,在针对该子任务的第一判断结果表明能够执行该子任务的情况下,生成针对该子任务的响应信息;以及响应发送部件,用于将所生成的响应信息发送给第二电子设备,所述第二电子设备通过所述多播地址发布了所述多个子任务。
[0034]优选地,在所述电子设备中,对于每个子任务,所述任务接收部件接收通过所述多播地址发布的该子任务的任务发布请求,该任务发布请求至少包括该子任务的子任务标识。
[0035]优选地,所述电子设备还包括:确认接收部件,用于从所述第二电子设备接收确认响应,该确认响应至少包括该确认响应所针对的子任务的子任务标识、以及所述第一电子设备的地址,并且指示所述第一电子设备开始执行该子任务;任务执行部件,用于执行该子任务;以及执行结果发送部件,向所述第一电子设备发送该子任务的任务执行结果。
[0036]优选地,在所述电子设备中,所述响应信息至少包括该响应信息所针对的子任务的子任务标识、所述第二电子设备的地址、以及为该子任务所分配的端口号。[0037]优选地,在所述电子设备中,所述任务接收部件通过多播方式或单播方式发送所述响应信息。
[0038]优选地,在所述电子设备中,所述响应信息还包括用于表示所述第二电子设备接收该子任务的意愿程度的意愿值。
[0039]优选地,在所述电子设备中,所述响应发送部件通过单播方式或多播方式发送所述确认响应。
[0040]根据本发明的分布式任务分配与认领方法及电子设备通过利用局域网中的网络多播通信方式或者多播通信方式与单播通信方式的组合,在局域网中各对等电子设备之间进行任务分配与执行,从而省略了对调度服务器的需要,能够在本地局域网中零配置地自动组成分布式任务执行网络。
【专利附图】
【附图说明】
[0041]通过参考附图描述本发明实施例,本发明实施例的各种特征和优点将更明显,并且也更容易被理解,在附图中:
[0042]图1是示出根据本发明实施例的分布式任务分配方法的示例性流程图;
[0043]图2是示出根据本发明实施例的分布式任务认领方法的示例性流程图;
[0044]图3A — 3C是不出根据本发明实施例的在多个电子设备间进行分布式任务分配与认领的示意图;
[0045]图4是示出根据本发明第一实施例的电子设备的示意性框图;以及
[0046]图5是示出根据本发明第二实施例的电子设备的示意性框图。
[0047]具体实现方式
[0048]下面将参考附图来描述根据本发明实施例的分布式任务分配与认领方法以及相应的电子设备。
[0049]将参考图1来说明根据本发明实施例的分布式任务分配方法100。根据本发明实施例的分布式任务分配方法100应用于一第一电子设备中,所述第一电子设备位于局域网中,所述局域网具有至少一个多播地址。所述第一电子设备执行根据本发明实施例的分布式任务分配方法100以便在所述局域网内进行任务分配。
[0050]首先,根据本发明实施例的分布式任务分配方法100在步骤SlOl开始。
[0051]在步骤SllO中,确定一任务。所述任务可以是编译任务、计算任务、下载任务、多人联机协作或对战游戏任务、多人视频会议任务等等。
[0052]此外,所述任务可以是完整任务,或者可以是完整任务中的一部分任务。例如,在所述第一电子设备本机资源不足或者由于其它原因而不能执行完整任务中的任一部分时,所述任务可以是所述完整任务。再例如,在所述第一电子设备本机资源受限或者由于其它原因而仅能执行完整任务中的一部分任务时,所述任务可以是所述完整任务除去所述第一电子设备执行的那部分任务之外的部分。
[0053]接下来,在步骤S120,将所述任务分成多个子任务。有利地,还向每个子任务分配子任务标识,该子任务标识用于唯一地标识该子任务。
[0054]在步骤S130,将所述多个子任务通过所述多播地址进行任务发布,以使得所述局域网内的多个第二电子设备能够通过所述多播地址自动地获得所述多个子任务。在局域网内通过多播地址进行任务发布属于本领域技术人员应了解的技术,在此不再对如何在局域网内实现多播进行赘述。
[0055]应注意,在局域网中,所述第一电子设备和所述第二电子设备是完全对等的。换句话说,局域网中的任一电子设备都有可能成为第一电子设备和第二电子设备。例如,电子设备I作为第一电子设备发布任务1,电子设备2作为第二电子设备认领所述任务I中的子任务12 ;同时或者不同时,电子设备作为第一电子设备发布任务2,电子设备I又作为第二电子设备认领所述任务2中的子任务23。因此,在本说明书中出现的第一电子设备和第二电子设备的表述仅仅是为了使得描述清楚,而绝非限制局域网中的特定电子设备。
[0056]可以对于多个子任务生成至少一个任务发布请求,并且通过所述多播地址多播所生成的至少一个任务发布请求。每个任务发布请求可以针对一个子任务、或者多于一个子任务。
[0057]例如,可以对于每个子任务生成一个任务发布请求,并且对于每个子任务通过所述多播地址多播针对该子任务生成的任务发布请求。在此情况下,该任务发布请求至少包括该子任务的子任务标识,并且还可以包括该子任务的描述信息、和/或参数信息、和/或
类型信息等等。
[0058]替代地,例如,在一个任务发布请求针对多于一个子任务的情况下,该任务发布请求至少包括该任务发布请求所针对的多于一个子任务的每个子任务的子任务标识,并且还可以包括所述每个子任务的描述信息、和/或参数信息、和/或类型信息等等。
[0059]作为任务发布请求的一个示例,在任务发布请求可以针对一个子任务的情况下,该任务发布请求可以包括任务类型TaskType、任务具体描述TaskConent、任务组TaskGroupID、以及子任务标识TaskID。
[0060]任务类型TaskType标识任务的类型,接收到该任务发布请求的第二电子设备根据该任务类型来判断自己是否有能力执行此任务。
[0061]任务具体描述TaskConent是任务的具体描述,其由不同的任务类型来具体定义。例如,对于下载类型的任务而言,该任务具体描述就描述需要下载的资源的URL和文件需要被下载的片段的起止位置。
[0062]任务组标识TaskGroupID标识该子任务是由哪一个大的母任务分割出来的。
[0063]子任务标识TaskID是该子任务的标识。
[0064]然后,在步骤S140,接收所述多个第二电子设备响应愿意执行所述多个子任务中的子任务的响应信息。
[0065]所述响应信息至少可以包括该响应信息所针对的子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为该子任务所分配的端口号。此后,所述第二电子设备将所述端口号与所述第一电子设备进行通信。
[0066]需要注意,可以通过多播方式或单播方式接收所述响应信息。
[0067]最后,根据本发明实施例的分布式任务分配方法100在步骤S199结束。
[0068]由于在局域网中存在许多电子设备,因此可能会从多个不同的第二电子设备接收到对于所述多个子任务中的同一个子任务的多个响应信息。在此情况下,根据本发明实施例的分布式任务分配方法100优选地在步骤S140之后还:
[0069]在步骤S150 (未示出),从所述多个响应信息中,选择所述多个响应信息中的至少一个响应信息所对应的至少一个第二电子设备。
[0070]在仅希望一个第二电子设备执行所述多个响应信息所响应的子任务的情况下,仅选择一个第二电子设备作为该子任务的任务执行者。
[0071]然而,在希望多于一个第二电子设备执行所述多个响应信息所响应的子任务的情况下,可以选择多于一个第二电子设备作为该子任务的任务执行者。
[0072]在此情况下,所述响应信息还可以包括用于表示发出该响应信息的第二电子设备接收该子任务的意愿程度的意愿值。第一电子设备依据在所述多个响应信息中所包括的意愿值,选择意愿最强的一个或多于一个第二电子设备作为该子任务的任务执行者。所述意愿最强可以是所述第二电子设备的CPU处理能力、任务执行优先级等等。
[0073]在步骤S160 (未示出),向所述至少一个第二电子设备发出确认响应,以便使得接收到确认响应的第二电子设备能够开始执行任务。
[0074]可以针对每个子任务生成确认响应。在此情况下,可以通过所述多播地址多播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识、以及所述至少一个第二电子设备的地址。或者,可以通过单播方式向所述至少一个第二电子设备中的每个第二电子设备单播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识。
[0075]替代地,还可以针对多于一个子任务生成确认响应。在此情况下,可以通过所述多播地址多播所述确认响应,并且在所述确认响应中包括所述多于一个子任务中的每个子任务的子任务标识、以及与每个子任务对应的所述至少一个第二电子设备的地址。
[0076]替代地,还可以针对一个第二电子设备生成确认响应。在此情况下,可以通过单播方式向该第二电子设备单播所述确认响应,并且在所述确认响应中包括最终分配给该第二电子设备执行的所有子任务中的每个子任务的子任务标识。
[0077]然后,在步骤S170(未示出),从所述至少一个第二电子设备获得任务执行结果。例如,通过利用在所述响应信息中包括的端口号的端口,来从第二电子设备获得任务执行结果O
[0078]接下来,将参考图2来说明根据本发明实施例的分布式任务认领方法200。根据本发明实施例的分布式任务认领方法200应用于一第二电子设备中,所述第二电子设备位于一局域网内,所述局域网具有至少一个多播地址。所述第二电子设备执行根据本发明实施例的分布式任务认领方法200以便在所述局域网内进行任务认领。
[0079]应了解,应用根据本发明实施例的分布式任务认领方法200的第二电子设备可以与应用根据本发明实施例的分布式任务分配方法100的第一电子设备相同,以便在同一电子设备上同时进行第一任务I的分配和第二任务2的认领。
[0080]为了描述方便,将相对于根据本发明实施例的分布式任务分配方法100来描述根据本发明实施例的分布式任务认领方法200,在此情况下,第一电子设备分配第一任务I中的子任务,第二电子设备认领第一任务I中的至少一个子任务。
[0081]首先,根据本发明实施例的分布式任务认领方法200在步骤S201开始。
[0082]在步骤S210中,接收通过所述多播地址发布的多个子任务。所述多个子任务可以是属于一个任务的子任务,也可以是属于不同任务的子任务。此外,所述多个子任务可以是从一个第一电子设备发布的,也可以是从多个第一电子设备发布的。
[0083]在第一电子设备对于每个子任务生成一个任务发布请求的情况下,在第二电子设备中,对于每个子任务,接收通过所述多播地址发布的该子任务的任务发布请求。在此情况下,该任务发布请求至少包括该子任务的子任务标识,并且还可以包括该子任务的描述信息、和/或参数信息、和/或类型信息等等。
[0084]在第一电子设备对于多于一个子任务生成一个任务发布请求的情况下,在第二电子设备中,接收对于多于一个子任务而生成的任务发布请求,并且从所接收的任务发布请求中提取出每个子任务的信息数据。在此情况下,该任务发布请求至少包括该任务发布请求所针对的多于一个子任务的每个子任务的子任务标识,并且还可以包括所述每个子任务的描述信息、和/或参数信息、和/或类型信息等等。
[0085]例如,电子设备I通过所述多播地址发布第一任务I中的多个子任务,电子设备2通过所述多播地址发布第二任务2中的多个子任务,电子设备3接收电子设备I通过所述多播地址发布的第一任务I中的多个子任务以及电子设备2通过所述多播地址发布的第二任务2中的多个子任务。
[0086]在步骤S220,对于所述多个子任务中的每个子任务,判断是否能够执行该子任务,并生成第一判断结果。
[0087]在步骤S230,在该第一判断结果表明能够执行该子任务的情况下,生成针对该子任务的响应信息。
[0088]在步骤S240,将所生成的响应信息发送给第一电子设备,所述第一电子设备通过所述多播地址发布了所述多个子任务。
[0089]可以对于每个子任务生成响应信息。在此情况下,所述响应信息至少可以包括该响应信息所针对的子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为该子任务所分配的端口号。此后,所述第二电子设备将通过所述端口号与所述第一电子设备进行通信。可以通过多播方式或单播方式发送所述响应信息。在多播方式发送所述响应信息的情况下,所述响应信息还包括所述第一电子设备的地址。
[0090]替代地,可以对于每个第一电子设备生成响应信息,所述响应信息可以针对一个第一电子设备发布的多个子任务中第二电子设备愿意认领的所有子任务。在此情况下,所述响应信息至少可以包括该响应信息所针对的多于一个子任务中的每个子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为每个子任务所分配的端口号。可以通过多播方式或单播方式发送所述响应信息。在多播方式发送所述响应信息的情况下,所述响应信息还包括所述第一电子设备的地址。
[0091]替代地,可以对于多于一个子任务生成响应信息,所述多于一个子任务可以属于同一个任务或者可以属于不同任务。在此情况下,所述响应信息至少可以包括该响应信息所针对的多于一个子任务中的每个子任务的子任务标识、发出该响应信息的第二电子设备的地址、发布每个子任务的第一电子设备的地址、以及为每个子任务所分配的端口号。可以通过多播方式或单播方式发送所述响应信息。
[0092]对于每个子任务,在所述响应信息中还可以包括用于表示所述第二电子设备接收该子任务的意愿程度的意愿值。所述意愿值可以表示所述第二电子设备的CPU处理能力、任务执行优先级等等。
[0093]作为响应信息的一个示例,所述响应信息可以包括:任务组标识TaskGroupID、子任务标识TaskID、地址Address、端口 Port、自描述信息SelfDescription、意愿值Priority、响应类型 ResponseType 等等。
[0094]地址Address是发出该响应信息的第二电子设备本身的地址。
[0095]端口 Port是发出该响应信息的第二电子设备(即,任务认领者)为该子任务分配的端口,第一电子设备将通过该端口获取任务执行结果。
[0096]自描述信息SelfDescription是任务认领者对自己的描述,其可以是一个安全证书,便于第一电子设备识别并作出进一步的选择。
[0097]意愿程度Priority标识第二电子设备接受该子任务的意愿程度,其可以由意愿值和随机数组成,以便于该子任务在具有相同意愿值的多个第二电子设备之间随机分配。意愿值的取值范围里可以存在一个特殊的值,该特殊的值表示该第二电子设备在之前已经完成过该子任务,并且可以直接从该第二电子设备获取执行结果。
[0098]响应类型ResponseType表示该响应是最终响应(Final)还是非最终响应(Undertermined)0
[0099]最后,根据本发明实施例的分布式任务认领方法200在步骤S299结束。
[0100]根据本发明实施例的分布式任务认领方法200优选地在步骤S240之后还:
[0101]在步骤S250 (未示出),从所述第一电子设备接收确认响应,该确认响应至少包括该确认响应所针对的子任务的子任务标识、以及所述第一电子设备的地址。该确认响应用于确认所述第二电子设备对该子任务的认领,并且用于指示所述第二子设备开始执行该子任务。
[0102]在步骤S260 (未不出),执行该子任务。
[0103]在步骤S270 (未示出),向所述第一电子设备发送该子任务的任务执行结果。
[0104]利用根据本发明实施例的分布式任务分配方法100和分布式任务认领方法200可以在不需要调度服务器这样的中心节点并且不需要用户干预的情况下,能够在局域网中零配置地自动组成分布式网络。而且,利用根据本发明实施例的分布式任务分配方法100和分布式任务认领方法200也不需要长效的固定服务端口,任务认领者(即,第二电子设备)的端口都是在任务认领期间临时分配的,并且任务发布者(即,第一电子设备)无需公布自己的端口,这也增强了任务执行的安全性。
[0105]在图3中示出了根据本发明实施例的在多个电子设备间进行分布式任务分配与认领的示意图。在图3A中,任务发布者(即,第一电子设备)多播多个子任务;在图3B中,任务认领者(即,第二电子设备)向任务发布者发出认领响应信息;在图3C中,任务发布者(即,第一电子设备)向任务认领者(即,第二电子设备)发出认领确认响应。
[0106]在参考图1和图2描述根据本发明实施例的分布式任务分配方法100和分布式任务认领方法200已经详细描述了任务发布及认领的过程,在此不再详细说明图3A、3B和3C的具体操作。
[0107]接下来,将参考图4和图5来说明根据本发明实施例的电子设备400和500。
[0108]根据本发明实施例的电子设备400和500位于局域网中,所述局域网具有至少一个多播地址。为了使得描述更为清楚,下面将电子设备400称为第一电子设备400,而将电子设备500称为第二电子设备500。更具体地,所述第一电子设备400执行根据本发明实施例的分布式任务分配方法100,而所述第二电子设备500执行根据本发明实施例的分布式任务认领方法200。[0109]如前所述,在局域网中,所述第一电子设备和所述第二电子设备是完全对等的。换句话说,局域网中的任一电子设备都有可能成为第一电子设备和第二电子设备。第一电子设备和第二电子设备的表述仅仅是为了使得描述清楚,而绝非限制局域网中的特定电子设备。在同一电子设备中可以同时具备第一电子设备和第二电子设备的全部组件,以便同时进行第一任务I的分配和第二任务2的认领。
[0110]如图4所示,所述第一电子设备400包括:任务确定部件410、任务划分部件420、任务发布部件430、以及响应接收部件440。
[0111]任务确定部件410用于确定一任务。所述任务可以是编译任务、计算任务、下载任务、多人联机协作或对战游戏任务、多人视频会议任务等等。
[0112]如前所述,所述任务可以是完整任务,或者可以是完整任务中的一部分任务。
[0113]任务划分部件420用于将所述任务分成多个子任务。有利地,还向每个子任务分配子任务标识,该子任务标识用于唯一地标识该子任务。
[0114]任务发布部件430用于将所述多个子任务通过所述多播地址进行任务发布,以使得所述局域网内的多个第二电子设备能够通过所述多播地址自动地获得所述多个子任务。
[0115]优选地,该任务发布部件430可以包括:发布请求生成部件4310 (未示出)以及任务请求发布部件4320 (未示出)。
[0116]发布请求生成部件4310用于对于每个子任务生成任务发布请求,该任务发布请求至少包括子任务标识。任务请求发布部件4320用于通过所述多播地址多播所述任务发布请求。
[0117]如前所述,发布请求生成部件4310可以对于多个子任务生成至少一个任务发布请求,并且任务请求发布部件4320通过所述多播地址多播所生成的至少一个任务发布请求。每个任务发布请求可以针对一个子任务、或者多于一个子任务。
[0118]例如,发布请求生成部件4310可以对于每个子任务生成一个任务发布请求,并且任务请求发布部件4320对于每个子任务通过所述多播地址多播针对该子任务生成的任务发布请求。在此情况下,该任务发布请求至少包括该子任务的子任务标识,并且还可以包括该子任务的描述信息、和/或参数信息、和/或类型信息等等。
[0119]替代地,例如,在发布请求生成部件4310针对多于一个子任务生成一个任务发布请求的情况下,该任务发布请求至少包括该任务发布请求所针对的多于一个子任务的每个子任务的子任务标识,并且还可以包括所述每个子任务的描述信息、和/或参数信息、和/或类型信息等等。
[0120]响应接收部件440用于接收所述多个第二电子设备响应愿意执行所述多个子任务中的子任务的响应信息。
[0121]所述响应信息至少可以包括该响应信息所针对的子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为该子任务所分配的端口号。此后,所述第二电子设备将所述端口号与所述第一电子设备进行通信。
[0122]需要注意,响应接收部件440可以通过多播方式或单播方式接收所述响应信息。
[0123]由于在局域网中存在许多电子设备,因此可能会从多个不同的第二电子设备接收到对于所述多个子任务中的同一个子任务的多个响应信息。
[0124]在此情况下,所述响应信息还可以包括用于表示发出该响应信息的第二电子设备接收该子任务的意愿程度的意愿值。所述意愿值可以表示所述第二电子设备的CPU处理能力、任务执行优先级等等。
[0125]因此,第一电子设备优选地还包括:响应选择部件450 (未示出)以及确认发送部件460 (未示出)。
[0126]在响应接收部件440对于所述多个子任务中的一个子任务接收到多个响应信息的情况下,响应选择部件450从所述多个响应信息中选择所述多个响应信息中的至少一个响应信息所对应的至少一个第二电子设备。
[0127]在仅希望一个第二电子设备执行所述多个响应信息所响应的子任务的情况下,仅选择一个第二电子设备作为该子任务的任务执行者。
[0128]然而,在希望多于一个第二电子设备执行所述多个响应信息所响应的子任务的情况下,可以选择多于一个第二电子设备作为该子任务的任务执行者。
[0129]响应选择部件450可以依据在所述多个响应信息中所包括的意愿值,选择意愿最强的一个或多于一个第二电子设备作为该子任务的任务执行者。所述意愿最强可以是所述第二电子设备的CPU处理能力、任务执行优先级等等。
[0130]确认发送部件460用于向所述至少一个第二电子设备发出确认响应,以便使得接收到确认响应的第二电子设备能够开始执行任务。
[0131]确认发送部件460可以针对每个子任务生成确认响应。在此情况下,可以通过所述多播地址多播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识、以及所述至少一个第二电子设备的地址。或者,可以通过单播方式向所述至少一个第二电子设备中的每个第二电子设备单播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识。
[0132]替代地,确认发送部件460还可以针对多于一个子任务生成确认响应。在此情况下,可以通过所述多播地址多播所述确认响应,并且在所述确认响应中包括所述多于一个子任务中的每个子任务的子任务标识、以及与每个子任务对应的所述至少一个第二电子设备的地址。
[0133]替代地,确认发送部件460还可以针对一个第二电子设备生成确认响应。在此情况下,可以通过单播方式向该第二电子设备单播所述确认响应,并且在所述确认响应中包括最终分配给该第二电子设备执行的所有子任务中的每个子任务的子任务标识。
[0134]优选地,所述第一电子设备还包括:执行结果获得部件470 (未示出),其用于从所述至少一个第二电子设备获得任务执行结果。
[0135]如图5所示,第二电子设备500包括:任务接收部件510、第一判断部件520、响应生成部件530、以及响应发送部件540。
[0136]任务接收部件510用于接收通过所述多播地址发布的多个子任务。所述多个子任务可以是属于一个任务的子任务,也可以是属于不同任务的子任务。此外,所述多个子任务可以是从一个第一电子设备发布的,也可以是从多个第一电子设备发布的。
[0137]在第一电子设备对于每个子任务生成一个任务发布请求的情况下,在第二电子设备中,任务接收部件510对于每个子任务接收通过所述多播地址发布的该子任务的任务发布请求。在此情况下,该任务发布请求至少包括该子任务的子任务标识,并且还可以包括该子任务的描述信息、和/或参数信息、和/或类型信息等等。[0138]在第一电子设备对于多于一个子任务生成一个任务发布请求的情况下,在第二电子设备中,任务接收部件510接收对于多于一个子任务而生成的任务发布请求,并且从所接收的任务发布请求中提取出每个子任务的信息数据。在此情况下,该任务发布请求至少包括该任务发布请求所针对的多于一个子任务的每个子任务的子任务标识,并且还可以包括所述每个子任务的描述信息、和/或参数信息、和/或类型信息等等。
[0139]第一判断部件520用于对于所述多个子任务中的每个子任务,判断是否能够执行该子任务,并生成第一判断结果。
[0140]响应生成部件530用于对于所述多个子任务中的每个子任务,在针对该子任务的第一判断结果表明能够执行该子任务的情况下,生成针对该子任务的响应信息。
[0141]响应发送部件540用于将所生成的响应信息发送给第二电子设备,所述第二电子设备通过所述多播地址发布了所述多个子任务。
[0142]响应生成部件530可以对于每个子任务生成响应信息。在此情况下,所述响应信息至少可以包括该响应信息所针对的子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为该子任务所分配的端口号。此后,所述第二电子设备将通过所述端口号与所述第一电子设备进行通信。响应发送部件540可以通过多播方式或单播方式发送所述响应信息。在多播方式发送所述响应信息的情况下,所述响应信息还包括所述第一电子设备的地址。
[0143]替代地,响应生成部件530可以对于每个第一电子设备生成响应信息,所述响应信息可以针对一个第一电子设备发布的多个子任务中第二电子设备愿意认领的所有子任务。在此情况下,所述响应信息至少可以包括该响应信息所针对的多于一个子任务中的每个子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为每个子任务所分配的端口号。响应发送部件540可以通过多播方式或单播方式发送所述响应信息。在多播方式发送所述响应信息的情况下,所述响应信息还包括所述第一电子设备的地址。
[0144]替代地,响应生成部件530可以对于多于一个子任务生成响应信息,所述多于一个子任务可以属于同一个任务或者可以属于不同任务。在此情况下,所述响应信息至少可以包括该响应信息所针对的多于一个子任务中的每个子任务的子任务标识、发出该响应信息的第二电子设备的地址、发布每个子任务的第一电子设备的地址、以及为每个子任务所分配的端口号。响应发送部件540可以通过多播方式或单播方式发送所述响应信息。
[0145]对于每个子任务,在所述响应信息中还可以包括用于表示所述第二电子设备接收该子任务的意愿程度的意愿值。所述意愿值可以表示所述第二电子设备的CPU处理能力、任务执行优先级等等。
[0146]优选地,所述第二 500电子设备还可以包括:确认接收部件550 (未示出)、任务执行部件560 (未示出)、以及执行结果发送部件570 (未示出)。
[0147]确认接收部件550用于从所述第二电子设备接收确认响应,该确认响应至少包括该确认响应所针对的子任务的子任务标识、以及所述第一电子设备的地址。该确认响应用于确认所述第二电子设备对该子任务的认领,并且用于指示所述第二子设备开始执行该子任务。
[0148]任务执行部件560用于执行该子任务。
[0149]执行结果发送部件570向所述第一电子设备发送该子任务的任务执行结果。[0150]尽管在上面描述了第一电子设备在接收到来自第二电子设备的响应信息后,还需要向第二电子设备发出确认响应,然而在实际应用中,可能存在利用其它信息替代该确认响应的情况。例如,由于网络延迟,有可能导致任务认领者(即,第二电子设备)在收到确认响应之前,自己分配/监听的端口就收到任务发布/分配者(即,第一电子设备)的通信访问,在此情况下,任务认领者(即,第二电子设备)应该视自己已经称为任务执行者,并且立即开始执行任务。
[0151]在上面使用了任务认领者和任务执行者这两种不同的表述来表示第二电子设备,应了解,任务认领者在从第一电子设备(任务发布/分配者)接收到最终确认响应之后即称为任务执行者。
[0152]下面简要描述根据本发明实施例的分布式任务分配方法100和分布式任务认领方法200、以及第一电子设备400和第二电子设备500的应用示例。
[0153]第一应用示例:分布式编译
[0154]第一电子设备400需要编译一个源码文件数量相当庞大的工程(任务),该工程具有5个子工程(子任务),这5个子工程的源码类型和编译参数可以各不相同,第一电子设备400 (分布式编译器)可以多播发布4个任务发布请求,这4个任务发布请求分别描述4个子工程的编译器类型和编译参数,而留下一个子工程由第一电子设备400在本地编译。
[0155]之后,针对每个任务发布请求都收到来自多个第二电子设备的多个响应,第一电子设备400为每个子任务挑选出最合适的第二电子设备作为编译执行者。
[0156]然后,第一电子设备指示所述挑选出的最合适的第二电子设备开始编译,并且通过这些响应中的地址和端口与挑选出的最合适的第二电子设备进行通信以便从其获取编译结果。
[0157]第二应用示例:多人视频会议
[0158]第一电子设备希望在局域网内发起一个视频会议,其发出任务发布请求,在该任务发布请求中描述会议的名称以及指定的音视频编解码格式。
[0159]之后,该第一电子设备从局域网内多个具有视频会议能力的第二电子设备接收到响应,该第一电子设备根据响应中的自描述信息SelfDescription识别出愿意参加会议的人并且挑选作为最终的与会者的第二电子设备。
[0160]然后,该第一电子设备通过对应的地址端口与所挑选的最终与会者进行通信,交换音视频码流。
[0161]第三应用示例:P2P资源下载加速
[0162]第一电子设备的下载应用软件需要下载一个较大的资源(可以是文件或流媒体等等)。该第一电子设备将资源分为5份来下载,由此生成并发出5个任务发布请求,这5个任务发布请求分别描述了资源的下载地址或种子、以及需要下载片段的起始结束位置。
[0163]之后,第一电子设备接收到来自多个第二电子设备的响应,并且发现其中一些片段已经由某些或某个第二电子设备下载完成了。此外,第一电子设备针对那些尚未被第二电子设备下载完成的片段,确定执行所述片段的下载的第二电子设备,并指令所确定的第二电子设备开始下载相应片段。
[0164]然后,该第一电子设备分别与第二电子设备通信,获取下载完成的片段,由此达到加速下载的效果。[0165]第四应用示例:多人联机协作或对战的游戏
[0166]第一电子设备可以将游戏中的多个角色作为任务分配出去。该第一电子设备多播任务发布请求,描述游戏的类型配置等信息。收到该多播任务发布请求的第二电子设备(例如,Android手机)可以提示用户是否参与该游戏。
[0167]决定参加游戏的第二电子设备向第一电子设备发出响应消息,第一电子设备然后决定最终参加游戏的几个第二电子设备(或用户),并开始与这些第二电子设备联网通信,开始联机游戏。
[0168]根据本发明实施例的分布式任务分配与认领方法及电子设备通过利用局域网中的网络多播通信方式或者多播通信方式与单播通信方式的组合,在局域网中各对等电子设备之间进行任务分配与认领(执行),从而省略了对调度服务器的需要,能够在本地局域网中零配置地自动组成分布式任务执行网络。
[0169]上面已经参考附图描述了根据本发明实施例的数据显示方法和终端设备。本领域技术人员应了解,本发明不限于上面描述的实施例,在不偏离本发明的精神的情况下可以作出各种修改,所述修改也应包含在本发明的范围之内。本发明的范围应由所附权利要求及其等同物来限定。
【权利要求】
1.一种分布式任务分配方法,所述方法应用于一第一电子设备中,所述第一电子设备位于一局域网内,所述局域网具有至少一个多播地址,包括: 确定一任务; 将所述任务分成多个子任务; 将所述多个子任务通过所述多播地址进行任务发布,以使得所述局域网内的多个第二电子设备能够通过所述多播地址自动地获得所述多个子任务;以及 接收所述多个第二电子设备响应愿意执行所述多个子任务中的子任务的响应信息。
2.如权利要求1所述的分布式任务分配方法,在对于所述多个子任务中的一个子任务接收到多个响应信息的情况下,还包括: 从所述多个响应信息中,选择所述多个响应信息中的至少一个响应信息所对应的至少一个第二电子设备;以及 向所述至少一个第二电子设备发出确认响应,以便使得接收到确认响应的第二电子设备能够开始执行任务。
3.如权利要求2所述的分布式任务分配方法,还包括: 从所述至少一个第二电子设备获得任务执行结果。
4.如权利要求1所述的分布式任务分配方法,其中,所述将所述多个子任务通过所述多播地址进行任务发布包括:对于每个子任务, 生成任务发布请求,该任务发布请求至少包括子任务标识; 通过所述多播地址多播所述任务发布请求。
5.如权利要求1所述的分布式任务分配方法,其中,每个响应信息至少包括该响应信息所针对的子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为该子任务所分配的端口号。
6.如权利要求5所述的分布式任务分配方法,其中,通过多播方式或单播方式接收所述响应信息。
7.如权利要求5所述的分布式任务分配方法,其中,每个响应信息还包括用于表不发出该响应信息的第二电子设备接收该子任务的意愿程度的意愿值。
8.如权利要求2所述的分布式任务分配方法,其中,所述向所述至少一个第二电子设备发出确认响应包括: 通过所述多播地址多播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识、以及所述至少一个第二电子设备的地址。
9.如权利要求2所述的分布式任务分配方法,其中,所述向所述至少一个第二电子设备发出确认响应包括: 向所述至少一个第二电子设备中的每个第二电子设备单播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识。
10.一种电子设备,其位于局域网中,所述局域网具有至少一个多播地址,包括: 任务确定部件,用于确定一任务; 任务划分部件,用于将所述任务分成多个子任务; 任务发布部件,用于将所述多个子任务通过所述多播地址进行任务发布,以使得所述局域网内的多个第二电子设备能够通过所述多播地址自动地获得所述多个子任务;以及响应接收部件,用于接收所述多个第二电子设备响应愿意执行所述多个子任务中的子任务的响应信息。
11.如权利要求10所述的电子设备,还包括: 响应选择部件,用于在对于所述多个子任务中的一个子任务接收到多个响应信息的情况下,从所述多个响应信息中,选择所述多个响应信息中的至少一个响应信息所对应的至少一个第二电子设备;以及 确认发送部件,用于向所述至少一个第二电子设备发出确认响应,以便使得接收到确认响应的第二电子设备能够开始执行任务。
12.如权利要求11所述的电子设备,还包括: 执行结果获得部件,用于从所述至少一个第二电子设备获得任务执行结果。
13.如权利要求10所述的电子设备,其中,所述任务发布部件包括: 发布请求生成部件,用于对于每个子任务生成任务发布请求,该任务发布请求至少包括子任务标识;以及 任务请求发布部件,用于通过所述多播地址多播所述任务发布请求。
14.如权利要求10所述的电子设备,其中,每个响应信息至少包括该响应信息所针对的子任务的子任务标识、发出该响应信息的第二电子设备的地址、以及为该子任务所分配的端口号。
15.如权利要求14所述的电子设备,其中,所述响应接收部件通过多播方式或单播方式接收所述响应信息。
16.如权利要求14所述的电子设备,其中,每个响应信息还包括用于表示发出该响应信息的第二电子设备接收该子任务的意愿程度的意愿值。
17.如权利要求11所述的电子设备,其中,所述确认发送部件通过所述多播地址多播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识、以及所述至少一个第二电子设备的地址。
18.如权利要求11所述的电子设备,其中,所述确认发送部件向所述至少一个第二电子设备中的每个第二电子设备单播所述确认响应,并且在所述确认响应中包括该子任务的子任务标识。
19.一种分布式任务认领方法,所述方法应用于一第一电子设备中,所述第一电子设备位于一局域网内,所述局域网具有至少一个多播地址,包括: 接收通过所述多播地址发布的多个子任务; 对于所述多个子任务中的每个子任务,判断是否能够执行该子任务,并生成第一判断结果,在该第一判断结果表明能够执行该子任务的情况下,生成针对该子任务的响应信息;以及 将所生成的响应信息发送给第二电子设备,所述第二电子设备通过所述多播地址发布了所述多个子任务。
20.如权利要求19所述的分布式任务认领方法,其中,所述接收通过所述多播地址发布的多个子任务包括:对于每个子任务,接收通过所述多播地址发布的该子任务的任务发布请求,该任务发布请求至少包括该子任务的子任务标识。
21.如权利要求20所述的分布式任务认领方法,还包括:从所述第二电子设备接收确认响应,该确认响应至少包括该确认响应所针对的子任务的子任务标识、以及所述第一电子设备的地址,并且指示所述第一电子设备开始执行该子任务; 执行该子任务;以及 向所述第一电子设备发送该子任务的任务执行结果。
22.如权利要求19所述的分布式任务认领方法,其中,所述响应信息至少包括该响应信息所针对的子任务的子任务标识、所述第二电子设备的地址、以及为该子任务所分配的端口号。
23.如权利要求19所述的分布式任务认领方法,其中,所述将所生成的响应信息发送给第二电子设备包括:通过多播方式或单播方式发送所述响应信息。
24.如权利要求23所述的分布式任务认领方法,其中,所述响应信息还包括用于表示所述第二电子设备接收该子任务的意愿程度的意愿值。
25.如权利要求20所述的分布式任务认领方法,其中,所述确认响应是通过单播方式或多播方式发送的。
26.一种电子设备,其位于局域网中,所述局域网具有至少一个多播地址,包括: 任务接收部件,用于接收通过所述多播地址发布的多个子任务; 第一判断部件,用于对于所述多个子任务中的每个子任务,判断是否能够执行该子任务,并生成第一判断结果; 响应生成部件,用于对于所述多个子任务中的每个子任务,在针对该子任务的第一判断结果表明能够执行该子任务的情况下,生成针对该子任务的响应信息;以及 响应发送部件,用于将所生成的响应信息发送给第二电子设备,所述第二电子设备通过所述多播地址发布了所述多个子任务。
27.如权利要求26所述的电子设备,其中,对于每个子任务,所述任务接收部件接收通过所述多播地址发布的该子任务的任务发布请求,该任务发布请求至少包括该子任务的子任务标识。
28.如权利要求27所述的电子设备,还包括: 确认接收部件,用于从所述第二电子设备接收确认响应,该确认响应至少包括该确认响应所针对的子任务的子任务标识、以及所述第一电子设备的地址,并且指示所述第一电子设备开始执行该子任务; 任务执行部件,用于执行该子任务;以及 执行结果发送部件,向所述第一电子设备发送该子任务的任务执行结果。
29.如权利要求26所述的电子设备,其中,所述响应信息至少包括该响应信息所针对的子任务的子任务标识、所述第二电子设备的地址、以及为该子任务所分配的端口号。
30.如权利要求26所述的电子设备,其中,所述任务接收部件通过多播方式或单播方式发送所述响应信息。
31.如权利要求30所述的电子设备,其中,所述响应信息还包括用于表示所述第二电子设备接收该子任务的意愿程度的意愿值。
32.如权利要求27所述的电子设备,其中,所述响应发送部件通过单播方式或多播方式发送所述确认响应。
【文档编号】H04L29/08GK103685416SQ201210353371
【公开日】2014年3月26日 申请日期:2012年9月20日 优先权日:2012年9月20日
【发明者】张国晟 申请人:联想(北京)有限公司