一种在点对点网络中对请求进行响应的方法及服务器系统
【技术领域】
本发明涉及数据通讯技术,特别涉及一种在点对点网络中对请求进行响应的方法及服务器系统。
【背景技术】
点对点(P2P)网络的数据交换方式已经得到了广泛应用,通过这种方式,数据下载时的速度大大提高,方便了人们获取各种资源。
请参考图1,图1为现有技术中点对点网络的示意图。在点对点网络中,节点想要获取某种资源,需要先从服务器查询到具有该种资源的其他节点,然后直接与具有该种资源的其他节点进行数据交换。
随着点对点网络中节点数量的增加,服务器的负担也迅速增加,如果服务器的负担过重,就会影响点对点网络的连接成功率。在现有技术中通常是通过增加服务器内存来提高服务器响应能力的,但是服务器内存的增加是有限的,这种方法的可扩展性较差。
【发明内容】
本发明所要解决的技术问题是提供一种在点对点网络中对请求进行响应的方法及服务器系统,以提高在点对点网络中对请求进行响应时的可扩展性。
本发明为解决技术问题而采用的技术方案是提供一种在点对点网络中对请求进行响应的方法,其特征在于,所述方法包括:A.一级服务器对点对点网络的请求节点发送的请求进行解析,以确定所述请求类型,当所述请求类型与资源相关时,将所述请求转发至所述资源对应的二级服务器;B.所述资源对应的二级服务器当所述请求类型为查询所述资源时,确定所述点对点网络中具有所述资源的在线节点,并将所述在线节点的地址返回至所述一级服务器,由所述一级服务器将所述在线节点的地址返回至所述请求节点。
根据本发明之一优选实施例,所述一级服务器确定所述资源对应的二级服务器的步骤包括:将所述请求包含的所述资源的哈希值转换为整数,求该整数与各个二级服务器的总数之间的余数,并将以该余数为编号的二级服务器作为所述资源对应的二级服务器。
根据本发明之一优选实施例,所述资源对应的二级服务器确定所述点对点网络中具有所述资源的在线节点的步骤包括:根据所述资源对应的二级服务器中保存的资源与节点映射表,确定具有所述资源的节点,其中所述资源与节点映射表包括各个资源与含有该资源的节点之间的对应关系;根据所述资源对应的二级服务器中保存的在线节点表,确定具有所述资源的节点中的在线节点作为所述点对点网络中具有所述资源的在线节点。
根据本发明之一优选实施例,所述资源对应的二级服务器确定所述点对点网络中具有所述资源的在线节点的步骤包括:从所述请求中确定所述请求节点所属地域;根据所述资源对应的二级服务器中保存的资源与节点映射表,确定具有所述资源的节点中与所述请求节点属于相同地域的节点,其中所述资源与节点映射表包括各个资源与含有该资源、且以地域划分的节点之间的对应关系;根据所述资源对应的二级服务器中保存的在线节点表,确定与所述请求节点属于相同地域的节点中的在线节点作为所述点对点网络中具有所述资源的在线节点。
根据本发明之一优选实施例,所述步骤A进一步包括:所述一级服务器当所述请求类型与节点状态相关时,将所述请求转发至各个二级服务器,且所述步骤B进一步包括:各个二级服务器根据所述请求更新该二级服务器中保存的在线节点表。
根据本发明之一优选实施例,所述步骤B进一步包括:所述资源对应的二级服务器当所述请求类型为上报或删除所述资源时,根据所述请求更新所述资源对应的二级服务器中保存的资源与节点映射表。
本发明还提供了一种在点对点网络中对请求进行响应的服务器系统,其特征在于,包括至少一个一级服务器和至少一个二级服务器,其中:所述一级服务器,用于对点对点网络的请求节点发送的请求进行解析,以确定所述请求类型,当所述请求类型与资源相关时,将所述请求转发至所述资源对应的二级服务器;所述资源对应的二级服务器,用于当所述请求类型为查询所述资源时,确定所述点对点网络中具有所述资源的在线节点,并将所述在线节点的地址返回至所述一级服务器;所述一级服务器还用于将所述在线节点的地址返回至所述请求节点。
根据本发明之一优选实施例,所述一级服务器确定所述资源对应的二级服务器的方式包括:将所述请求包含的所述资源的哈希值转换为整数,求该整数与各个二级服务器的总数之间的余数,并将以该余数为编号的二级服务器作为所述资源对应的二级服务器。
根据本发明之一优选实施例,所述资源对应的二级服务器包括:第一查询单元,用于根据所述资源对应的二级服务器中保存的资源与节点映射表,确定具有所述资源的节点,其中所述资源与节点映射表包括各个资源与含有该资源的节点之间的对应关系;第二查询单元,用于根据所述资源对应的二级服务器中保存的在线节点表,确定具有所述资源的节点中的在线节点作为所述点对点网络中具有所述资源的在线节点。
根据本发明之一优选实施例,所述资源对应的二级服务器包括:地域确定单元,用于从所述请求中确定所述请求节点所属地域;第三查询单元,用于根据所述资源对应的二级服务器中保存的资源与节点映射表,确定具有所述资源的节点中与所述请求节点属于相同地域的节点,其中所述资源与节点映射表包括各个资源与含有该资源、且以地域划分的节点之间的对应关系;第四查询单元,用于根据所述资源对应的二级服务器中保存的在线节点表,确定与所述请求节点属于相同地域的节点中的在线节点作为所述点对点网络中具有所述资源的在线节点。
根据本发明之一优选实施例,所述一级服务器还用于,当所述请求类型与节点状态相关时,将所述请求转发至各个二级服务器,且各个二级服务器还用于根据所述请求更新该二级服务器中保存的在线节点表。
根据本发明之一优选实施例,所述资源对应的二级服务器还用于,当所述请求类型为上报或删除所述资源时,根据所述请求更新所述资源对应的二级服务器中保存的资源与节点映射表。
由以上技术方案可以看出,本发明采用了二级服务器架构,其中一级服务器对请求节点的请求进行解析和转发,而二级服务器响应请求的查询需求,并将响应结果通过一级服务器中转至请求节点,能够很好地实现各个服务器之间的负载均衡。本发明在点对点网络的节点不断增加时,只需要适当增加一级或二级服务器的数量就可满足需要,与现有技术相比,本发明中服务器的数量可不断增加,极大地提高了在点对点网络中对请求进行响应时的可扩展性。
【附图说明】
图1为现有技术中点对点网络的示意图;
图2为本发明的在点对点网络中对请求进行响应的服务器系统的实施例的结构示意框图;
图3为本发明中资源对应的二级服务器的实施例一的结构示意框图;
图4为本发明中资源与节点映射表的实施例一的数据结构示意图;
图5为本发明中在线节点表的实施例的数据结构示意图;
图6为本发明中资源对应的二级服务器的实施例二的结构示意框图;
图7为本发明中资源与节点映射表的实施例二的数据结构示意图;
图8为本发明中的在点对点网络中对请求进行响应的方法的实施例的流程示意图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
请参考图2,图2为本发明的在点对点网络中对请求进行响应的服务器系统的实施例的结构示意框图。根据该实施例,系统101包括至少一个一级服务器和至少一个二级服务器。
其中,各一级服务器主要用于对请求节点的请求进行解析和转发,各二级服务器主要用于进行资源管理和分配。
下面通过对一级服务器103和二级服务器104的具体处理过程的介绍,说明上述系统的工作方式。可以理解,上述系统中的其他一级服务器和二级服务器的工作方式是类似的。
一级服务器103,用于对点对点网络的请求节点102发出的请求进行解析,以确定请求类型,当请求类型与资源相关时,将请求转发至该资源对应的二级服务器104。
该资源对应的二级服务器104,用于当请求类型为查询该资源时,确定点对点网络中具有该资源的在线节点,并将所述在线节点的地址返回一级服务器103。
一级服务器103还用于将所述在线节点的地址返回至请求节点102。
在点对点网络中,请求类型可参见表1,表1作为示意,列举了点对点网络中主要的请求类型。
表1
上述请求类型中,有的请求类型是与节点状态相关的,即节点进入点对点网络或退出点对点网络时,向一级服务器103发送的请求。有的请求类型是与资源相关的,即节点上报某种资源、删除某种资源或查询某种资源时,向一级服务器103发送的请求。上述请求类型,在请求节点102发送的请求中,可通过一个协议标识来表示,这样,当一级服务器103在解析请求时,即可通过该协议标识确定请求类型。
在确定了请求类型后,如果请求类型与资源相关,一级服务器103会将请求转发至该资源对应的二级服务器104。为了便于说明,下面以请求类型与资源X相关进行介绍,此时,一级服务器103将请求转发至资源X对应的二级服务器104。
例如某个请求是查询资源X,则该请求中会包含资源X的哈希值,一级服务器103根据资源X的哈希值,就可以把该请求转发至资源X对应的二级服务器104。
可见,一级服务器103在将请求进行转发前,需要先确定哪个二级服务器才是资源X对应的二级服务器104。在本实施例中,一级服务器103确定资源X对应的二级服务器104的方式包括:将请求包含的资源X的哈希值转换为整数,求该整数与各个二级服务器的总数之间的余数,并将以该余数为编号的二级服务器作为资源X对应的二级服务器104。
资源文件的哈希值是一个包括数字和字母的字符串,例如“123abc456def9876”,因此,上述实施方式中需要先将资源X的哈希值转换为整数,以方便后续处理。在本发明中不限定将哈希值转换为整数的具体算法,本领域技术人员应该理解,任意一个可实施的转换算法都是可以的。
下面通过一个具体例子,说明一级服务器103确定资源X对应的二级服务器104的方式。假设资源X的哈希值转换成的整数为65235,而本实施例的系统在架设时,二级服务器的总数为5(编号分别从0到4),则求65234与5的余数得到0,说明资源X对应的二级服务器的编号为0(即第1台二级服务器为资源X对应的二级服务器104)。
请参考图3,图3为本发明中资源对应的二级服务器的实施例一的结构示意框图。如图3所示,本实施例中,资源X对应的二级服务器104包括:第一查询单元1041和第二查询单元1042。其中,第一查询单元1041,用于根据资源X对应的二级服务器104中保存的资源与节点映射表1043,确定具有资源X的节点。第二查询单元1042,用于根据资源X对应的二级服务器104中保存的在线节点表1044,确定具有资源X的节点中的在线节点作为点对点网络中具有资源X的在线节点。在本实施例中,资源与节点映射表包括各个资源与含有该资源的节点之间的对应关系。
请参考图4和图5,图4和图5分别是本实施例中的资源与节点映射表1043及在线节点表1044的数据结构示意图。
第一查询单元1041根据请求中包含的资源X的哈希值查找图4所示的资源与节点映射表1043,从表中找到资源X的哈希值对应的记录,从该记录即可确定具有资源X的节点。然后第二查询单元1042再查找图5所示的在线节点表1044,从第一查询单元1041得到的具有资源X的节点中找出在线节点,这些在线节点就是本实施例中点对点网络中具有资源X的在线节点。
请参考图6,图6为本发明中资源对应的二级服务器的实施例二的结构示意框图。如图6所示,本实施例中,资源X对应的二级服务器104包括:地域确定单元104a、第三查询单元104b及第四查询单元104c。
其中,地域确定单元104a,用于从请求中确定请求节点所属地域。很容易理解,请求中包含了请求节点的IP地址,地域确定单元104a通过请求节点的IP地址,即可确定请求节点所属地域。
第三查询单元104b,用于根据资源X对应的二级服务器中保存的资源与节点映射表104d,确定具有资源X的节点中与请求节点属于相同地域的节点。第四查询单元104c,用于根据资源X对应的二级服务器中保存的在线节点表104e,确定第三查询单元104b得到的与请求节点属于相同地域的节点中的在线节点作为点对点网络中具有资源X的在线节点。在本实施例中,资源与节点映射表包括各个资源与含有该资源、且以地域划分的节点之间的对应关系。
请参考7,图7为本实施例中资源与节点映射表104d的数据结构示意图。在本实施例中,在线节点表104e的数据结构与实施例一中的在线节点表1044是类似的,因此不再另给出示意图。
本实施例中,第三查找单元104b根据请求中包含的资源X的哈希值,查找图7所示的资源与节点映射表104d,从表中找到资源X的哈希值对应的记录,再根据地域确定单元104a确定的请求节点所属地域,从该记录中提取相同地域下的节点即可得到具有资源X且与请求节点属于相同地域的节点。然后第四查询单元104c再查找在线节点表,从第三查询单元104b得到的节点中找出在线节点,这些节点就是本实施例中点对点网络中具有资源X的在线节点。
根据图6所示的实施例,本发明的服务器系统能够向请求节点返回距离较近的在线节点,这种方式能够降低整个点对点网络的数据传输负担,使得节点间的内容传输速度更快。
可以理解,在本发明的服务器系统中,各个二级服务器中保存的在线节点表是相同的,均是整个点对点网络中在线节点的信息,而各个二级服务器中保存的资源与节点映射表则并不相同,每个二级服务器中保存了点对点网络中的部分资源信息,这样整个系统实现了负载均衡,与现有技术中单纯提高服务器内存的方式相比,本发明的可扩展性要强很多,只需要增加二级服务器数量,就能够很好地应对点对点网络中节点数量增加的情况。
以上对请求节点102发送的请求类型为查询资源X时,资源X对应的二级服务器104的工作方式进行了介绍,此外,当请求类型为表1所示的上报或删除资源X时,资源X对应的二级服务器104还用于根据请求更新二级服务器104中保存的资源与节点映射表。
例如请求节点102发送的请求类型为删除资源X,则二级服务器104会在保存的资源与节点映射表中删除资源X对应记录下的节点102,以达到更新资源与节点映射表的目的。可以理解,无论资源与节点映射表是图4还是图7所示的结构,二级服务器104更新该表的方式都是类似的。
此外,当请求类型是表1所示的与节点状态相关的类型时,一级服务器103还用于将请求转发至各个二级服务器,各个二级服务器还用于利用请求更新该二级服务器中保存的在线节点表。
例如请求节点102的请求类型为节点退出,一级服务器103就会将该请求转发至每个二级服务器,并且每个二级服务器都会删除保存的在线节点表中的节点102,以达到更新在线节点表的目的。
请参考图8,图8为本发明的在点对点网络中对请求进行响应的方法的实施例的流程示意图。如图8所示,该实施例包括:
步骤S201:一级服务器对点对点网络的请求节点发送的请求进行解析,以确定所述请求类型,当所述请求类型与资源相关时,将所述请求转发至所述资源对应的二级服务器。
步骤S202:所述资源对应的二级服务器当所述请求类型为查询所述资源时,确定点对点网络中具有所述资源的在线节点,并将在线节点的地址返回所述一级服务器,由所述一级服务器将在线节点的地址返回至请求节点。
根据一个实施例,步骤S201中所述一级服务器确定所述资源对应的二级服务器的步骤包括:
将所述请求包含的所述资源的哈希值转换为整数,求该整数与各个二级服务器的总数之间的余数,并将以该余数为编号的二级服务器作为所述资源对应的二级服务器。
根据一个实施例,步骤S202中,所述资源对应的二级服务器确定点对点网络中具有所述资源的在线节点的步骤包括:
步骤S2021:根据所述资源对应的二级服务器中保存的资源与节点映射表,确定具有所述资源的节点,其中资源与节点映射表包括各个资源与含有该资源的节点之间的对应关系。
步骤S2022:根据所述资源对应的二级服务器中保存的在线节点表,确定具有所述资源的节点中的在线节点作为点对点网络中具有所述资源的在线节点。
根据另外一个实施例,步骤S202中,所述资源对应的二级服务器确定点对点网络中具有所述资源的在线节点的步骤包括:
步骤S202a:从所述请求中确定所述请求节点所属地域。
步骤S202b:根据所述资源对应的二级服务器中保存的资源与节点映射表,确定具有所述资源的节点中与所述请求节点属于相同地域的节点,其中所述资源与节点映射表包括各个资源与含有该资源、且以地域划分的节点之间的对应关系。
步骤S202c:根据所述资源对应的二级服务器中保存的在线节点表,确定与所述请求节点属于相同地域的节点中的在线节点作为点对点网络中具有所述资源的在线节点。
根据一个实施例,步骤S201进一步包括:当所述请求类型与节点状态相关时,所述一级服务器将所述请求转发至各个二级服务器,且步骤S202进一步包括:各个二级服务器根据所述请求更新该二级服务器中保存的在线节点表。
根据一个实施例,步骤S202进一步包括:当所述请求类型为上报或删除所述资源时,所述资源对应的二级服务器根据所述请求更新所述资源对应的二级服务器中保存的资源与节点映射表。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。