数据处理的方法和系统
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理的方法和系统。
背景技术
随着科技的不断进步,互联网已经成为当今社会日常工作、生活不可或缺的重要组成部分。互联网的网络规模在飞速扩展,同时网络拓扑结构也在不断变化。从超大规模的复杂网络拓扑结构中,提取网络拓扑结构的主要特征对于指导网络建设和互联网信息利用具有重要意义。
一个网络拓扑结构可以抽象为一张由节点集和链路集组成的拓扑结构图。
节点的度值是指与其连接的其他节点的数目,反映的是节点的相邻节点的多少,从一个方面说明了该节点的重要性。
拓扑结构图的K-核是指在拓扑结构图中反复去掉节点的度值小于等于K的节点及与其连接的链路后剩余的拓扑结构图的子图。K值越大,反映了该子图在拓扑结构图中处于更加核心的层次。
节点的核数值表明了该节点在拓扑结构图中的层次,从另一个方面说明了该节点的重要性。核数值为K的节点存在于拓扑结构图的K-核中,而不会存在于拓扑结构图的(K+1)-核中。
现有的提取网络拓扑结构的主要特征的实现方式是:保存拓扑结构图及其各级K-核的子图,迭代删除节点的度值小于等于K的节点及与节点连接的链路,最终运算得到每个节点的核数值。
容易想到的是,随着拓扑结构图的复杂度的增大,而计算机的硬件和软件资源是有限的,必然会出现瓶颈环节。现实中当节点和链路的数量级在百万级别时,计算机依靠内存、处理器保存拓扑结构图及其各级K-核的子图、迭代运算进行删除节点的度值小于等于某一数值的节点及与节点连接的链路,尚可勉力完成提取拓扑结构图的主要特征。而当节点和链路的数量级在十亿级别时,则会导致内存溢出,而无法完成提取拓扑结构的主要特征。因此,现有的数据处理的方法应用范围窄、执行效率低。
因此,发明人在对现有的互联网的拓扑结构进行研究的基础上提供一种应用范围广、执行效率高的数据处理的方法和系统。
发明内容
本申请实施例提供一种应用范围宽、执行效率高的数据处理的方法,具体的,一种数据处理的方法,应用于由多个服务器构成的分布式系统中,该方法包括:
所述分布式系统中的各服务器分别获取拆分后的拓扑结构图,所述拓扑结构图由节点集和链路集构成;
各服务器处理拆分后的拓扑结构图,计算各节点的级别;
根据各节点的级别提取所述拓扑结构图的主要特征。
本申请实施例还提供一种数据处理的系统,由多个服务器按照整体同步并行计算模型构成分布式系统,包括:
服务器,用于分别获取拆分后的拓扑结构图,所述拓扑结构图由节点集和链路集构成;用于处理拆分后的拓扑结构图,计算各节点的级别;用于根据各节点的级别提取所述拓扑结构图的主要特征。
本申请实施例提供的数据处理的方法和系统,至少具有如下有益效果:
该方法利用分布式系统中的多个服务器同步并行运算,从而可以快速处理复杂的拓扑结构图。因此,该方法应用范围广、执行效率高。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的数据传输的方法的流程图。
图2为本申请实施例提供的分布式系统中的各服务器分别获取拆分后的拓扑结构图的流程图。
图3为本申请实施例提供的各服务器处理拆分后的拓扑结构图,计算各节点的级别的流程图。
图4为本申请实施例提供的拓扑结构图的示例图。
图5为本申请实施例提供的服务器对拆分后的拓扑结构图执行运算模型中的启动步骤的流程图。
图6为本申请实施例提供的服务器对拆分后的拓扑结构图执行运算模型中的启动步骤中启动操作的流程图。
图7为本申请实施例提供的拓扑结构图的示例图处理中的第一过程图。
图8为本申请实施例提供的服务器对拆分后的拓扑结构图执行运算模型中的循环步骤的流程图。
图9为本申请实施例提供的服务器对拆分后的拓扑结构图执行运算模型中的循环步骤中循环操作的流程图。
图10为本申请实施例提供的拓扑结构图的示例图处理中的第二过程图。
图11为本申请实施例提供的拓扑结构图的示例图处理中的第三过程图。
图12为本申请实施例提供的拓扑结构图的示例图处理中的第四过程图。
图13为本申请实施例提供的拓扑结构图的示例图处理中的第五过程图。
图14为本申请实施例提供的拓扑结构图的示例图处理中的第六过程图。
图15为本申请实施例提供的数据传输的系统的结构示意图。
具体实施方式
为了解决现有的数据处理的方法,无法提取节点和链路的数量级在百万以上拓扑结构图的主要特征的技术问题。本申请实施例提供的数据处理的方法,利用分布式系统中的多个服务器同步并行运算,从而可以快速处理节点和链路的数量级在百万以上拓扑结构图。经实验验证,该方法对于节点和链路在十亿数量级的拓扑结构图,可以在分钟数量级上实现提取拓扑结构图的主要特征。因此,本申请实施例提供的数据处理的方法应用范围广、执行效率高。
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的数据处理的方法的流程图,具体包括以下步骤:
S100:分布式系统中的各服务器分别获取拆分后的拓扑结构图,所述拓扑结构图由节点集和链路集构成。
正如背景技术中所载,网络拓扑结构可以抽象为一张由节点集和链路集组成的拓扑结构图。对于拓扑结构图在各服务器之间如何拆分,后面会进行详细描述,此处不再赘述。
本申请实施例提供拓扑结构图的一种应用,该应用涉及商品交易系统。对于商品交易系统而言,节点集主要是由商户标识、商品标识、用户标识等节点组成。而链路集主要是由表征商户标识、用户标识之间的资金流转关系的资金链路,以及表征商户标识、用户标识、用户标识之间的位置变动的运输链路等链路组成。
本申请实施例还提供拓扑结构图的另一种应用,该应用涉及案件主体查找系统。对于案件主体查找系统而言,节点集主要是由证人标识、证据标识、通讯设备标识、被害人标识、嫌疑人标识、金融账户标识等节点组成。而链路集主要是由多个嫌疑人标识之间发生的资金流转关系的资金链路、嫌疑人标识与受害人标识之间发生的资金流转关系的资金链路、多个嫌疑人标识之间发生的通讯联系的通讯链路、在各种笔录上面记载的证人标识、证据标识与嫌疑人标识之间的记录链路等链路组成。
这里的分布式系统,由若干服务器按照并行计算框架组织在一起。在处理节点和链路的数量级在百万以上拓扑结构图时,分布式系统中的各服务器分别获取其中一部分,并同步进行处理,从而可以实现复杂的拓扑结构图的快速处理。因此,本申请实施例提供的数据处理的方法应用范围广、执行效率高。
S200:各服务器处理拆分后的拓扑结构图,计算各节点的级别。
正如背景技术中所记载,节点的核数值表明了该节点在拓扑结构图中的层次,说明了该节点的重要性。节点的核数值在一定程度上反映了节点的级别。在本申请实施例提供的技术方案中,主要通过核数值来表征节点的级别。容易理解的是,通过其他参数,例如背景技术中所记载的节点的度值来表征节点的级别也是可以的,当然,综合节点的核数值与度值来表征节点的级别也是可以的。本申请实施例提供的技术方案中,之所以采用核数值作为表征节点的级别,是因为,核数值反应的是节点的层次性,是一种核心的参数。并且根据实际的研究结果,一个节点的度值的最大有可能超过千的数量级,而节点的核数值即便在复杂的网络拓扑结构图中,核数值超过30的节点都极少,波动性小,便于拓扑结构图的研究及应用。
如何计算节点的级别,对于本申请实施例而言,即如何计算节点的核数值,后面会进行专门描述,此处不在赘述。
仍以商品交易系统为例,介绍一种针对该商品交易系统的拓扑结构图,计算拓扑结构图中节点的级别的应用。具体的,是从商品交易系统的数据中查找一款热销的商品。对于正常的交易而言,一款商品的销售必然对应商品的运输及资金的流转。然而,在交易活动中,有时会发生商品的退订,或者恶意刷新交易记录的情形。真实的热销商品,必然在整个拓扑结构图中处于核心的层次。因而,通过确定各节点的核数值,可以计算各节点的级别,从而识别出真实热销的商品。
再以案件主体查找系统为例,介绍一种针对该案件主体查找系统的拓扑结构图,计算拓扑结构图中节点的级别的应用。具体的,从多个案件主体的关联图中查找真实的嫌疑人。多个嫌疑人共同犯罪时,共同犯罪的嫌疑人之间通常会进行通讯联络、分赃、出现在同一地点等行为。因而,共同犯罪的嫌疑人在整个拓扑结构图中处于核心的层次。因而,通过确定各节点的核数值,可以计算各节点的级别,从而识别出真实的嫌疑人。
S300:根据各节点的级别提取所述拓扑结构图的主要特征。
根据计算出的节点的级别,确定出拓扑结构图中的处于核心层次的节点,再根据这些节点描述出拓扑结构图的主要特征。
例如,从商品交易系统的数据中查找一款热销的商品的应用。核数值大的商品标识,是拓扑结构图中处于核心层次的节点,该商品标识所表征的商品是真实的热销商品。
再例如,从多个案件主体的关联图中查找真实的嫌疑人的应用,核数值大的嫌疑人标识,是拓扑结构图中处于核心层次的节点,该嫌疑人标识所表征的是真实的嫌疑人。
在本申请实施例中,分布式系统中的多个服务器同步并行运算,从而可以快速处理复杂的拓扑结构图。在实际使用中,该方法可以快速处理节点和链路的数量级在百万以上拓扑结构图。经实验验证,该方法对于节点和链路在十亿数量级的拓扑结构图,可以在分钟数量级上实现提取拓扑结构图的主要特征。因此,本申请实施例提供的数据处理的方法应用范围广、执行效率高。
进一步的,根据拓扑结构图的主要特征对拓扑结构图进行优化。
例如,从商品交易系统的数据中查找一款热销的商品的应用。统计核数值最大的节点的最大度值,定义为极限度值。假设,根据拓扑结构图,存在一些节点的度值显著大于该极限度值。则,可以判断出这些节点中的商户标识所代表的商户在恶意刷新交易记录。将这些节点、以及与这些节点存在链路的节点删除,以便优化拓扑结构图,使其表示真实的交易记录。商品交易系统可以对这些节点中的商户标识所代表的商户进行查封商户标识的处理。
下面对于拓扑结构图在各服务器之间如何拆分进行详细描述。
进一步的,所述服务器包括主服务器和从服务器。
请参照图2,分布式系统中的各服务器分别获取拆分后的拓扑结构图,具体包括:
S101:主服务器将节点集中的各节点的识别码生成哈希值,并根据哈希值将各节点根据预设分布规则发布到主服务器和各从服务器;
S102:各服务器分别获取到拆分后的拓扑结构图,其中,拆分后的拓扑结构图由分布于其上的节点集、相邻两个节点之间的链路集构成。
在本申请实施例中,分布式系统中的各服务器可以选择一台服务器固定作为主服务器,也可以任意指定一台服务器作为主服务器。优选的,设定保存拆分前的拓扑结构图的服务器为主服务器。这样,既加快了拓扑结构图载入时间,也减少了服务器之间进行网络传输的时间。
哈希(Hash)函数,即散列函数。哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。在本申请实施例中,主服务器将所有节点的识别码通过哈希函数算得每一个节点的哈希值。例如,将商户标识或通讯设备标识转化为哈希值。然后将这些哈希值对应的节点根据预设分布规则发布到主服务器和各从服务器。分布式系统中的各服务器则分别获取节点集的子集,同时两个节点之间的关系则构成链路集的子集。
应当指出的是,这里提到的分布式系统中的各服务器分别获取拆分后的拓扑结构图,对应某个服务器保存了统一的拆分前的拓扑结构图的情形。而对于由各服务器已经各自分别保存一部分拓扑结构图的情形,则可以视为各服务器已经分别获取到了拆分的拓扑结构图。
进一步的,根据哈希值将各节点根据预设分布规则发布到主服务器和各从服务器,具体包括:
将各哈希值对应的节点均匀发布到主服务器和各从服务器。
进一步的,根据哈希值将各节点根据预设分布规则发布到主服务器和各从服务器,具体包括:
将各哈希值对应的节点随机发布到主服务器和各从服务器。
在本申请实施例中,假设,节点数量为N,服务器数量M,则根据均匀发布的预设分布规则,每个服务器大致获得INT(N/M)个节点。INT(N/M),即节点数量与服务器数量比值取整。有的服务器获得INT(N/M)个节点,有的服务器获得INT(N/M)+1个节点。本申请实施例优选的采用均匀发布的预设分布规则,这样,每个服务器的负载大致平衡,节省整体处理时间,执行效率高。
而根据随机发布的预设分布规则,每个服务器随机获得小于N的若干个节点。
请参照图3,进一步的,各服务器处理拆分后的拓扑结构图,计算各节点的级别,具体包括:
S201:各服务器初始化拆分后的拓扑结构图;
S202:基于初始化后的拓扑结构图,运行设定的运算模型,计算各节点的级别。
服务器初始化拆分后的拓扑结构图,可以使得拆分后的拓扑结构图具有规范的格式,从而便于运行设定的运算模型,获得各节点的核数值,计算出各节点的级别。
下面来介绍服务器如何初始化拆分后的拓扑结构图。
进一步的,各服务器初始化拆分后的拓扑结构图,具体包括:
各服务器设置所有节点的初始值为零值。
进一步的,相邻两个节点包括第一节点和第二节点。
各服务器初始化拆分后的拓扑结构图,具体包括:
各服务器将相邻两个节点之间的链路设置为由第一节点指向第二节点的链路和由第二节点指向第一节点的链路;
设置所述链路的初始值为非值。
在初始化过程中,每一个服务器将分布于其上的所有节点,赋予零值的初始值;将所有的链路,赋予非值的初始值。下面以图4为例,来说明初始化过程。初始化过程中,设定节点N1~节点N8的初始值为零值。并且,设定拓扑结构图中的所有链路的初始值为非值,用虚线来表示。
应当指出的是,这些被赋予的初始值仅仅是多种选择中的一种选择,当然,还可以赋予其他的初始值。例如,赋予节点“-1”的初始值,赋予链路真值的初始值。这些具体的赋予数值的方式,不应当理解为对本申请实施例的保护范围的实质性限定。
进一步的,计算各节点的级别,具体包括:
各服务器对拆分后的拓扑结构图执行运算模型中的启动步骤、循环步骤和结束步骤,生成所有节点的级别。
服务器通过对拆分后的拓扑结构图执行运算模型来生成所有节点的级别。运算模型具体的运算过程分为启动步骤、循环步骤和结束步骤。这样,可以根据拓扑结构图运算过程中每一个步骤的特性,来执行适合的算法,从而提高运算效率。下面对运算模型的每一个步骤进行详细描述。
请参照图5,进一步的,服务器对拆分后的拓扑结构图执行运算模型中的启动步骤,具体包括:
S2021:各服务器设定步骤值为零值;
S2022:服务器对获取到的拆分后的拓扑结构图中包含的所有节点逐一进行启动操作;
S2023:步骤值增加一。
首先,设定步骤值为零值,即设定superstep=0。
接着,服务器对获取到的拆分后的拓扑结构图中包含的所有节点逐一进行启动操作。
最后,步骤值增加一,即superstep=1。
下面来详细介绍服务器对获取到的拆分后的拓扑结构图中包含的所有节点逐一进行启动操作。
请参照图6,其中,启动操作为:
S2024:计算当前节点连接的、由当前节点指向相邻节点的链路值为非值的所有链路的条数;
S2025:设定当前节点的计数值为所述的条数;
S2026:判断当前节点的计数值是否等于步骤值加一;
S2027:若是,则设定当前节点的计数值为当前节点的节点值,设定当前节点指向其连接的所有相邻节点的链路值为真值,并向所有相邻节点所在服务器发送消息,所述消息为当前节点对相邻节点的消息,当前节点退出运算。
具体的,请参见图4,在启动操作时,计算当前节点连接的、由当前节点指向相邻节点的链路值为非值的所有链路的条数,设定当前节点的计数值为所述的条数。计算结果如下:节点N1的计数值为3,节点N2的计数值为3,节点N3的计数值为5,节点N4的计数值为3,节点N5的计数值为2,节点N6的计数值为4,节点N7的计数值为1,节点N8的计数值为1。
然后,判断当前节点的计数值是否等于步骤值加一。
若是,则设定当前节点的计数值为当前节点的节点值,设定当前节点指向其连接的所有相邻节点的链路值为真值,并向所有相邻节点所在服务器发送消息,所述消息为当前节点对相邻节点的消息,当前节点退出运算。
请参见图7,此时,判断出节点N7的计数值为1,等于步骤值加一。设定节点N7的节点值为1。设定节点N7指向其连接的所有相邻节点的链路值为真值,并向所有相邻节点所在服务器发送消息,即节点N7指向节点N6的链路值为真值,用实线表示,并向节点N6所在服务器发送消息。该消息为节点N7对节点N6的消息。节点N7退出运算。
请参见图7,同样,设定节点N8的节点值为1。节点N8指向节点N6的链路值为真值,用实线表示。并向节点N6所在服务器发送消息。该消息为节点N8对节点N6的消息。节点N8退出运算。
假设,若经判断所有节点的计数值均不等于步骤值加一,则步骤值直接增加一。
进一步的,服务器对拆分后的拓扑结构图执行运算模型中的循环步骤,具体包括:
请参照图8,各服务器在对拆分后的拓扑结构图执行运算模型中的启动步骤后,同步循环执行下述步骤:
S2121:各服务器对参与运算的节点逐一进行循环操作;
S2122:服务器对参与运算的所有节点进行完毕一次循环操作后,步骤值增加一。
本申请实施例中,在启动步骤后,执行循环步骤。需要指出的是,不仅上面的启动步骤,还包括这里的循环步骤,在各服务器之间是同步并行执行的。在执行循环步骤的过程中,每执行一次循环步骤,步骤值递次增加一。在一次循环步骤中,服务器对参与运算的节点逐一进行一次循环操作。
请参照图9,其中,循环操作为:
S2123:服务器针对当前节点,判断是否收到相邻节点对当前节点的消息;
S2124:若收到,则将当前节点指向作为所述消息来源的相邻节点的链路值设定为真值;
S2125:计算当前节点连接的、由当前节点指向相邻节点的链路值为非值的所有链路的条数;
S2126:设定当前节点的计数值为所述的条数;
S2127:判断当前节点的计数值是否等于步骤值加一;
S2128:若是,则设定当前节点的计数值为当前节点的节点值,设定当前节点指向其连接的所有相邻节点的链路值为真值,并向所有相邻节点所在服务器发送消息,所述消息为当前节点对相邻节点的消息,当前节点退出运算。
请参照图7,服务器对节点N1~节点N6执行逐一进行循环操作,因为节点N7和节点N8已经退出运算。
在步骤值为1时,即superstep=1。
针对节点N1,经判断未收到相邻节点(节点N2、节点N3、节点N4)对当前节点N1的消息。计算节点N1连接的、由节点N1指向相邻节点(节点N2、节点N3、节点N4)的链路值为非值的所有链路的条数。设定节点N1的计数值为所述的条数,即数值3。判断节点N1的计数值不等于步骤值加一。针对节点N1的该次循环操作完成。同样,节点N2、节点N3、节点N4情形类似。
请参照图7,针对节点N6,节点N6收到相邻节点(节点N7、节点N8)对节点N6的消息,将节点N6指向作为所述消息来源的相邻节点(节点N7、节点N8)的链路值设定为真值,此时,请参见图10。计算节点N6连接的、由节点N6指向相邻节点(节点N7、节点N8、节点N3、节点N5)链路值为非值的所有链路的条数,即数值2。判断节点N6的计数值等于步骤值加一。设定节点N6的计数值为当前节点的节点值,即设定节点N6的节点值为数值2。设定节点N6指向其连接的所有相邻节点(节点N7、节点N8、节点N3、节点N5)的链路值为真值,此时,请参照图11。并向所有相邻节点(节点N7、节点N8、节点N3、节点N5)所在服务器发送消息。消息为节点N6对相邻节点的消息。节点N6退出运算。针对节点N6的该次循环操作完成。
请参照图7,针对节点N5,经判断未收到相邻节点(节点N6、节点N3)对节点N5的消息。计算节点N5连接的、由节点N5指向相邻节点(节点N6、节点N3)的链路值为非值的所有链路的条数。设定节点N5的计数值为所述的条数,即数值2。判断节点N5的计数值等于步骤值加一。设定节点N5的计数值为当前节点的节点值,即设定节点N5的节点值为数值2。设定节点N5指向其连接的所有相邻节点(节点N6、节点N3)的链路值为真值,请参见图12。并向所有相邻节点(节点N6、节点N3)所在服务器发送消息。消息为节点N5对相邻节点的消息。节点N5退出运算。针对节点N5的该次循环操作完成。
服务器对参与运算的所有节点进行完毕一次循环操作后,此时形成的拓扑结构图请参见图13,步骤值增加一。此时,步骤值递次增加1,即superstep=2。然后,进行下一次循环操作。
请参照图13,针对节点N1,经判断未收到相邻节点(节点N2、节点N3、节点N4)对当前节点N1的消息。计算节点N1连接的、由节点N1指向相邻节点(节点N2、节点N3、节点N4)的链路值为非值的所有链路的条数。设定节点N1的计数值为所述的条数,即数值3。判断节点N1的计数值等于步骤值加一。设定节点N1的计数值为当前节点的节点值,即设定节点N1的节点值为数值3。设定节点N1指向其连接的所有相邻节点(节点N2、节点N3、节点N4)的链路值为真值,并向所有相邻节点(节点N2、节点N3、节点N4)所在服务器发送消息。消息为节点N1对相邻节点的消息。节点N1退出运算。针对节点N1的该次循环操作完成。同样,节点N2、节点N4情形类似。
请参照图13,针对节点N3,节点N3收到相邻节点(节点N5、节点N6)对节点N3的消息,将节点N3指向作为所述消息来源的相邻节点(节点N5、节点N6)的链路值设定为真值,此时,请参见图14。计算节点N3连接的、由节点N3指向相邻节点(节点N1、节点N2、节点N4、节点N6、节点N5、)链路值为非值的所有链路的条数,即数值3。判断节点N3的计数值等于步骤值加一。设定节点N3的计数值为当前节点的节点值,即设定节点N3的节点值为数值3。设定节点N3指向其连接的所有相邻节点(节点N1、节点N2、节点N4、节点N6、节点N5)的链路值为真值,并向所有相邻节点(节点N1、节点N2、节点N4、节点N6、节点N5)所在服务器发送消息。消息为节点N3对相邻节点的消息。节点N3退出运算。针对节点N3的该次循环操作完成。
在本次循环操作中,算得节点N1、节点N2、节点N3、节点N4的节点值均为数值3。
进一步的,服务器对拆分后的拓扑结构图执行运算模型中的结束步骤,具体包括:
各服务器判断是否存在节点值等于零值的节点;
若不存在,则根据节点值确定节点的级别。
在执行完毕一次循环步骤后,进行一次结束步骤的执行,用以决定是否应当结束循环步骤。具体的,在superstep=0或1时,存在节点值等于零值的节点,不结束循环步骤。而在superstep=2中,不存在节点值等于零值的节点,结束循环步骤。此时,根据节点值确定节点的级别。此处的节点值,即为上述核数值。
进一步的,所述节点至少包括商户标识、商品标识、用户标识中的一种;
所述链路至少包括资金链路、运输链路中的一种。
对于从商品交易系统的数据中查找一款热销的商品的应用,假设,节点N1为商户标识,节点N2为商品标识。根据各节点的级别提取所述拓扑结构图的主要特征,可以描述为节点N1对应的商户标识(商户)经营的节点N2对应商品标识(商品)热销。
进一步的,所述节点至少包括证人标识、证据标识、通讯设备标识、嫌疑人标识、金融账户标识中的一种;
所述链路至少包括资金链路、通讯链路、记录链路中的一种。
对于从多个案件主体的关联图中查找真实的嫌疑人的应用,假设,节点N1为嫌疑人标识,节点N2同样为嫌疑人标识。根据各节点的级别提取所述拓扑结构图的主要特征,可以描述为节点N1对应的嫌疑人标识(嫌疑人)和节点N2对应的嫌疑人(嫌疑人)共同参与了犯罪。
以上为本申请实施例提供的数据处理的方法,基于同样的思路,本申请实施例还提供了一种数据处理的系统。
请参照图15,为本申请实施例提供一种数据处理的系统的结构示意图。一种数据处理的系统,由多个服务器按照整体同步并行计算模型构成,包括:
服务器,用于分别获取拆分后的拓扑结构图,所述拓扑结构图由节点集和链路集构成;用于处理拆分后的拓扑结构图,计算各节点的级别;用于根据各节点的级别提取所述拓扑结构图的主要特征。
进一步的,服务器包括主服务器和从服务器。
服务器,用于分别获取拆分后的拓扑结构图,具体用于:
主服务器将节点集中的各节点的识别码生成哈希值,并根据哈希值将各节点根据预设分布规则发布到主服务器和各从服务器;
各服务器分别获取到拆分后的拓扑结构图,其中,拆分后的拓扑结构图由分布于其上的节点集、相邻两个节点之间的链路集构成。
由多个服务器按照整体同步并行计算模型构成,包括:
服务器,用于分别获取拆分后的拓扑结构图,所述拓扑结构图由节点集和链路集构成;用于处理拆分后的拓扑结构图,计算各节点的级别;用于根据各节点的级别提取所述拓扑结构图的主要特征。所述服务器包括主服务器和从服务器;
服务器,用于分别获取拆分后的拓扑结构图,具体用于:
主服务器将节点集中的各节点的识别码生成哈希值,并根据哈希值将各节点根据预设分布规则发布到主服务器和各从服务器;
各服务器分别获取到拆分后的拓扑结构图,其中,拆分后的拓扑结构图由分布于其上的节点集、相邻两个节点之间的链路集构成。
进一步的,所述主服务器,用于根据哈希值将各节点根据预设分布规则发布到主服务器和各从服务器,具体用于:
将各哈希值对应的节点均匀发布到主服务器和各从服务器。
进一步的,所述主服务器,用于根据哈希值将各节点根据预设分布规则发布到主服务器和各从服务器,具体用于:
将各哈希值对应的节点随机发布到主服务器和各从服务器。
进一步的,所述服务器,用于处理拆分后的拓扑结构图,计算各节点的级别,具体用于:
初始化拆分后的拓扑结构图;
基于初始化后的拓扑结构图,运行设定的运算模型,计算各节点的级别。
进一步的,所述服务器,用于初始化拆分后的拓扑结构图,具体用于:
设置所有节点的初始值为零值。
进一步的,相邻两个节点包括第一节点和第二节点;
所述服务器,用于初始化拆分后的拓扑结构图,具体用于:
将相邻两个节点之间的链路设置为由第一节点指向第二节点的链路和由第二节点指向第一节点的链路;
设置所述链路的初始值为非值。
进一步的,所述服务器,用于计算各节点的级别,具体用于:
对拆分后的拓扑结构图执行运算模型中的启动步骤、循环步骤和结束步骤,生成所有节点的级别。
进一步的,所述服务器,用于对拆分后的拓扑结构图执行运算模型中的启动步骤,具体用于:
设定步骤值为零值;
对获取到的拆分后的拓扑结构图中包含的所有节点逐一进行启动操作;
步骤值增加一;
其中,所述启动操作为:
计算当前节点连接的、由当前节点指向相邻节点的链路值为非值的所有链路的条数;
设定当前节点的计数值为所述的条数;
判断当前节点的计数值是否等于步骤值加一;
若是,则设定当前节点的计数值为当前节点的节点值,设定当前节点指向其连接的所有相邻节点的链路值为真值,并向所有相邻节点所在服务器发送消息,所述消息为当前节点对相邻节点的消息,当前节点退出运算。
进一步的,所述服务器,用于对拆分后的拓扑结构图执行运算模型中的循环步骤,具体用于:
对拆分后的拓扑结构图执行运算模型中的启动步骤后,同步循环执行下述步骤:
对参与运算的节点逐一进行循环操作;
对参与运算的所有节点进行完毕一次循环操作后,步骤值增加一;
其中,所述循环操作为:
服务器针对当前节点,判断是否收到相邻节点对当前节点的消息;
若收到,则将当前节点指向作为所述消息来源的相邻节点的链路值设定为真值;
计算当前节点连接的、由当前节点指向相邻节点的链路值为非值的所有链路的条数;
设定当前节点的计数值为所述的条数;
判断当前节点的计数值是否等于步骤值加一;
若是,则设定当前节点的计数值为当前节点的节点值,设定当前节点指向其连接的所有相邻节点的链路值为真值,并向所有相邻节点所在服务器发送消息,所述消息为当前节点对相邻节点的消息,当前节点退出运算。
进一步的,所述服务器,用于对拆分后的拓扑结构图执行运算模型中的结束步骤,具体用于:
判断是否存在节点值等于零值的节点;
若不存在,则根据节点值确定节点的级别。
进一步的,所述节点至少包括商户标识、商品标识、用户标识中的一种;
所述链路至少包括资金链路、运输链路中的一种。
进一步的,所述节点至少包括证人标识、证据标识、通讯设备标识、嫌疑人标识、金融账户标识中的一种;
所述链路至少包括资金链路、通讯链路、记录链路中的一种。
在本申请实施例中,分布式系统中的多个服务器同步并行运算,从而可以快速处理复杂的拓扑结构图。在实际使用中,该方法可以快速处理节点和链路的数量级在百万以上拓扑结构图。经实验验证,该方法对于节点和链路在十亿数量级的拓扑结构图,可以在分钟数量级上实现提取拓扑结构图的主要特征。因此,本申请实施例提供的数据处理的方法应用范围广、执行效率高。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数值处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数值处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数值处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数值处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数值结构、程序的模块或其他数值。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数值信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。