一种分布式系统中全局型数据的处理方法和装置制造方法
【专利摘要】本发明实施例公开一种分布式系统中全局型数据的处理方法,所述分布式系统包括主节点以及被所述主节点管理的从节点,该方法包括:从节点向管理所述从节点的主节点发送获取全局型数据请求,以便所述主节点根据所述获取全局型数据请求将全局型数据发送至所述从节点;从节点接收来自所述主节点的全局型数据后,将所述全局型数据存储至本地;当从节点接收任一读操作请求时,从节点在本地执行所述读操作。与现有技术相比,本实施例中的从节点接收到读操作请求后,不需要与主节点建立网络通信连接,而是直接访问所述从节点本地存储的全局型数据的备份,实现从节点对全局型数据的快速访问,降低此过程对网络通信的依赖性,极大降低各个模块之间的耦合度。
【专利说明】一种分布式系统中全局型数据的处理方法和装置
【技术领域】
[0001]本发明涉及数据处理【技术领域】,具体涉及一种分布式系统中全局型数据的处理方法和装置。
【背景技术】
[0002]分布式系统(英文:Distributed System)是建立在网络之上的软件系统。分布式系统通常包括控制节点(主节点)和工作节点(从节点),其中,主节点主要负责分布式系统中任务的管理,例如任务开始、结束、更新和迁移,以及工作节点的健康状态的检查等;从节点通常负责任务的执行。一般一个主节点管理多个从节点,各个从节点与主节点保持高密度的通信,而从节点彼此之间不直接通信。
[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]优选地,所述更新模块包括:
[0043]第一判断子模块,用于判断当前是否正在执行读操作;
[0044]第一更新子模块,用于当所述从节点当前未执行读操作时,根据所述全局型数据同步请求更新本地的全局型数据。
[0045]优选地,所述更新模块还包括:
[0046]第二更新子模块,用于在完成当前正在执行的读操作后,根据所述全局型数据同步请求更新本地的全局型数据。
[0047]优选地,所述执行模块包括:
[0048]第二判断子模块,用于当所述从节点接收任一读操作请求时,判断当前是否正在更新本地的全局型数据;
[0049]第一执行子模块,用于当所述从节点当前未更新本地的全局型数据时,所述从节点在本地执行所述读操作。
[0050]优选地,所述执行模块还包括:
[0051]设置子模块,用于当所述从节点当前正在更新本地的全局型数据时,所述从节点将所述读操作请求设置为等待状态;
[0052]第二执行子模块,用于当所述从节点完成更新本地的全局型数据后,所述从节点在本地执行等待状态的读操作。
[0053]本发明还提供了一种分布式系统中的主节点,所述分布式系统还包括被所述主节点管理的从节点,所述主节点包括:
[0054]第一接收模块,用于接收来自任一被所述主节点管理的从节点的获取全局型数据请求;
[0055]第一发送模块,用于根据所述获取全局型数据请求,将全局型数据发送至所述从节点,以便所述从节点将所述全局型数据存储至本地。
[0056]优选地,所述主节点还包括:
[0057]第二接收模块,用于接收来自任一被所述主节点管理的从节点的全局型数据更新请求;
[0058]更新模块,用于根据所述全局型数据更新请求更新本地的全局型数据;
[0059]第二发送模块,用于向被所述主节点管理的从节点发送全局型数据同步请求,以便所述从节点根据所述全局型数据同步请求更新本地的全局型数据。
[0060]本发明中,由于分布式系统中的主节点和从节点均持有全局型数据的备份,所以,与现有技术相比,本实施例中的从节点接收到读操作请求后,不需要与主节点建立网络通信连接,而是直接访问所述从节点本地存储的全局型数据的备份,从而实现所述从节点对全局型数据的快速访问,降低此过程对网络通信的依赖性,同时极大降低了各个模块之间的耦合度。
[0061]为了保证全局型数据的全局一致性,由主节点单独负责对全局型数据的更新,并将每次更新的内容以全局推送增量数据的方式发送给所有从节点。上述方式在保证所有节点的全局型数据备份保持同步的同时,又降低了网络传输的数据量。
[0062]另外,分布式系统中的从节点在收到主节点发送的全局型数据同步请求后,首先判断当前是否正在执行读操作,如果当前未执行读操作,则进行本地数据的更新,否则,等待当前正在进行的读操作执行完毕后处理该全局型数据同步请求,此过程中新到来的读操作工作线程将处于等待状态。本发明可以控制本地读操作工作线程和更新线程对全局型数据的访问,从而保证多个工作线程同时读取全局型数据,将全局型数据的更新操作对读操作的影响降到最低,保证了从节点上的读操作工作线程较高的并发性。
【专利附图】
【附图说明】
[0063]为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0064]图1为本发明实施例一提供的分布式系统中全局型数据的处理方法流程图;
[0065]图2为本发明实施例一提供的分布式系统中全局型数据的处理方法流程图;
[0066]图3为本发明实施例二提供的分布式系统中全局型数据的处理方法流程图;
[0067]图4为本发明实施例二提供的分布式系统中全局型数据的处理方法流程图;
[0068]图5为本发明实施例三提供的分布式系统中从节点的读操作流程图;
[0069]图6为本发明实施例三提供的分布式系统中从节点的全局型数据更新操作流程图;
[0070]图7为本发明实施例四提供的分布式系统中的从节点的结构图;
[0071]图8为本发明实施例四提供的分布式系统中的主节点的结构图。
【具体实施方式】
[0072]下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0073]实施例一
[0074]参考图1,图1为本实施例提供的分布式系统中全局型数据的处理方法流程图,其中,所述分布式系统包括主节点以及被所述主节点管理的从节点,具体可以包括:
[0075]SlOl:从节点向管理所述从节点的主节点发送获取全局型数据请求,以便所述主节点根据所述获取全局型数据请求将全局型数据发送至所述从节点。
[0076]本实施例提供的分布式系统包括若干主节点以及被主节点管理的从节点。分布式系统中的每个从节点均可以向管理它的主节点发送获取全局型数据请求,其中,所述获取全局型数据请求可以为get请求。
[0077]当主节点接收到来自从节点的获取全局型数据请求后,所述主节点根据所述获取全局型数据请求将本地最新版本的全部全局型数据发送至所述从节点。[0078]实际操作中,从节点向主节点发送获取全局型数据请求的触发条件可以是所述从节点开机或者重启等。
[0079]S102:所述从节点接收来自所述主节点的全局型数据后,将所述全局型数据存储至本地。
[0080]本实施例中,在主节点将本地最新版本的全部全局型数据发送至从节点后,所述从节点接收所述全局型数据,并将其存储至本地。
[0081]本实施例中,分布式系统中的主节点和从节点均可以持有全局型数据的备份,具体的,从节点可以通过向主节点发送获取全局型数据请求得到主节点本地存储的最新版本的全局型数据,实现全局型数据在从节点的备份。
[0082]S103:当所述从节点接收任一读操作请求时,所述从节点在本地执行所述读操作。
[0083]本实施例中,由于从节点存在全局型数据的备份,所以,当所述从节点接收到任意一个读操作请求时,所述从节点可以在本地执行所述读操作。具体的,所述从节点接收到的读操作请求为读取任意一个或多个全局型数据的请求,所述读操作为所述读操作请求对应的实际操作。
[0084]本实施例中,由于分布式系统中的主节点和从节点均持有全局型数据的备份,所以,与现有技术相比,本实施例中的从节点接收到读操作请求后,不需要与主节点建立网络通信连接,而是直接访问所述从节点本地存储的全局型数据的备份,从而实现所述从节点对全局型数据的快速访问,降低此过程对网络通信的依赖性。
[0085]本实施例中,全局型数据为动态数据,全局型数据可以由从节点产生,也可以被从节点调用。参考图2,图2为本实施例提供的分布式系统中全局型数据的处理方法流程图,所述方法在图1中各个步骤的基础上还可以包括:
[0086]S201:所述从节点向管理所述从节点的主节点发送全局型数据更新请求,以便所述主节点在根据所述全局型数据更新请求更新本地的全局型数据后,向所述从节点发送全局型数据同步请求。
[0087]本实施例中,当从节点处于工作状态时获悉到本地存在全局型数据的更新,所述从节点可以生成全局型数据更新请求,并将其发送至管理所述从节点的主节点。
[0088]其中,全局型数据的更新可以包括全局型数据的增加、修改和删除等,相应的,所述全局型数据更新请求可以包括更新操作和更新数据,更新操作可以为增加操作、修改操作和删除操作等,更新数据可以为至少一个全局型数据。例如,全局型数据更新请求可以为增加全局型数据A的操作请求。
[0089]实际操作中,当所述主节点接收来自从节点的全局型数据更新请求后,首先根据所述全局型数据更新请求更新本地的全局型数据,使得所述主节点本地的全局型数据为更新后的最新版本的全局型数据。当所述主节点同时需要处理若干个全局型数据更新请求时,可以通过逐个顺序处理更新请求来保证全局型数据的一致性。例如,可以通过排队的方式将接收的全局型数据更新请求依次设置为等待状态。
[0090]其次,所述主节点在更新完本地的全局型数据后,可以向所述从节点发送全局型数据同步请求,以便所述从节点本地的全局型数据也可以更新为最新版本的全局型数据。其中,如果所述全局型数据更新请求的发送方与所述全局型数据同步请求的接收方相同,则所述全局型数据同步请求可以与所述全局型数据更新请求的操作内容相同。[0091]值得注意的是,本实施例中,在所述主节点向所述从节点发送全局型数据同步请求的同时,所述主节点也将所述全局型数据同步请求发送至所述主节点管理的所有从节点,从而实现所述主节点与其管理的所有从节点的全局型数据的同步。
[0092]实际应用中,所述主节点可以以补丁方式将全局型数据同步请求发送至从节点。
[0093]可以理解的是,本实施例中主节点单独负责对全局型数据的更新,并将每次的数据更新以全局推送增量数据的方式发送给所有从节点。上述方式在保证所有从节点的全局型数据备份保持同步的同时,又降低了网络通信传输的数据量。
[0094]S202:所述从节点接收来自所述主节点的全局型数据同步请求后,根据所述全局型数据同步请求更新本地的全局型数据。
[0095]本实施例中,当所述从节点接收来自主节点的全局型数据同步请求后,根据全局型数据同步请求对本地的全局型数据进行更新,其中,所述全局型数据同步请求中可以同步操作和同步数据,同步操作可以为增加操作、修改操作和删除操作等,同步数据可以为至少一个全局型数据。例如,全局型数据同步请求可以为增加全局型数据A的操作请求。
[0096]实际操作中,首先所述从节点接收来自所述主节点的全局型数据同步请求;其次,所述从节点判断当前是否正在执行读操作;当所述从节点当前未执行读操作时,所述从节点根据所述全局型数据同步请求更新本地的全局型数据。其中,所述读操作为所述从节点对本地全局型数据的访问。可以理解的是,只有在所述从节点当前没有正在执行的读操作时,所述从节点才会进行本地全局型数据的更新。
[0097]另外,当所述从节点接收来自所述主节点的全局型数据同步请求后,所述从节点当前正在执行读操作,那么所述从节点可以继续执行所述读操作;一旦完成所述读操作,所述从节点根据所述全局型数据同步请求更新本地的全局型数据。如果所述从节点存在其他处于等待状态的读操作请求,则在所述更新操作完成后继续执行其他处于等待状态的读操作请求。
[0098]由于从节点的工作线程在不断的对本地的全局型数据进行读操作,为了减少对读操作的影响,本实施例的根据全局型数据同步请求更新本地的全局型数据的工作线程需要快速高效地执行更新操作。
[0099]本实施例中,当所述从节点接收到任意一个读操作请求,在执行所述读操作之前,所述从节点首先判断当前是否正在更新本地的全局型数据;如果所述从节点当前未更新本地的全局型数据,则所述从节点可以在本地执行所述读操作。如果,所述从节点当前正在更新本地的全局型数据,则将接收的所述读操作请求设置为等待状态,当所述从节点完成更新本地的全局型数据后,所述从节点在本地执行等待状态的读操作。
[0100]本实施例中,为了保证全局型数据的全局一致性,由主节点单独负责对全局型数据的更新,并将每次更新的内容以全局推送增量数据的方式发送给所有从节点。上述方式在保证所有节点的全局型数据备份保持同步的同时,又降低了网络传输的数据量。
[0101]另外,分布式系统中的从节点在收到主节点发送的全局型数据同步请求后,首先判断当前是否正在执行读操作,如果当前未执行读操作,则进行本地数据的更新。本实施例可以控制本地读操作工作线程和更新线程对全局型数据的访问,从而保证多个工作线程同时读取全局型数据,将全局型数据的更新操作对读操作的影响降到最低,保证了从节点上的读操作工作线程较高的并发性。[0102]实施例二
[0103]参考图3,图3为本实施例提供的分布式系统中全局型数据的处理方法流程图,其中,所述分布式系统包括主节点以及被所述主节点管理的从节点,具体可以包括:
[0104]S301:主节点接收来自任一被所述主节点管理的从节点的获取全局型数据请求。
[0105]本实施例中,分布式系统可以包括若干主节点,其中各个主节点可以管理若干从节点。主节点接收来自其所管理的任意一个从节点的获取全局型数据请求,所述获取全局型数据请求可以为get请求。
[0106]S302:所述主节点根据所述获取全局型数据请求,将全局型数据发送至所述从节点,以便所述从节点将所述全局型数据存储至本地。
[0107]实际操作中,当所述主节点接收到所述获取全局型数据请求后,将本地的最新版本的全局型数据发送至所述从节点。所述从节点在接收到来自所述主节点的全局型数据后,将所述全局性数据存储至本地。
[0108]参考图4,图4为本实施例提供的分布式系统中全局型数据的处理方法流程图,所述方法在图3中各个步骤的基础上还可以包括:
[0109]S401:所述主节点接收来自任一被所述主节点管理的从节点的全局型数据更新请求。
[0110]S402:所述主节点根据所述全局型数据更新请求更新本地的全局型数据。
[0111]S403:所述主节点向被所述主节点管理的从节点发送全局型数据同步请求,以便所述从节点根据所述全局型数据同步请求更新本地的全局型数据。
[0112]本实施例中,主节点接收来自其所管理的从节点的全局型数据更新请求后,首先根据所述全局型数据更新请求更新本地的全局型数据,在完成所述本地更新操作后,将全局型数据同步请求发送至所述主节点管理的所有从节点,最终实现所述主节点与其所管理的所有从节点的全局型数据的一致性。其中,全局型数据同步请求中可以同步操作和同步数据,同步操作可以为增加操作、修改操作和删除操作等,同步数据可以为至少一个全局型数据。
[0113]本实施例中,由于分布式系统中的主节点和从节点均持有全局型数据的备份,所以,与现有技术相比,本实施例中的从节点接收到读操作请求后,不需要与主节点建立网络通信连接,而是直接访问所述从节点本地存储的全局型数据的备份,从而实现所述从节点对全局型数据的快速访问,降低此过程对网络通信的依赖性,同时极大降低了各个模块之间的耦合度。
[0114]为了保证全局型数据的全局一致性,由主节点单独负责对全局型数据的更新,并将每次更新的内容以全局推送增量数据的方式发送给所有从节点。上述方式在保证所有节点的全局型数据备份保持同步的同时,又降低了网络传输的数据量。
[0115]实施例三
[0116]参考图5,图5为本实施例提供的分布式系统中从节点的读操作流程图,其中,从节点在接收主节点发送的全局型数据增量后,由于工作线程在不断对全局型数据进行读操作,所以,从节点本地更新全局型数据的更新线程需要快速高效地执行更新操作,以避免影响工作线程对全局型数据的访问。
[0117]如图5,本实施例利用互斥体d_mutex将以下步骤处于临界区,从而实现从节点的读操作。首先,从节点通过锁上互斥体djnutex的操作控制当前运行状态处于临界区,在执行读操作之前,判断当前是否存在全局型数据更新请求,本实施例中使用need_write标识表示当前是否存在全局型数据更新请求,当所述need_write为真时,表示当前存在全局型数据更新请求,否则,表示当前并不存在全局型数据更新请求。
[0118]本实施例中,如果当前并不存在全局型数据更新请求,那么所述从节点开始处理所述读操作,本实施例的reading_count代表当前正在读取全局型数据的线程个数,在读操作开始前所述reading_count加I,所述读操作完成后所述reading_count减I。本地全局型数据的更新操作必须等待读操作完成,任何一个线程在更新全局型数据之前,必须保证当前全局型数据没有正在被读取,即reading_count为O。由于reading_count为一个全局变量,所以,本实施例使用互斥体d_mutex可以保证reading_count在任何时候只有一个线程对它进行加减操作,从而保证了计算的准确性。
[0119]本实施例中,所述reading_count加I后,解锁所述互斥体d_mutex。所述从节点读取本地全局型数据,当所述全局型数据访问结束后,所述从节点继续利用互斥体djmitex对所述reading_count减1,表明当前读操作执行结束。所述从节点判断当前reading_count是否为O,如果是,则激活no_read_signal,表明本地全局型数据的更新操作可以执行,可以通过系统接口激活等待时间最久的全局型数据的更新线程。
[0120]参考图6,图6为本实施例提供的分布式系统中从节点的全局型数据更新操作流程图。
[0121]如图6,本实施例利用互斥体d_mutex将以下步骤处于临界区,从而实现从节点的全局型数据更新操作。当所述从节点接收主节点发送的全局型数据同步请求后,首先利用互斥体d_mutex将所述need_write置为真,用于表明所述从节点已经接收到了全局型数据同步请求。其次,所述从节点判断所述reading_count是否为O,如果当前reading_count为0,则表明所述从节点当前并没有正在执行的读操作,此时可以解锁所述互斥体djmitex。
[0122]本实施例中,所述从节点在接收到全局型数据同步请求后,如果确定当前并没有正在执行的读操作,则所述从节点可以将本地的全局型数据更新。当所述从节点完成所述全局型数据的更新后,可以利用所述互斥体d_mutex将所述need_write置为false,用于表明当前未执行本地的全局型数据更新。另外,所述从节点激活所有等待no_write_signal的读操作的工作线程,表明等待的读操作可以执行。
[0123]本实施例中,分布式系统中的从节点在收到主节点发送的全局型数据同步请求后,首先判断当前是否正在执行读操作,如果当前未执行读操作,则进行本地数据的更新。本实施例可以控制本地读操作工作线程和更新线程对全局型数据的访问,从而保证多个工作线程同时读取全局型数据,将全局型数据的更新操作对读操作的影响降到最低,保证了从节点上的读操作工作线程较高的并发性。
[0124]实施例四
[0125]参考图7,图7为本实施例提供的分布式系统中的从节点的结构图,其中,所述分布式系统还包括管理所述从节点的主节点,所述从节点包括:
[0126]第一发送模块701,用于向管理所述从节点的主节点发送获取全局型数据请求,以便所述主节点根据所述获取全局型数据请求将全局型数据发送至所述从节点;
[0127]第一接收模块702,用于接收来自所述主节点的全局型数据;[0128]存储模块703,用于将所述全局型数据存储至本地;
[0129]执行模块704,用于当所述从节点接收任一读操作请求时,在本地执行所述读操作。
[0130]其中,所述从节点还可以包括:
[0131]第二发送模块,用于向管理所述从节点的主节点发送全局型数据更新请求,以便所述主节点在根据所述全局型数据更新请求更新本地的全局型数据后,向所述从节点发送全局型数据同步请求;
[0132]第二接收模块,用于接收来自所述主节点的全局型数据同步请求;
[0133]更新模块,用于根据所述全局型数据同步请求更新本地的全局型数据。
[0134]一种情况,所述更新模块可以包括:
[0135]第一判断子模块,用于判断当前是否正在执行读操作;
[0136]第一更新子模块,用于当所述从节点当前未执行读操作时,根据所述全局型数据同步请求更新本地的全局型数据。
[0137]另一种情况,所述更新模块还可以包括:
[0138]第二更新子模块,用于在完成当前正在执行的读操作后,根据所述全局型数据同步请求更新本地的全局型数据。
[0139]其中,所述执行模块可以包括:
[0140]第二判断子模块,用于当所述从节点接收任一读操作请求时,判断当前是否正在更新本地的全局型数据;
[0141]第一执行子模块,用于当所述从节点当前未更新本地的全局型数据时,所述从节点在本地执行所述读操作。
[0142]另外,所述执行模块还可以包括:
[0143]设置子模块,用于当所述从节点当前正在更新本地的全局型数据时,所述从节点将所述读操作请求设置为等待状态;
[0144]第二执行子模块,用于当所述从节点完成更新本地的全局型数据后,所述从节点在本地执行等待状态的读操作。
[0145]参考图8,图8为本实施例提供的分布式系统中的主节点的结构图,其中,所述分布式系统还包括被所述主节点管理的从节点,所述主节点可以包括:
[0146]第一接收模块801,用于接收来自任一被所述主节点管理的从节点的获取全局型数据请求;
[0147]第一发送模块802,用于根据所述获取全局型数据请求,将全局型数据发送至所述从节点,以便所述从节点将所述全局型数据存储至本地。
[0148]另外,所述主节点还包括:
[0149]第二接收模块803,用于接收来自任一被所述主节点管理的从节点的全局型数据更新请求;
[0150]更新模块804,用于根据所述全局型数据更新请求更新本地的全局型数据;
[0151]第二发送模块805,用于向被所述主节点管理的从节点发送全局型数据同步请求,以便所述从节点根据所述全局型数据同步请求更新本地的全局型数据。
[0152]本实施例中,由于分布式系统中的主节点和从节点均持有全局型数据的备份,所以,本实施例中的从节点接收到读操作请求后,不需要与主节点建立网络通信连接,而是直接访问所述从节点本地存储的全局型数据的备份,从而实现所述从节点对全局型数据的快速访问,降低此过程对网络通信的依赖性,同时极大降低了各个模块之间的耦合度。
[0153]为了保证全局型数据的全局一致性,由主节点单独负责对全局型数据的更新,并将每次更新的内容以全局推送增量数据的方式发送给所有从节点。上述方式在保证所有节点的全局型数据备份保持同步的同时,又降低了网络传输的数据量。同时,本实施例可以控制本地读操作工作线程和更新线程对全局型数据的访问,从而保证多个工作线程同时读取全局型数据,将全局型数据的更新操作对读操作的影响降到最低,保证了从节点上的读操作工作线程较高的并发性。
[0154]对于系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0155]需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0156]以上对本发明实施例所提供的分布式系统中全局型数据的处理方法和装置进行了详细介绍,本文中 应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种分布式系统中全局型数据的处理方法,其特征在于,所述分布式系统包括主节点以及被所述主节点管理的从节点,所述方法包括: 从节点向管理所述从节点的主节点发送获取全局型数据请求,以便所述主节点根据所述获取全局型数据请求将全局型数据发送至所述从节点; 所述从节点接收来自所述主节点的全局型数据后,将所述全局型数据存储至本地; 当所述从节点接收任一读操作请求时,所述从节点在本地执行所述读操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 所述从节点向管理所述从节点的主节点发送全局型数据更新请求,以便所述主节点在根据所述全局型数据更新请求更新本地的全局型数据后,向所述从节点发送全局型数据同步请求; 所述从节点接收来自所述主节点的全局型数据同步请求后,根据所述全局型数据同步请求更新本地的全局型数据。
3.根据权利要求2所述的方法,其特征在于,所述从节点接收来自所述主节点的全局型数据同步请求后,根据所述全局型数据同步请求更新本地的全局型数据,包括: 所述从节点接收来自所述主节点的全局型数据同步请求; 所述从节点判断当前是否正在执行读操作; 当所述从节点当前未执行读操作时,所述从节点根据所述全局型数据同步请求更新本地的全局型数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括: 当所述从节点当前正在执行读操作时,所述从节点继续执行所述读操作; 在完成所述读操作后,所述从节点根据所述全局型数据同步请求更新本地的全局型数据。
5.根据权利要求2、3或4所述的方法,其特征在于,所述当所述从节点接收任一读操作请求时,所述从节点在本地执行所述读操作,包括: 当所述从节点接收任一读操作请求时,判断当前是否正在更新本地的全局型数据; 当所述从节点当前未更新本地的全局型数据时,所述从节点在本地执行所述读操作。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括: 当所述从节点当前正在更新本地的全局型数据时,所述从节点将所述读操作请求设置为等待状态; 当所述从节点完成更新本地的全局型数据后,所述从节点在本地执行等待状态的读操作。
7.一种分布式系统中全局型数据的处理方法,其特征在于,所述分布式系统包括主节点以及被所述主节点管理的从节点,所述方法包括: 主节点接收来自任一被所述主节点管理的从节点的获取全局型数据请求; 所述主节点根据所述获取全局型数据请求,将全局型数据发送至所述从节点,以便所述从节点将所述全局型数据存储至本地。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括: 所述主节点接收来自任一被所述主节点管理的从节点的全局型数据更新请求; 所述主节点根据所述全局型数据更新请求更新本地的全局型数据;所述主节点向被所述主节点管理的从节点发送全局型数据同步请求,以便所述从节点根据所述全局型数据同步请求更新本地的全局型数据。
9.一种分布式系统中的从节点,其特征在于,所述分布式系统还包括管理所述从节点的主节点,所述从节点包括: 第一发送模块,用于向管理所述从节点的主节点发送获取全局型数据请求,以便所述主节点根据所述获取全局型数据请求将全局型数据发送至所述从节点; 第一接收模块,用于接收来自所述主节点的全局型数据; 存储模块,用于将所述全局型数据存储至本地; 执行模块,用于当所述从节点接收任一读操作请求时,在本地执行所述读操作。
10.根据权利要求9所述的从节点,其特征在于,所述从节点还包括: 第二发送模块,用于向管理所述从节点的主节点发送全局型数据更新请求,以便所述主节点在根据所述全局型数据更新请求更新本地的全局型数据后,向所述从节点发送全局型数据同步请求; 第二接收模块,用于接收来自所述主节点的全局型数据同步请求; 更新模块,用于根据所述全局型数据同步请求更新本地的全局型数据。
11.根据权利要求10所述的从节点,其特征在于,所述更新模块包括: 第一判断子模块,用于判断当前是否正在执行读操作; 第一更新子模块,用于当所述从节点当前未执行读操作时,根据所述全局型数据同步请求更新本地的全局型数据。
12.根据权利要求11所述的从节点,其特征在于,所述更新模块还包括: 第二更新子模块,用于在完成当前正在执行的读操作后,根据所述全局型数据同步请求更新本地的全局型数据。
13.根据权利要求10、11或12所述的从节点,其特征在于,所述执行模块包括: 第二判断子模块,用于当所述从节点接收任一读操作请求时,判断当前是否正在更新本地的全局型数据; 第一执行子模块,用于当所述从节点当前未更新本地的全局型数据时,所述从节点在本地执行所述读操作。
14.根据权利要求13所述的从节点,其特征在于,所述执行模块还包括: 设置子模块,用于当所述从节点当前正在更新本地的全局型数据时,所述从节点将所述读操作请求设置为等待状态; 第二执行子模块,用于当所述从节点完成更新本地的全局型数据后,所述从节点在本地执行等待状态的读操作。
15.一种分布式系统中的主节点,其特征在于,所述分布式系统还包括被所述主节点管理的从节点,所述主节点包括: 第一接收模块,用于接收来自任一被所述主节点管理的从节点的获取全局型数据请求; 第一发送模块,用于根据所述获取全局型数据请求,将全局型数据发送至所述从节点,以便所述从节点将所述全局型数据存储至本地。
16.根据权利要求15所述的主节点,其特征在于,所述主节点还包括:第二接收模块,用于接收来自任一被所述主节点管理的从节点的全局型数据更新请求; 更新模块,用于根据所述全局型数据更新请求更新本地的全局型数据; 第二发送模块,用于向被所述主节点管理的从节点发送全局型数据同步请求,以便所述从节点根据所述全局型数 据同步请求更新本地的全局型数据。
【文档编号】H04L29/08GK103888545SQ201410148553
【公开日】2014年6月25日 申请日期:2014年4月14日 优先权日:2014年4月14日
【发明者】周星 申请人:北京搜狐新媒体信息技术有限公司