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

一种数据处理方法及相关设备

文献发布时间:2023-06-19 11:39:06


一种数据处理方法及相关设备

技术领域

本发明涉及通信技术领域,尤其涉及一种数据处理方法及相关设备。

背景技术

随着大数据技术的兴起,实时计算已然成为大数据领域中的前沿技术。实时计算可以实时处理不断产生的数据流(流表),并且可以对这些流表进行一些操作。而在一些场景下,需要将流表与维表进行连接,以丰富流表的内容或者对流表中的一些数据进行过滤等等。

但是,现有技术中,流表与维表进行连接的网络开销较大。

发明内容

本发明实施例提供一种数据处理方法及相关设备,以解决流表与维表进行连接的网络开销较大的问题。

第一方面,本发明实施例提供了一种数据处理方法,应用于服务器,包括:

接收第一服务器发送的维表数据;

接收第二服务器发送的流表数据,其中,所述流表数据的连接键值与所述流表数据的连接键值匹配;

对所述流表数据与所述维表数据进行连接,得到目标数据;

向终端设备发送所述目标数据。

第二方面,本发明实施例还提供了一种数据处理方法,应用于第一服务器,包括:

按照不同的连接键值将维表拆分为多个维表数据;

分别将所述多个维表数据中每个维表数据按照各自的连接键值,发送至与其连接键值对应的服务器。

第三方面,本发明实施例还提供了一种数据处理方法,应用于第二服务器,包括:

获取流表数据;

按照所述流表数据的连接键值,将所述流表数据发送至与所述连接键值对应的服务器。

第四方面,本发明实施例还提供了一种服务器,包括:

第一接收模块,用于接收第一服务器发送的维表数据;

第二接收模块,用于接收第二服务器发送的流表数据,其中,所述流表数据的连接键值与所述维表数据的连接键值匹配;

连接模块,用于对所述流表数据与所述维表数据进行连接,得到目标数据;

发送模块,用于向终端设备发送所述目标数据。

第五方面,本发明实施例还提供了一种第一服务器,包括:

拆分模块,用于按照不同的连接键值将维表拆分为多个维表数据;

发送模块,用于分别将所述多个维表数据中每个维表数据按照各自的连接键值,发送至与其连接键值对应的服务器。

第六方面,本发明实施例还提供了一种第二服务器,包括:

获取模块,用于获取流表数据;

发送模块,用于按照所述流表数据的连接键值,将所述流表数据发送至与所述连接键值对应的服务器。

第七方面,本发明实施例还提供了一种服务器,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述应用于服务器的数据处理方法的步骤,或者实现上述应用于第一服务器的数据处理方法的步骤,或者实现上述应用于第二服务器的数据处理方法的步骤。

第八方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现上述应用于服务器的数据处理方法的步骤,或者实现上述应用于第一服务器的数据处理方法的步骤,或者实现上述应用于第二服务器的数据处理方法的步骤。

本发明实施例中,通过将流表数据和维表数据按照各自的连接键值,分别发送至与连接键值对应的服务器(节点),从而实现对流表数据和维表数据的分区,这样流表数据和具有相同连接键值的维表数据在各个节点上是同分布的,对于每条流表数据来说连接查询就变成了节点本地的计算,无需通过网络请求远端数据库,从而可以减少流表与维表进行连接的网络开销。

附图说明

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

图1是本发明实施例提供的数据处理方法的流程图之一;

图2是本发明实施例提供的系统框图;

图3是本发明实施例提供的数据处理方法的流程图之二;

图4是本发明实施例提供的数据处理方法的流程图之三;

图5是本发明实施例提供的服务器的结构图之一;

图6是本发明实施例提供的服务器的结构图之二;

图7是本发明实施例提供的第一服务器的结构图;

图8是本发明实施例提供的第二服务器的结构图;

图9是本发明实施例提供的服务器的结构图之三。

具体实施方式

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

参见图1,图1是本发明实施例提供的数据处理方法的流程图,应用于服务器,如图1所示,该数据处理方法包括以下步骤:

步骤101、接收第一服务器发送的维表数据;

其中,上述维表数据可以理解为静态或周期性缓慢变化的准静态数据,第一服务器可以按照不同的连接键值将维表拆分为多个维表数据,并分别将所述多个维表数据中每个维表数据按照各自的连接键值,发送至与其连接键值对应的服务器。

步骤102、接收第二服务器发送的流表数据,其中,所述流表数据的连接键值与所述流表数据的连接键值匹配;

其中,上述流表数据可以理解为实时涌入的数据流,当流表数据涌入第二服务器时,第二服务器根据流表数据的连接键值将流表数据发送至对应的服务器。应当说明的是,每个服务器所接收到的第一服务器发送的维表数据与第二服务器发送的流表数据的连接键值应当是对应的。例如:服务器1(节点1)分别用于接收连接键值为1的流表数据和连接键值为1的维表数据,服务器2(节点2)分别用于接收连接键值为2的流表数据和连接键值为2的维表数据,服务器3(节点3)分别用于接收连接键值为3的流表数据和连接键值为3的维表数据,服务器4(节点4)分别用于接收连接键值为4的流表数据和连接键值为4的维表数据。

步骤103、对所述流表数据与所述维表数据进行连接,得到目标数据;

步骤104、向终端设备发送所述目标数据。

这样,利用维表数据是静态或者变化缓慢的特点,可以预先将不同连接键值的维表数据缓存在分布式实时计算应用的各个节点(服务器)上,同时还可以在维表数据更新时使用预计算的维表lambda数据来更新实时计算应用中缓存的维表数据,来实现超大维表与流表的连接查询,同时能兼顾维表的更新。当流表数据涌入第二服务器时,第二服务器根据流表数据的连接键值将流表数据发送至对应的服务器,从而实现对流表数据和维表数据的分区,如此,流表数据和具有相同连接键值的维表数据在各个节点上是同分布的,对于每条流表数据来说连接查询就变成了节点本地的计算,具体地,在处理实时涌入的流表数据时,从本地状态中查询需要进行连接的维表数据,进行用户定义的连接操作,以得到目标数据,然后将目标数据发送至下游的终端设备。该连接过程无需通过网络请求远端数据库,从而可以减少流表与维表进行连接的网络开销,免除了通过网络请求远端维表的过程,将连接操作限制在实时计算应用本地节点上,大大提升了流表维表连接操作的性能和吞吐量。

并且,不再通过网络查询远端数据库来实现流表和维表的连接查询,避免了网络请求带来的开销,同时不再要求维表的存储介质同时兼顾大容量和高查询性能。对于流表吞吐量增大、维表体量增大的情况,可以简单地通过横向扩展分布式实时计算应用的规模即节点数来做扩容。使用本地状态分区存储维表数据,让流表与维表的连接查询可以在本地进行,免除通过网络请求查询远端数据库,减小网络开销,并可以支持超大维表。在各种实时计算应用中,为应用提供高性能的流表与维表的连接查询,增强实时计算应用在面对大数据量时的业务逻辑处理能力。

为了更好的理解上述过程,还可以参阅图2,图2是本发明实施例提供的系统框图。如图2所示,用户可以通过制定分区键的方式决定本地状态在节点间的分布,本地状态是指实时计算应用可以在每个计算节点上本地存储一些状态数据。利用本地状态这一特性,结合维表数据是静态或准静态的特点,可以将维表数据根据连接键分区分布存储为各个节点的本地状态。分布式实时应用将涌入的流表数据分散到多个节点上,每个节点处理一部分数据,同时能根据数据的分布将一些状态数据做本地化存储,提升了实时处理流式数据的性能。

当流表数据涌入时,将流表数据也根据连接键分区,这样流表数据和具有相同连接键值的维表数据在各个节点上是同分布的,对于每条流表数据来说连接查询就变成了节点本地的计算,无需通过网络请求远端数据库。对于维表数据变化的情况,可以使用离线计算的方式对维表数据进行预计算,产生维表数据变化前后的lambda,实时计算应用读取这些lambda数据来更新本地状态中缓存的维表数据,从而实现对维表数据变化的兼容。

可选地,为了实现对本地缓存的维表数据进行更新,在接收第一服务器发送的维表数据之前,所述方法还包括:

以预设时间周期向所述第一服务器发送数据更新请求;

接收所述第一服务器响应所述数据更新请求发送的维表更新数据。

如此,通过向分布式实时计算应用的各个节点定期向第一服务器发送数据更新请求,当第一服务器上的维表被更新后,第一服务器可以基于分布式实时计算应用的各个节点所发送的数据更新请求将更新后的维表数据按照不同的连接键值,发送至对应的节点。其中,第一服务器中维表的更新可以是维表数据条目的增加、维表数据字段的更新、维表数据的删除等,当第一服务器中的维表数据条目增加时,将所增加的条目按照对应的连接键值发送至对应的节点;当维表数据字段的更新时,将有更新的维表数据按照连接键值发送至对应的节点,并在对应的节点删除数据更新前的维表数据;当第一服务器上的维表数据删减时,可以通过第一服务器向存储有该被删减的维表数据的节点发送相应删除指令,并在相应的节点删除该维表数据。

可选地,为了实现对本地缓存的维表数据进行更新,还可以采用以下方法:在接收第一服务器发送的维表数据之前,所述方法还包括:接收第一服务器按照预设时间周期发送的维表更新数据,也即通过第一服务器定期向分布式实时计算应用的各个节点发送更新后的维表数据。此外,为了实现分布式实时计算应用的各个节点上维表数据的更新,还可以是当第一服务器上的维表数据发生变化时,接收第一服务器发送的维表更新数据,对此不作限制。

可选地,所述方法还包括:

接收到第一服务器发送的维表更新数据之后,删除维表数据的历史更新数据。

其中,各个节点(服务器)在接收到第一服务器发送的维表更新数据之后,自动删除与维表更新数据对应的历史数据,从而避免节点上存在不同版本的同一类型的维表数据。

可选的,所述更新数据为表示所述多个维表数据的变化量的lambda数据。

本实施方式中,可以参照如下实现过程来进行理解。

步骤一、使用离线计算技术离线处理维表数据,生成维表数据变化前和变化后的lambda,如果是首次计算则生成的lambda就是当前的维表数据本身。lambda包含维表中一条数据的变化情况,如在该次变化中它是新增的一条还是删除的一条,或是部分字段更新的一条,以及各个字段的更新值。计算完成后维表lambda数据写入数据承载量大且适合分布式实时计算应用批量读取的存储介质如分布式文件系统中,同时清除上一次维表数据变化时产生的维表lambda数据。

步骤二、分布式实时计算应用周期性地检测存储维表lambda数据的存储介质,当发现新的维表lamda数据时读入维表lamda数据。根据预先定义的流表和维表的连接键将维表lambda数据分散到各个节点上。在每个节点上,使用分到的维表lambda数据更新本地状态中存储的维表数据,如新维表数据条目的加入,数据字段的更新,数据条目的删除等。

步骤三、对于需要进行连接查询的流表数据,使用流表与维表的连接键对流表数据分区,使流表数据分布到各个节点上。由于维表数据已经根据连接键进行了分区,这样拥有相同连接键值的流表数据和维表数据就分布到了同一个节点上。

步骤四、处理流表数据时从本地状态中查询需要进行连接的维表数据,进行用户定义的连接操作,完成后将结果发射到下游终端设备。

步骤五、每当实时计算应用检测到维表lambda数据有变化都执行步骤一描述的维表数据更新操作。

本发明本实施方式中,针对维表数据不是完全静态可能会缓慢变化的情况,通过对维表数据离线计算变化前后的lambda,让实时计算应用读取该lambda数据可以实现对各本地存储的维表数据的更新。离线计算维表数据变化前后的lambda,实时计算应用读取lambda更新本地状态中存储的维表数据,兼容缓慢变化的维表。

可选地,所述流表数据的连接键值与所述服务器相对应,其中,由所述第二服务器根据所述流表数据的连接键值,将所述流表数据发送至对应的服务器。

具体地,由于维表数据可以是预先缓存于服务器上,且同一服务器上所缓存的维表数据的连接键值相同,因此,所述流表数据的连接键值与所述服务器相对应,可以理解为:所述流表数据的连接键值与所述服务器上所存储的维表数据的连接键值相对应。

本发明实施例的一种数据处理方法,应用于服务器,即应用于分布式实时计算应用的各个节点中的其中一个节点,通过将流表数据和维表数据按照各自的连接键值,分别发送至与连接键值对应的服务器(节点),从而实现对流表数据和维表数据的分区,这样流表数据和具有相同连接键值的维表数据在各个节点上是同分布的,对于每条流表数据来说连接查询就变成了节点本地的计算,无需通过网络请求远端数据库,从而可以减少流表与维表进行连接的网络开销。

参见图3,图3是本发明实施例提供的数据处理方法的流程图,应用于第一服务器,如图3所示,该数据处理方法包括以下步骤:

步骤301、按照不同的连接键值将维表拆分为多个维表数据;

步骤302、分别将所述多个维表数据中每个维表数据按照各自的连接键值,发送至与其连接键值对应的服务器。

本实施例中的各个步骤,在应用于服务器侧的数据处理方法的实施例中已经做了相关详细的解释,请参阅应用于服务器侧的数据处理方法的实施例进行理解,在此不再赘述。

本发明实施例的一种数据处理方法,应用于第一服务器,包括:按照不同的连接键值将维表拆分为多个维表数据;分别将所述多个维表数据中每个维表数据按照各自的连接键值,发送至与其连接键值对应的服务器。通过本发明提供的数据处理方法,可以减少流表与维表进行连接的网络开销。

参见图4,图4是本发明实施例提供的数据处理方法的流程图,应用于第二服务器,如图4所示,该数据处理方法包括以下步骤:

步骤401、获取流表数据;

步骤402、按照所述流表数据的连接键值,将所述流表数据发送至与所述连接键值对应的服务器。

本实施例中的各个步骤,在应用于服务器侧的数据处理方法的实施例中已经做了相关详细的解释,请参阅应用于服务器侧的数据处理方法的实施例进行理解,在此不再赘述。

本发明实施例的一种数据处理方法,应用于第二服务器,包括:获取流表数据;按照所述流表数据的连接键值,将所述流表数据发送至与所述连接键值对应的服务器。通过本发明提供的数据处理方法,可以减少流表与维表进行连接的网络开销。

参见图5,图5是本发明实施例提供的服务器的结构图,能实现上述实施例中应用于服务器的数据处理方法的细节,并达到相同的效果。如图5所示,服务器500包括:

第一接收模块501,用于接收第一服务器发送的维表数据;

第二接收模块502,用于接收第二服务器发送的流表数据,其中,所述流表数据的连接键值与所述维表数据的连接键值匹配;

连接模块503,用于对所述流表数据与所述维表数据进行连接,得到目标数据;

第一发送模块504,用于向终端设备发送所述目标数据。

可选地,参见图6,所述服务器500还包括:

第二发送模块505,用于在接收第一服务器发送的维表数据之前,以预设时间周期向所述第一服务器发送数据更新请求;

所述第一接收模块501,还用于接收所述第一服务器响应所述数据更新请求发送的维表更新数据。

可选地,所述服务器500还包括:

所述第一接收模块501,还用于在接收第一服务器发送的维表数据之前,接收所述第一服务器以预设时间周期发送的维表更新数据;

或者,所述第一接收模块501,还用于在所述第一服务器的维表数据发生变化时,接收所述第一服务器发送的维表更新数据。

可选地,参见图6,所述服务器500还包括:

删除模块506,用于在接收到第一服务器发送的维表更新数据之后,删除维表数据的历史更新数据。

可选地,所述流表数据的连接键值与所述服务器500相对应,其中,由所述第二服务器根据所述流表数据的连接键值,将所述流表数据发送至对应的服务器。

服务器500能实现上述应用于服务器的数据处理方法实施例中终端设备实现的各个过程,为避免重复,这里不再赘述。

本发明实施例的服务器500,第一接收模块501,用于接收第一服务器发送的维表数据;第二接收模块502,用于接收第二服务器发送的流表数据,其中,所述流表数据的连接键值与所述维表数据的连接键值匹配;连接模块503,用于对所述流表数据与所述维表数据进行连接,得到目标数据;发送模块504,用于向终端设备发送所述目标数据。本发明实施例可以减少流表与维表进行连接的网络开销。

参见图7,图7是本发明实施例提供的第一服务器的结构图,能实现上述实施例中应用于第一服务器的数据处理方法的细节,并达到相同的效果。如图7所示,第一服务器700包括:

拆分模块701,用于按照不同的连接键值将维表拆分为多个维表数据;

发送模块702,用于分别将所述多个维表数据中每个维表数据按照各自的连接键值,发送至与其连接键值对应的服务器。

本发明实施例的第一服务器700,拆分模块701,用于按照不同的连接键值将维表拆分为多个维表数据;发送模块702,用于分别将所述多个维表数据中每个维表数据按照各自的连接键值,发送至与其连接键值对应的服务器。本发明实施例可以减少流表与维表进行连接的网络开销。

参见图8,图8是本发明实施例提供的第二服务器的结构图,能实现上述实施例中应用于第二服务器的数据处理方法的细节,并达到相同的效果。如图8所示,第二服务器800包括:

获取模块801,用于获取流表数据;

发送模块802,用于按照所述流表数据的连接键值,将所述流表数据发送至与所述连接键值对应的服务器。

本发明实施例的第一服务器800,获取模块801,用于获取流表数据;发送模块802,用于按照所述流表数据的连接键值,将所述流表数据发送至与所述连接键值对应的服务器。本发明实施例可以减少流表与维表进行连接的网络开销。

本发明实施例还提供一种服务器,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述应用于服务器的数据处理方法的步骤,或者实现上述应用于第一服务器的数据处理方法的步骤,或者实现上述应用于第二服务器的数据处理方法的步骤。

本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述应用于服务器的数据处理方法的步骤,或者实现上述应用于第一服务器的数据处理方法的步骤,或者实现上述应用于第二服务器的数据处理方法的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。

参见图9,图9是本发明实施提供的服务器的结构图,如图9所示服务器包括:处理器901、存储器902及存储在所述存储器902上并可在所述处理器上运行的计算机程序,服务器中的各个组件通过总线接口903耦合在一起,所述计算机程序被所述处理器901执行时实现如下步骤:

接收第一服务器发送的维表数据;

接收第二服务器发送的流表数据,其中,所述流表数据的连接键值与所述流表数据的连接键值匹配;

对所述流表数据与所述维表数据进行连接,得到目标数据;

向终端设备发送所述目标数据。

可选的,在接收第一服务器发送的维表数据之前,所述方法还包括:

以预设时间周期向所述第一服务器发送数据更新请求;

接收所述第一服务器响应所述数据更新请求发送的维表更新数据。

可选的,在接收第一服务器发送的维表数据之前,所述方法还包括:

接收所述第一服务器以预设时间周期发送的维表更新数据;

或者,在所述第一服务器的维表数据发生变化时,接收所述第一服务器发送的维表更新数据。

可选的,所述方法还包括:

接收到第一服务器发送的维表更新数据之后,删除维表数据的历史更新数据。

可选的,所述流表数据的连接键值与所述服务器相对应,其中,由所述第二服务器根据所述流表数据的连接键值,将所述流表数据发送至对应的服务器。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

相关技术
  • 数据处理方法、相关装置、相关设备和系统
  • 一种DPI设备的数据处理方法及相关的DPI设备
技术分类

06120113008013