掌桥专利:专业的专利平台
掌桥专利
首页

一种电子商务流向路径多线程并行检测方法及设备

文献发布时间:2023-06-19 18:32:25


一种电子商务流向路径多线程并行检测方法及设备

技术领域

本发明涉及电子商务交易检测技术领域,特别是涉及一种电子商务流向路径多线程并行检测方法及设备。

背景技术

在互联网大数据分析领域,电商交易流水记录中的关系图数据,是电商平台风控和监管的一项重要依据。由于每天用户交易记录数据量庞大,账号之间的交往在商业大数据分析领域交易信息可能错综复杂,电子商务交易网络中的环路是欺诈活动的强烈迹象。当从账户提交新交易时,简单路径枚举用于报告所有新形成的循环,以检测欺诈活动。因此如何从海量复杂数据检测出点与点之间的简单路径是需要解决的重要问题。

图数据结构使用顶点和边表示一组对象及对象之间的关系,可以使用有向图直观、自然地对银行交易数据进行建模。在电子商务交易网络的大数据规模下,传统的深度优先搜索流入账号和流出账号的简单路径会出现内存爆炸,运行缓慢的问题。

对电商流水记录这种海量数据使用串行方法检测简单路径存在许多不足。一方面,串行方法无法充分利用多核多处理器的高并发性,造成底层硬件资源的大幅度浪费;另一方面,串行简单路径挖掘效率低,无法满足快速检测的要求。

发明内容

为解决现有技术存在的上述问题,本发明提供了一种电子商务流向路径多线程并行检测方法及设备。

为实现上述目的,本发明提供了如下方案:

一种电子商务流向路径多线程并行检测方法,包括:

获取电商平台交易记录;

基于所述电商平台交易记录生成有向图;

获取待检测账号流水信息,并基于所述待检测账号流水信息得到流入流出账户对;

采用并行检测方法基于所述流入流出账户对检测所述有向图得到交易路径;

在采用并行检测方法基于所述流入流出账户对检测所述有向图得到交易路径的过程中,还包括:

每个并行检测线程根据搜索进度修改结点的状态信息;

基于所述结点的状态信息确定是否访问下一结点。

优选地,所述基于所述电商平台交易记录生成有向图,具体包括:

以所述电商平台交易记录中的流出账户为起始顶点,以所述电商平台交易记录中的流入账户为终止顶点,以所述电商平台交易记录中的交易路径为边生成所述有向图。

优选地,采用并行检测方法基于所述流入流出账户对检测所述有向图得到交易路径,具体包括:

采用所述并行检测方法,以所述流入流出账户对中的流出账户为起始点,以所述流入流出账户对中的流入账户为终止点,深度优化搜索所述有向图得到流入流出账户对间的所有交易路径。

优选地,深度优化搜索所述有向图得到流入流出账户对间的所有交易路径,具体包括:

基于所述有向图构建路径栈;

基于所述起始点判断所述路径栈是否为空,得到第一判断结果;

当所述第一判断结果为是时,结束检测;

当所述第一判断结果为否时,获取所述路径栈的顶结点;

遍历所述顶结点的邻居结点;

判断所述顶结点的邻居结点是否遍历完成,得到第二判断结果;

当所述第二判断结果为是时,判断所述顶结点的邻居结点是否有可达结点,得到第三判断结果;

当所述第三判断结果为是时,将所述顶结点标记为可达结点,并将所述顶结点从所述路径栈中删除;

将所述路径栈中删除的顶结点的邻居结点作为新的顶结点,并返回执行“遍历所述顶结点的邻居结点”;

当所述第三判断结果为否时,将所述顶结点从所述路径栈中删除,将所述路径栈中删除的顶结点的邻居结点作为新的顶结点,并返回执行“遍历所述顶结点的邻居结点”;

当所述第二判断结果为否时,判断所述顶结点是否为已完成结点和不可达结点,得到第四判断结果;

当所述第四判断结果为是时,将所述顶结点从所述路径栈中删除,将所述路径栈中删除的顶结点的邻居结点作为新的顶结点,并返回执行“遍历所述顶结点的邻居结点”;

当所述第四判断结果为否时,获取所述顶结点的任意一个邻居结点,记为结点u,并判断所述结点u是否为已完成结点,得到第五判断结果;

当所述第五判断结果为是时,判断所述结点u是否为可达结点,得到第六判断结果;

当所述第六判断结果为是时,将所述顶结点标记为可达结点,并判断所述结点u是否为所述终止点,得到第七判断结果;

当所述第七判断结果为是时,得到流入流出账户对间的一条交易路径,并返回执行“基于所述起始点判断所述路径栈是否为空,得到第一判断结果”;

当所述第六判断结果为否时,将所述结点u从所述路径栈中删除,并返回执行“基于所述起始点判断所述路径栈是否为空,得到第一判断结果”;

当所述第七判断结果为否时,检测结束;

当所述第五判断结果为否时,判断所述结点u是否被访问过,得到第八判断结果;

当所述第八判断结果为是时,检测结束;

当所述第八判断结果为否时,将所述结点u做入栈处理并标记为已访问。

根据本发明提供的具体实施例,本发明公开了以下技术效果:

本发明提供的电子商务流向路径多线程并行检测方法,基于获取的电商平台交易记录生成有向图后,基于获取的待检测账号流水信息得到流入流出账户对,然后,采用并行检测方法基于流入流出账户对检测有向图得到交易路径,以实现电子商务交易的快速检测,进而避免出现底层硬件资源大幅度浪费的问题出现。

本发明还提供了一种电子商务流向路径多线程并行检测设备,该设备包括:

存储器,用于存储计算机软件程序;所述计算机软件程序用于实施上述提供的电子商务流向路径多线程并行检测方法;

处理器,与所述存储器连接,用于调取并执行所述计算机软件程序。

优选地,所述处理器包括:

交易记录获取模块,用于获取电商平台交易记录;

有向图生成模块,用于基于所述电商平台交易记录生成有向图;

账户对生成模块,用于获取待检测账号流水信息,并基于所述待检测账号流水信息得到流入流出账户对;

交易路径检测模块,用于采用并行检测方法基于所述流入流出账户对检测所述有向图得到交易路径。

优选地,所述存储器为计算机可读存储介质。

因本发明提供的电子商务流向路径多线程并行检测设备实现的技术效果与上述提供的电子商务流向路径多线程并行检测方法实现的技术效果相同,故在此不再进行赘述。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的电子商务流向路径多线程并行检测方法的流程图;

图2为本发明提供的电子商务流向路径多线程并行检测实施架构图;

图3为本发明实施例提供的每个线程运行深度优先算法流程图;

图4为本发明提供的电子商务流向路径多线程并行检测设备的结构示意图;

图5为本发明实施例提供的并发的共享数据结构示意图;

图6为本发明实施例提供的本发明实施例提供的从电商平台交易记录中构建的有向图及其CSR存储结构的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的目的是提供一种电子商务流向路径多线程并行检测方法及设备,能够满足快速电子商务交易检测的要求,避免出现底层硬件资源大幅度浪费的问题出现。

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

实施例一

本实施例提供了一种电子商务流向路径多线程并行检测方法,如图1和图2所示,该方法包括:

步骤100:获取电商平台交易记录。

步骤101:基于电商平台交易记录生成有向图。例如,以电商平台交易记录中的流出账户为起始顶点,以电商平台交易记录中的流入账户为终止顶点,以电商平台交易记录中的交易路径为边生成有向图。

步骤102:获取待检测账号流水信息,并基于待检测账号流水信息得到流入流出账户对。

步骤103:采用并行检测方法基于流入流出账户对检测有向图得到交易路径。具体的,采用并行检测方法,以流入流出账户对中的流出账户为起始点,以流入流出账户对中的流入账户为终止点,深度优化搜索有向图得到流入流出账户对间的所有交易路径。

其中,如图3所示,深度优化搜索有向图得到流入流出账户对间的所有交易路径,具体包括:

基于有向图构建路径栈。

基于起始点判断路径栈是否为空,得到第一判断结果。

当第一判断结果为是时,结束检测。

当第一判断结果为否时,获取路径栈的顶结点。

遍历顶结点的邻居结点。

判断顶结点的邻居结点是否遍历完成,得到第二判断结果。

当第二判断结果为是时,判断顶结点的邻居结点是否有可达结点,得到第三判断结果。

当第三判断结果为是时,将顶结点标记为可达结点,并将顶结点从路径栈中删除。

将路径栈中删除的顶结点的邻居结点作为新的顶结点,并返回执行“遍历顶结点的邻居结点”。

当第三判断结果为否时,将顶结点从路径栈中删除,将路径栈中删除的顶结点的邻居结点作为新的顶结点,并返回执行“遍历顶结点的邻居结点”。

当第二判断结果为否时,判断顶结点是否为已完成结点和不可达结点,得到第四判断结果。

当第四判断结果为是时,将顶结点从路径栈中删除,将路径栈中删除的顶结点的邻居结点作为新的顶结点,并返回执行“遍历顶结点的邻居结点”。

当第四判断结果为否时,获取顶结点的任意一个邻居结点,记为结点u,并判断结点u是否为已完成结点,得到第五判断结果。

当第五判断结果为是时,判断结点u是否为可达结点,得到第六判断结果。

当第六判断结果为是时,将顶结点标记为可达结点,并判断结点u是否为终止点,得到第七判断结果。

当第七判断结果为是时,得到流入流出账户对间的一条交易路径,并返回执行“基于起始点判断路径栈是否为空,得到第一判断结果”。

当第六判断结果为否时,将结点u从路径栈中删除,并返回执行“基于起始点判断路径栈是否为空,得到第一判断结果”。

当第七判断结果为否时,检测结束。

当第五判断结果为否时,判断结点u是否被访问过,得到第八判断结果。

当第八判断结果为是时,检测结束。

当第八判断结果为否时,将结点u做入栈处理并标记为已访问。

优选地,在采用并行检测方法基于流入流出账户对检测有向图得到交易路径的过程中,还包括:

每个并行检测线程根据搜索进度修改结点的状态信息。

基于结点的状态信息确定是否访问下一结点。

实施例二

该实施例提供了一种电子商务流向路径多线程并行检测设备,如图4所示,包括:存储器400和处理器401。其中,存储器可以采用计算机可读存储介质。

存储器400用于存储计算机软件程序。计算机软件程序用于实施上述实施例一提供的电子商务流向路径多线程并行检测方法。

处理器401与存储器400连接,处理器401用于调取并执行计算机软件程序。

进一步,处理器401包括:交易记录获取模块、有向图生成模块、账户对生成模块和交易路径检测模块。

其中,交易记录获取模块用于获取电商平台交易记录。

有向图生成模块用于基于电商平台交易记录生成有向图。

账户对生成模块用于获取待检测账号流水信息,并基于待检测账号流水信息得到流入流出账户对。

交易路径检测模块用于采用并行检测方法基于流入流出账户对检测有向图得到交易路径。

实施例三

该实施例以上述提供的电子商务流向路径多线程并行检测设备为硬件实施系统,对上述实施例一提供的电子商务流向路径多线程并行检测方法的具体实施过程进行说明,以通过多线程处理数据,提高流出账户和流入账户之间简单路径检测的效率,并且,通过高效的内存分配机制提高内存利用率,以达到时间和空间均高效的目的。

如图5所示的共享数据结构,其主要分为两个部分:结点数组N和边数组F。

其中,结点数组N中,下标对应编号后的结点,其值为F数组对应的最后一条边的下标,每个结点都具有isDone和isReachable标记,isDone标记是线程保证算法具有并行性和剪枝能力的重要标记,表示当前结点是否被某一线程遍历完毕。isReachable标记表示通过当前结点是否可以到达终点。

边数组F保存的是N数组中结点连接的边的终点,由于数组在存储器400中占用的是一块连续的内存,因此在访问当前的结点的邻居节点速度是要比邻接表存储快很多的。

从存储器400中存储的数据库选取要读入的数据表,对表数据进行分页处理,使用多线程异步的方式将数据读入。

利用并发数据结构Hash_Map将字符串的结点数据编号,以便节省算法调用过程中使用的内存空间。

根据表数据生成改进后的CSR数据结构,压缩存储所需要的空间,便于与吐数据时与数据库的关系对应。

将CSR序列化至存储器400,当图分析算法需要使用时再从内存读入。

基于此,根据电商平台交易记录构建如图6所示的有向图及其CSR存储结构的过程具体包括:

步骤1.1:获取电商平台交易记录。

步骤1.2:将每一条交易流水对应一条有向边,流出账户作为起始顶点,流出账户作为终止顶点,构建出电商平台记录的有向图,如图6所示,图6中1,2,3,4,5,6均为有向图中的顶点。

步骤1.3:为有向图中的每个顶点构建对应V,E数组来对应有向图的结点和边的关系。两个数组连续的存放了有向图之间的边关系,若需要获得结点i的边关系,结点i的边数为V[i]-V[i-1],对应的结点为F[V[i-1]]~F[V[i]-1]。具体的,与结点3相连的结点有结点2和结点4,如图6所示,由V数组的V[3]-V[2]=2可以得到与结点3相连的边数,F[3]到F[V[3]-1]即为与结点3相连的结点2和结点4。

基于上述描述,在具体实施过程中,从电商平台数据库中读取账号流水信息,一条流水信息对应图的一条有向边,图结点为上述共享数据结构。当检测简单路径的请求被发起时,就调用多个线程(线程数由CPU决定)开始进行简单路径的深度优先搜索,结点之间的信息是线程共享的,每个线程都可以根据搜索的进度对结点的状态信息进行修改,线程也可以根据结点的状态信息决定是否需要访问下一个结点。当一个线程搜索到流入账号结点时,就将路径中的简单路径输出,可以保证算法的即时性。

其中,每个线程运行深度优先算法如图3所示,其基本思想是使用深度优先搜索算法和回溯在共享数据结构上生成所有可能的解决方案。一开始,存在多个线程从源 vertex开始 DFS 操作。然后,尝试遍历它的所有邻居。对于每个邻居,尝试让每个线程遍历不同的邻居,同时不希望线程重复遍历已完成节点,依此类推。当一个线程搜索到一条流出账号到流入账号的简单路径,就将这条简单路径输出。为了避免循环,必须防止任何顶点在简单路径中被多次访问。处理完某个顶点后,应该将其从当前路径中移除,因此在返回之前将其标记为未访问。这一步的原因是同一个节点可以是多个不同路径的一部分。但是,它不能多次成为同一路径的一部分。

具体步骤如下:

首先将终点的isDone和isReachable置为true,终点是简单路径上最后一个点,是可达的且是已完成的,即不必再继续往下探索。对每个线程做了初始化,将除了终点外的所有结点置为未访问,并将起点压入路径栈。以栈非空作为循环的条件,每次取出栈顶,对于顶结点v,分为三种情况处理。第一种,如果顶结点v的所有邻居结点都被访问过,且邻居结点中有一个可达结点,则顶结点v的isreachable也置为true,否则,顶结点v标记为done,出栈并标记为未访问。第二种情况,顶结点v的done标记为空,直接出栈即可,无需对一个结点重复处理两次。最后一种情况处理邻居结点,取了顶结点v的随机一个邻居结点u,若结点u是已完成结点且可达终点,则也需标记为可达结点,如果这个结点同时也是终点,则直接将简单路径输出,若结点u是未完成结点且未被访问过,将结点u入栈继续进行下一层循环。

基于上述描述,相对于现有技术,本发明提供的电子商务流向路径多线程并行检测方法及设备具有以下优点:

与已有技术相比,本发明的有益效果体现在:

1、本发明采用多线程并行的方式构建数据图层,能够充分利用底层硬件多核多处理器的高并发性,有效提升计算性能,降低反馈延迟,可以处理包含数十亿个顶点和数千亿至万亿条边的大规模银行交易数据,能够满足实际应用的需求。

2、本发明采用多线程共享数据的深度优先搜索,当一个线程找到简单路径时就将直接输出,可以保证数据反馈的及时性,不同线程对每个结点的邻居节点随机访问,保证了每个线程大概率走不同的方向,能够在不牺牲并行性的情况下修剪不必要的计算,提高效率。

3、本发明使用CSR数据结构可以更快读取结点的对应的边,不需要对图进行提前整合,程序一次性可读入多张数据表,对数据表结点进行编号存储,减少额外的内存开销。该策略避免对图进行预处理,节省了预处理所需的空间和时间开销。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。

技术分类

06120115602077