流处理系统中访问窗口数据的方法和装置与流程

文档序号:12063713阅读:194来源:国知局
流处理系统中访问窗口数据的方法和装置与流程
本发明涉及信息
技术领域
,并且更具体地,涉及一种流处理系统中访问窗口数据的方法和装置。
背景技术
:滑动窗口是流处理领域的基本概念,滑动窗口是用于缓存数据流的一定时间长度历史数据的容器,现有技术中滑动窗口是在单主机内存中实现的,我们简称这种实现于单机的滑动窗口为单机滑动窗口,对于单机滑动窗口,窗口数据存储于任务(task)上下文;task故障、执行单元(Executor)故障、进程故障、主机故障都将导致窗口数据丢失,且无法恢复,也就是窗口数据的可靠性无法保障;对于海量数据处理、特别是依赖于海量历史数据进行计算的场景,单机滑动窗口也无法满足要求,因此单机滑动窗口的总容量受限于单机内存容量,因此需要一种能够解决上述问题的在流处理系统中访问窗口数据的方法。技术实现要素:本发明实施例提供一种流处理系统中访问窗口数据的方法和装置,能够实现对窗口数据的分布式存储,因此突破了单机内存容量有限的瓶颈问题。第一方面,提供了一种流处理系统中访问窗口数据的方法,所述方法包括:接收客户端发送的窗口数据的访问请求,所述访问请求携带窗口指示信息,所述窗口指示信息指示存储所述窗口数据的分布式滑动窗口;根据所述窗口指示信息,确定所述窗口数据在所述分布式滑动窗口中的分布式数据结构,所述分布式数据结构包括多个数据结构分片,所述多个数据结构分片位于至少两个主机上;根据所述多个数据结构分片中的每个数据结构分片的特征标识,获取存储所述每个数据结构分片的第一内存分区信息;根据所述第一内存分区信息,确定存储所述每个数据结构分片的主机信息;根据存储所述每个数据结构分片的主机信息,访问所述每个数据结构分片。结合第一方面,在第一方面的第一种实现方式中,所述分布式数据结构包括所述多个数据结构分片和所述多个数据结构分片的副本,所述多个数据结构分片中的每个数据结构分片和所述每个数据结构分片的副本位于不同主机上,所述方法还包括:根据所述每个数据结构分片的特征标识,获取存储所述每个数据结构分片的副本的第二内存分区信息;根据所述第二内存分区信息,确定存储所述每个数据结构分片的副本的主机信息;根据存储所述每个数据结构分片的副本的主机信息,访问所述每个数据结构分片。结合第一方面及其上述实现方式,在第一方面的第二种实现方式中,所述窗口指示信息为所述分布式滑动窗口的窗口名称,所述根据所述窗口指示信息,确定所述窗口数据在所述分布式滑动窗口中的分布式数据结构,包括:根据所述窗口名称,确定所述分布式滑动窗口的窗口数据在所述分布式滑动窗口中的所述分布式数据结构。结合第一方面及其上述实现方式,在第一方面的第三种实现方式中,所述窗口指示信息为所述分布式滑动窗口中的子窗口的子窗口名称,所述根据所述窗口指示信息,确定所述窗口数据在所述分布式滑动窗口中的分布式数据结构,包括:根据所述子窗口名称,确定所述子窗口的窗口数据在所述分布式滑动窗口中的所述分布式数据结构。结合第一方面及其上述实现方式,在第一方面的第四种实现方式中,所述第一内存分区信息为第一内存分区标识,所述根据所述第一内存分区信息,确定存储所述每个数据结构分片的主机信息,包括:根据所述第一内存分区标识以及内存分区表,获取存储所述每个数据结构分片的主机信息,所述内存分区表表征内存分区标识,与所述每个数据结构分片的副本编号,以及所述内存分区标识对应的内存分区所在的主机编号的对应关系。结合第一方面及其上述实现方式,在第一方面的第五种实现方式中,所述第二内存分区信息为第二内存分区标识,所述根据所述第二内存分区信息,确定存储所述每个数据结构分片的副本的主机信息,包括:根据所述第二内存分区标识以及内存分区表,获取存储所述每个数据结构分片的副本的主机信息,所述内存分区表表征内存分区标识,与所述每个数据结构分片的副本编号,以及所述内存分区标识对应的内存分区所在的主机编号的对应关系。结合第一方面及其上述实现方式,在第一方面的第六种实现方式中,所述第一内存分区信息为第一内存分区标识,所述根据所述多个数据结构分片中的每个数据结构分片的特征标识,获取存储所述每个数据结构分片的第一内存分区信息,包括:将所述每个数据结构分片的特征标识转换为二进制数据;利用散列算法对所述二进制数据进行计算得到散列结果;将所述散列结果对预设值取模后得到的结果,确定为所述每个数据结构分片的第一内存分区标识。结合第一方面及其上述实现方式,在第一方面的第七种实现方式中,所述窗口数据的数据结构为以下中的一种:分布式的列表结构、分布式的字典结构、分布式的集合结构。第二方面,提供了一种流处理系统中访问窗口数据的装置,该装置包括执行第一方面中的方法的各模块。第三方面,提供了一种流处理系统中访问窗口数据的装置,该装置包括存储器和与该存储器连接的处理器,该存储器用于存储指令,该处理器用于执行该存储器存储的指令,当该处理器执行该存储器中存储的指令时,该处理具体用于执行第一方面中的方法。基于上述技术方案,本发明实施例的流处理系统中访问窗口数据的方法和装置,能够将窗口数据分成多个数据结构分片,分布式存储在多个主机上,从而突破了单机内存容量有限的瓶颈问题,同时提高了窗口数据的可靠性。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是根据本发明实施例的流处理系统的系统框架图。图2是根据本发明实施例的流处理系统中单个主机的执行引擎部分的示意图。图3是根据本发明实施例的分布式滑动窗口管理器的原理图。图4是根据本发明实施例的流处理系统中访问窗口数据的方法的示意性流程图。图5是根据本发明实施例的流处理系统中访问窗口数据的装置的示意性框图。图6是根据本发明另一实施例的流处理系统中访问窗口数据的装置的示意性框图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。本发明的技术方案,可以应用于流处理系统中,例如,Storm系统、IBM的Stream系统或雅虎Yahoo的S4系统等,本发明实施例仅以Storm系统为例进行描述,而不应对本发明实施例构成任何限制,本发明实施例也同样适用于其他的流处理系统中。在介绍本发明实施例的流处理系统中访问窗口数据的方法之前,首先介绍一下流处理系统的系统框架,图1示出了根据本发明实施例的流处理系统的系统框架图,该系统包括多个主机,可选地,可以在每个主机上部署一个分布式滑动窗口管理器(DSWM,DistributedSlidingWindowManger),用于实现分布式滑动窗口,也就是实现滑动窗口数据的在多个主机上的分布式存储,在该流处理系统中,每个DSWM之间可以进行通信,以保证不同主机之间的数据信息的共享。图2示出了Storm系统中单个主机下的执行引擎部分的示意图,其中,管理器(Supervisor)监听分配给它的那台主机的工作,可以根据需要启动/关闭多个工作进程(WorkProcess),每个工作进程可以由一个或多个执行单元(Executor)通过执行一个或多个任务(task)来完成,每一个任务独立管理分布式滑动窗口数据在内存中的存储。如图2所示,管理器可以管理多个工作进程,每个工作进程可以包括由多个task,该多个task可以由一个或多个执行单元来执行。本发明实施例中提到的分布式滑动窗口可以属于每一个task。每个task都可以独立申请、使用、释放该分布式滑动窗口,该分布式滑动窗口可以存在于每个主机的内存中。可选地,本发明实施例中的用于实现分布式滑动窗口的系统部件可以为DSWM,该DSWM能够实现窗口数据的分布式存储。可选地,可以在该流处理系统中的每个主机上部署一个DSWM,用来实现各个主机之间的窗口数据的共享,也可以多个主机共享一个DSWM,来实现多个主机之间的窗口数据的共享,还可以在该流处理系统中部署一个总的DSWM,用于管理该流处理系统部署的所有的DSWN,来实现各个主机上的DSWM之间的窗口数据的共享等,本发明实施例对此不作限制。可选地,在该流处理系统中每个DSWM保存着全局信息,例如,每个主机的内存分区信息,网络协议(IP)信息,存储窗口数据的内存信息等,从而可以应对单个主机出现故障时,因为各个主机之间的信息不能共享,造成窗口数据丢失的问题。可选地,每个DSWM之间还可以保持通信连接,从而保证信息的共享,例如,如果第一DSWM管理的主机上存储的数据发生变化,该第一DSWM可以通过广播的方式,来通知该流处理系统中的其他DSWM更新该数据信息。在本发明实施例中,如图3所示,该分布式滑动窗口管理器可以包括分布式滑动窗口管理模块、分布式数据结构实现模块、内存分区管理模块。该分布式滑动窗口管理模块可以用于实现分布式滑动窗口的创建、销毁、窗口存在性判定、窗口数据的写入或读取功能等;该分布式数据结构实现模块可以实现窗口数据在分布式滑动窗口中的分布式数据结构,例如,分布式的列表结构、分布式的字典结构、分布式的集合结构等,实现分布式数据结构和内存分区的绑定,以便于根据内存分区标识查询相应的分布式数据结构的数据结构分片,实现海量窗口数据在流处理系统的均衡存储等;该内存分区管理模块可以用于实现流处理系统中的内存资源的统一管理、还可以初始化内存分区,包括主分区和备份分区,给内存分区编号等。可选地,该DSWM还可以包括集群管理模块或网络管理模块,该集群管理模块可以用于管理流处理系统中的所有主机,记录主机信息、实现主机加入流处理系统或退出流处理系统时触发上层管理模块进行相应的数据更新,在流处理系统的网络服务启动后,该集群管理模块可以启动对流处理系统中的各个主机的服务管理,例如,可以初始化流处理系统中的各个DSWM和数据结构,更新流处理系统中每个主机的地址信息等;网络管理模块可以用于维护流处理系统中的主机之间的通信连接。图4示出了根据本发明实施例的流处理系统中访问窗口数据的方法100的示意性流程图,该方法100可以由DSWM来执行,如图4所示,该方法100可以应用于图1中的流处理系统中,该方法100可以包括:S110,接收客户端发送的窗口数据的访问请求,该访问请求携带窗口指示信息,该窗口指示信息指示存储该窗口数据的分布式滑动窗口;S120,根据该窗口指示信息,确定该窗口数据在该分布式滑动窗口中的分布式数据结构,该分布式数据结构包括多个数据结构分片,该多个数据结构分片位于至少两个主机上;S130,根据该多个数据结构分片中的每个数据结构分片的特征标识,获取存储该每个数据结构分片的第一内存分区信息;S140,根据该第一内存分区信息,确定存储该每个数据结构分片的主机信息;S150,根据存储该每个数据结构分片的主机信息,访问该每个数据结构分片。具体而言,DSWM接收客户端发送的窗口数据访问请求,该访问请求可以是用户通过客户端发送的,该访问请求可以为通过任务下发给DSWM的窗口数据的读取请求或写入请求。该窗口数据可以为来自网络的数据,也可以为本地硬盘上存储的数据等。该访问请求携带窗口指示信息,该窗口指示信息指示存储该窗口数据的分布式滑动窗口,也就是窗口指示信息指示待读取的窗口数据位于哪个分布式滑动窗口,或者将待写入的窗口数据待写入到哪个分布式滑动窗口。可选地,该窗口指示信息可以为该分布式滑动窗口的窗口名称或窗口索引等,本发明实施例对此不作限制。当该DSWM支持单个分布式滑动窗口时,该窗口指示信息可以指示该单个分布式滑动窗口,该DSWM可以支持多个分布式滑动窗口之间的窗口数据的共享时,其中,该多个分布式滑动窗口中的每个分布式滑动窗口可以对应一个窗口名称,也可以理解为该多个分布式窗口为一个大的分布式滑动窗口,该每个分布式滑动窗口为该大的分布式滑动窗口的子窗口,此时该窗口指示信息可以为子窗口的子窗口名称。在该DSWM确定该窗口数据待存储到哪个分布式滑动窗口或者待读取的窗口数据位于哪个分布式滑动窗口后,该DSWM可以根据该窗口指示信息,确定该窗口数据在该分布式滑动窗口中的分布式数据结构。例如,该窗口指示信息为该分布式滑动窗口的窗口名称时,该DSWM可以根据该分布式滑动窗口的窗口名称,确定该窗口数据在该分布式滑动窗口中的分布式数据结构。可选地,该分布式数据结构可以包括多个数据结构分片,该多个数据结构分片可以位于至少两个主机上,也就是说该窗口数据可以分成多个数据结构分片分布式存储在多个主机上,因此,能够综合利用多个主机上的内存资源,从而突破了单机内存资源有限的瓶颈。可选地,该分布式数据结构还可以包括该窗口数据的副本信息,例如,该窗口数据可以切分为3个数据结构分片(数据结构分片A~数据结构分片C),该窗口数据对应的分布式数据结构可以包括6个数据结构分片(数据结构分片A~数据结构分片F),其中,数据结构分片D~数据结构分片F分别为数据结构分片A~数据结构分片C的副本,也就是该窗口数据在内存中存在一个备份,在某个数据结构分片上的数据丢失时,可以从该数据结构分片的副本上获取相应的数据信息,从而提高了窗口数据的可靠性。在确定该窗口数据对应的分布式数据结构后,可选地,该DSWM可以根据该分布式数据结构中的每个数据结构分片的特征标识,获取该每个数据结构分片的第一内存分区信息。例如,该第一内存分区信息可以为第一内存分区标识,该DSWM可以对该每个数据结构分片的特征标识进行哈希计算得到一个关键值,根据该关键值,可以获取该每个数据结构分片的第一内存分区标识。该DSWM还可以结合该数据结构分片的第一内存分区标识与内存分区表,确定存储每个数据结构分片的主机信息,其中,该内存分区表表征内存分区标识,与该每个数据结构分片的副本编号,以及该内存分区标识对应的内存分区所在的主机编号的对应关系,也就是说,该DSWM可以根据第一内存分区标识,查询内存分区表,确定该第一内存分区标识存储的数据结构分配的副本编号,以及该副本位于哪个主机上或者存储该副本的内存分区位于哪个主机上。在确定存储该每个数据结构分片的主机信息后,该DSWM可以根据存储该每个数据结构分片的主机信息,访问该每个数据结构分片。可选地,对于窗口数据的读取请求,该DSWM可以从存储该每个数据结构分片的主机上读取相应的数据结构分片,然后将读取的数据结构分片反馈给用户,或者对于窗口数据的写入请求,该DSWM可以向存储该每个数据结构分片的主机写入相应的数据结构分片。因此,本发明实施例的流处理系统中访问窗口数据的方法,能够将窗口数据分成多个数据结构分片,分布式存储在多个主机上,从而突破了单机内存容量有限的瓶颈问题。可选地,在本发明实施例中,该分布式数据结构可以包括多个数据结构分片和该多个数据结构分片的副本,该多个数据结构分片中的每个数据结构分片和该每个数据结构分片的副本位于不同主机上,该方法还包括:根据该每个数据结构分片的特征标识,获取存储该每个数据结构分片的副本的第二内存分区信息;根据该第二内存分区信息,确定存储该每个数据结构分片的副本的主机信息;根据存储该每个数据结构分片的副本的主机信息,访问该每个数据结构分片。具体而言,该分布式数据结构可以包括该多个数据结构分片和该多个数据结构分片的副本,该多个数据结构分片中的每个数据结构分片和该每个数据结构分片的副本可以位于不同主机上,那么,当某个主机发生故障导致该主机上的某个数据结构分片的数据丢失时,可以从存储在另一个主机上的该数据结构分片的副本获取数据,通过将数据结构分片的副本分布式存储在不同的主机上,也就是对窗口数据采用分布式副本机制进行存储,因此提高了窗口数据的可靠性。该DSWM可以根据该每个数据结构分片的特征标识,获取存储该每个数据结构分片的副本的第二内存分区信息。因为该每个数据结构分片的特征标识和该每个数据结构分片的副本的特征标识相同,该DSWM也可以根据该每个数据结构分片的副本的特征标识,获取存储该每个数据结构分片的副本的第二内存分区信息。也可以这么理解,该每个数据结构分片及其副本为一组数据,该每个数据结构分片的特征标识可以理解为为该组数据的组标识,可以根据该组标识,确定该每个数据结构分片的第一内存分区信息和该副本的第二内存分区信息。可选地,存储每个数据结构分片及其副本所在的内存分区的信息存在一定的对应关系,该DSWM可以根据每个数据结构分片的第一内存分区信息,确定其副本的第二内存分区信息。在该DSWM确定该每个数据结构分片的副本的第二内存分区信息后,可以根据该每个数据结构分片的副本的第二内存分区信息,确定存储该每个数据结构分片的副本的主机信息,然后可以根据存储该每个数据结构分片的副本的主机信息,访问该每个数据结构分片,也就是说该DSWM可以通过数据结构分片的任意一个副本来访问该数据结构分片。应理解,该每个数据结构分片和该每个数据结构分片的副本对于DSWM来说是一样的,不存在哪个是母本,哪个是副本的差别,也就是说对于一个数据结构分片来说,如果该数据结构分片在内存中存储了三份,这三份都可以认为是该数据结构分片的副本,可以分别命名为为副本0~副本2。本发明实施例用该分布式数据机构包括每个数据结构分片和该每个数据结构分片的副本来描述仅是为了说明每个数据结构分片都可以存储多份,即每个数据结构分片在内存中都可以有备份,而不对数据结构分片哪个是母本,哪个做副本做区分。可选地,在本发明实施例中,该窗口指示信息可以为该分布式滑动窗口的窗口名称,该根据该窗口指示信息,确定该窗口数据在该分布式滑动窗口中的分布式数据结构,包括:根据该窗口名称,确定该分布式滑动窗口的窗口数据在该分布式滑动窗口中的分布式数据结构。具体而言,该分布式滑动窗口与分布式数据结构可以是一一对应的关系,也就是可以根据该窗口指示信息,唯一确定该窗口数据对应的分布式数据结构。可选地,该窗口指示信息可以为该分布式滑动窗口的窗口名称,该DSWM可以根据窗口名称,确定该分布式滑动窗口的窗口数据在该分布式滑动窗口中对应的分布式数据结构。例如,可以根据窗口名称为A,确定该窗口数据的分布式数据结构为分布式字典结构A,根据窗口名称为B,确定该窗口数据的分布式数据结构为分布式集合结构B,根据窗口名称为C,确定该窗口数据的分布式数据结构为分布式列表C等。可选地,在本发明实施例中,该窗口指示信息还可以为该分布式滑动窗口中的子窗口的子窗口名称,该根据该窗口指示信息,确定该窗口数据在该分布式滑动窗口中对应的分布式数据结构,包括:根据该子窗口名称,确定该子窗口名称对应的子窗口的窗口数据在该分布式滑动窗口中的该分布式数据结构。具体而言,该分布式滑动窗口可以包括多个子窗口,每个子窗口对应一个分布式数据结构,也就是该分布式滑动窗口可以对应多个分布式数据结构。例如,对于窗口A,窗口长度为N,可以将该窗口A分为M个子窗口,记录每一个子窗口相对于窗口A的起止位置。可选地,该M个子窗口的长度可以相同也可以不同。可以为每一个子窗口配置相应的子窗口名称,并为每一个子窗口创建一个对应该子窗口的分布式数据结构,可选地,可以将子窗口名称与其对应的分布式数据结构建立对应关系,还可以将该子窗口名称与该子窗口相对于窗口A的起止位置建立对应关系。此时,该窗口指示信息可以为该子窗口名称,根据该子窗口名称,可以确定该子窗口在该分布式滑动窗口中对应的分布式数据结构。例如,在往窗口A写入数据时,可选地,可以根据窗口数据的待写入位置,确定该待写入位置对应的子窗口名称为B,然后根据子窗口名称B,查询子窗口名称与分布式数据结构的映射关系,可以确定该子窗口名称B对应分布式数据结构C,根据待写入位置和子窗口B起始位置的关系,可以确定该窗口数据在分布式数据结构C中的写入位置,然后可以调用分布式数据结构,将该窗口数据写入该分布式数据结构C的相应位置,另外,窗口数据的读取过程和上述过程类似,这里不再赘述。总的来说,根据上述方法对窗口数据进行读写操作,可以实现窗口数据在内存中的连续读写,从而避免了不连续读写对内存空间的浪费。可选地,对于窗口A,窗口长度为N,可以按照以下方法将窗口切分为M个子窗口,例如,对于窗口数据的第I个数据,可以将该第I数据存储于第I%M个窗口的位置I/M处。其中,%代表取余,/表示相除取整,也就是该子窗口的分配方法是通过将窗口数据中对总的子窗口数M取余相等的一组窗口数据作为一个数据结构分片,然后将该数据结构分片存储在一个子窗口下来实现的。因此,本发明实施例的流处理系统中访问窗口数据的方法,可以将窗口数据分成多个数据结构分片随机存储在多个子窗口对应的内存中,也就是可以实现窗口数据在内存中的随机读写,增加了窗口数据读写操作的灵活性。从上述分析可知,该窗口数据可以为整个分布式式滑动窗口的窗口数据,也可以为该分布式滑动窗口的子窗口的窗口数据,也就是本发明实施例不仅可以对整个分布式滑动窗口的窗口数据进行操作,还可以对该子窗口的窗口数据进行操作,因此,本发明实施例的访问窗口数据的方法,提高了窗口数据访问的灵活性。可选地,在本发明实施例中,该第一内存分区信息可以为第一内存分区标识,该根据该第一内存分区信息,确定存储该每个数据结构分片的主机信息,包括:根据该第一内存分区标识以及内存分区表,获取存储该每个数据结构分片的主机信息,该内存分区表表征内存分区标识,与该每个数据结构分片的副本编号,以及该内存分区标识对应的内存分区所在的主机编号的对应关系。具体而言,在确定该窗口数据的分布式数据结构后,可选地,该DSWM可以根据每个数据结构分片的特征标识,确定该每个数据结构分片的第一内存信息,该第一内存信息可以为第一内存分区标识。例如,该每个数据结构分片的特征标识可以为一个字符串,该DSWM可以对该字符串进行哈希计算得到一个关键值,根据该关键值,可以获取该每个数据结构分片的内存分区标识。例如,得到的关键值的范围为1~10000,内存分区可以这么划分:以100为间隔,关键值为1~100的内存分区标识为1,关键值为100~200的内存分区标识为2,关键值为200~300的内存分区标识为3等,例如,当计算得到一个数据结构分片的关键值为1、2、50或99时,可以确定该数据结构分片的第一内存分区标识为1。可选地,该DSWM可以结合该数据结构分片的第一内存分区标识与内存分区表,确定每个数据结构分片的主机信息。其中,该内存分区表表征内存分区标识,与该每个数据结构分片的副本编号,以及该内存分区标识对应的内存分区所在的主机编号的对应关系。例如,对于每个数据结构分片,该DSWM可以根据该数据结构分片的第一内存分区标识,查询内存分区表,获取该第一内存分区标识对应的数据结构分片的副本编号,以及存储该数据结构分片的内存分区所在的主机信息。可选地,在本发明实施例中,该第二内存分区信息可以为第二内存分区标识,该根据该第二内存分区信息,确定存储该每个数据结构分片的副本的主机信息,包括:根据该第二内存分区标识以及内存分区表,获取存储该每个数据结构分片的副本的主机信息,该内存分区表表征内存分区标识,与该每个数据结构分片的副本编号,以及该内存分区标识对应的内存分区所在的主机编号的对应关系。具体而言,在确定该窗口数据的分布式数据结构后,可选地,该DSWM可以根据每个数据结构分片的特征标识,确定该每个数据结构分片的副本的第二内存信息,该第二内存信息可以为第二内存分区标识。该确定第二内存分区标识的方法与确定第一内存分区标识的方法类似,这里不再赘述。可选地,在确定第二内存分区标识后,该DSWM可以结合该数据结构分片的副本的第二内存分区标识与内存分区表,确定每个数据结构分片的副本的主机信息。例如,对于每个数据结构分片的副本,该DSWM可以根据该数据结构分片的副本的第二内存分区标识,查询内存分区表,从而获取存储该数据结构分片的副本的内存分区所在的主机信息,其中,该内存分区表表征内存分区标识,与该每个数据结构分片的副本编号,以及内存分区所在的主机编号的对应关系。也就是可以根据数据结构分片的副本的第二内存分区标识,查询内存分区表,获取该第二内存分区标识指示的内存分区位于哪个主机上。应理解,因为数据结构分片和数据结构分片的副本之间是同等的关系,所以第一内存分区标识和第二内存分区标识的含义也是一样的,区分第一内存分区标识和第二内存分区标识仅是为了表示多个副本之间的内存分区标识不同,而不是用来表示第一内存分区标识为母本的内存分区标识,第二内存分区标识为副本的内存分区标识。例如,内存分区表可以如表1所示,如果该DSWM获取的数据结构分片的内存分区标识为1,根据该内存分区标识,查询内存分区表,可以确定该内存分区标识对应的数据结构分片的副本编号为0,该内存分区所在的主机编号为1。根据该内存分区标识,还可以确定该数据结构分片的其他副本的内存分区标识,也就是说,每个数据结构分片及其副本的内存分区标识是捆绑在一起的,根据其中的一个数据结构分区的副本的内存分区标识,可以确定其他副本的内存分区标识。因此,根据该内存分区标识为1,可以确定内存分区标识1’和1”为该数据结构分片的其他副本对应的内存分区标识,也就是该数据结构分片在内存中存在三个副本(副本0~副本2),然后根据该内存分区标识,查询内存分区表可以确定副本0~副本2分别位于主机1~主机3上。如果数据结构分片副本0中的数据丢失,该DSWM还可以获取在主机2上存储的数据结构分片副本1的数据信息,或者在主机3上存储的数据结构分片副本2的数据信息,因此,避免了任务故障、执行体故障、工作进程故障或主机故障导致窗口数据丢失无法恢复的问题,从而提高了窗口数据的可靠性。表1内存分区表内存分区标识数据结构分片的副本编号内存分区所在的主机编号1011’121”232012’122”23应理解,表1仅以窗口数据包括两个数据结构分片,每个数据结构分片采用3副本方式存储,主机个数为3为例进行描述,而不应对本发明实施例构成任何限定,本发明实施例中,窗口数据还可以包括4或6个数据结构分片等,数据结构分片的副本数也可以为2个或4个等,主机个数也可以为5个或10个等。可选地,在本发明实施例中,该第一内存分区信息为第一内存分区标识,该根据该多个数据结构分片中的每个数据结构分片的特征标识,获取存储该每个数据结构分片的第一内存分区信息,包括:将该每个数据结构分片的特征标识转换为二进制数据;利用散列算法对该二进制数据进行计算得到散列结果;将该散列结果对预设值取模后得到的结果,确定为该每个数据结构分片的第一内存分区标识。具体而言,该DSWM可以根据每个数据结构分片的特征标识,确定该每个数据结构分片对应的第一内存分区信息,该第一内存分区信息可以为第一内存分区标识,可选地,该DSWM可以先将该每个数据结构分片的特征标识转换为二进制数据,然后该DSWM可以利用散列算法对该二进制数据进行计算得到散列结果,可选地,该DSWM可以将该散列结果对预设值取模,将取模后得到的值确定为该数据结构分片对应的第一内存分区标识,可选地,该预设值可以为内存分区总个数。例如,该散列结果为50,内存分区总个数为100,可选地,该数据结构分片的第一内存分区标识为50。因此,本发明实施例的流处理系统中访问窗口数据的方法,能够将窗口数据分成多个数据结构分片,分布式存储在多个主机上,从而突破了单机内存容量有限的瓶颈问题,同时提高了窗口数据的可靠性。图5示出了根据本发明实施例的流处理系统中访问窗口数据的装置的示意性框图,该装置500可以为图3中的分布式滑动窗口管理器,该装置500可以配置于流处理系统中,如图5所示,该装置500包括:接收模块510,用于接收客户端发送的窗口数据的访问请求,该访问请求携带窗口指示信息,该窗口指示信息指示存储该窗口数据的分布式滑动窗口;第一确定模块520,用于根据该窗口指示信息,确定该窗口数据在该分布式滑动窗口中的分布式数据结构,该分布式数据结构包括多个数据结构分片,该多个数据结构分片位于至少两个主机上;获取模块530,获取模块,用于根据该多个数据结构分片中的每个数据结构分片的特征标识,获取存储该每个数据结构分片的第一内存分区信息;第二确定模块540,用于根据获取模块530获取的该第一内存分区信息,确定存储该每个数据结构分片的主机信息;访问模块550,用于根据第二确定模块540确定的存储该每个数据结构分片的主机信息,访问该每个数据结构分片。具体而言,该接收模块510、该第一确定模块520、第二确定模块540、访问模块550和访问模块550可以与图3中的分布式滑动窗口管理模块等同,该接收模块510接收客户端发送的窗口数据的访问请求,该访问请求携带窗口指示信息,该第一确定模块520可以根据该窗口指示信息判断待访问的分布式滑动窗口是否存在,也就是可以对分布式滑动窗口的存在性进行判定,然后确定该窗口数据在该分布式滑动窗口中对应的分布式数据结构,该分布式数据结构包括多个数据结构分片,该分布式数据结构可以由图3中的分布式数据结构实现模块来实现。可选地,当分布式滑动窗口不存在时,该分布式滑动窗口管理模块可以创建一个分布式滑动窗口,该窗口指示信息指示该分布式滑动窗口的窗口名称。可选地,该第一确定模块520可以由软件程序实现,例如,该软件程序可以放在一个进程中实现,也可以由硬件芯片上的软件模块来实现,或者由硬件和软件模块的组合来实现等。该获取模块530根据该多个数据结构分片中的每个数据结构分片的特征标识,获取存储该每个数据结构分片的第一内存分区信息,第二确定模块540根据该第一内存分区信息,确定存储该每个数据结构分片的主机信息,该分布式数据结构和内存分区的映射关系也可以由图3中的分布式数据结构实现模块来实现。可选地,该获取模块530可以由软件程序实现,例如,该软件程序可以放在一个进程中实现,也可以由硬件芯片上的软件模块来实现,或者由硬件和软件模块的组合来实现等。因此,本发明实施例的流处理系统中访问窗口数据的装置,能够将窗口数据分成多个数据结构分片,分布式存储在多个主机上,从而突破了单机内存容量有限的瓶颈问题,同时提高了窗口数据的可靠性。可选地,在本发明实施例中,该分布式数据结构包括该多个数据结构分片和该多个数据结构分片的副本,该多个数据结构分片中的每个数据结构分片和该每个数据结构分片的副本位于不同主机上,该获取模块530还用于根据该每个数据结构分片的特征标识,获取存储该每个数据结构分片的副本的第二内存分区信息;该第二确定模块540还用于根据该第二内存分区信息,确定存储该每个数据结构分片的副本的主机信息;该访问模块550还用于根据存储该每个数据结构分片的副本的主机信息,访问该每个数据结构分片。可选地,在本发明实施例中,该窗口指示信息为该分布式滑动窗口的窗口名称,该第一确定模块520具体用于:根据该窗口名称,确定该分布式滑动窗口的窗口数据在该分布式滑动窗口中的该分布式数据结构。可选地,在本发明实施例中,该窗口指示信息为该分布式滑动窗口中的子窗口的子窗口名称,该第一确定模块520还用于:根据该子窗口名称,确定该子窗口名称对应的子窗口的窗口数据在该分布式滑动窗口中的该分布式数据结构。可选地,在本发明实施例中,该第一内存分区信息为第一内存分区标识,该第二确定模块540还用于:根据该第一内存分区标识以及内存分区表,获取存储该每个数据结构分片的主机信息,该内存分区表表征内存分区标识,与该每个数据结构分片的副本编号,以及该内存分区标识对应的内存分区所在的主机编号的对应关系。可选地,在本发明实施例中,该第二内存分区信息为第二内存分区标识,该第二确定模块540还用于:根据该第二内存分区标识以及内存分区表,获取存储该每个数据结构分片的副本的主机信息,该内存分区表表征内存分区标识,与该每个数据结构分片的副本编号,以及该内存分区标识对应的内存分区所在的主机编号的对应关系。可选地,在本发明实施例中,该第一内存分区信息可以为第一内存分区标识,该获取模块530包括:转换单元,用于将该每个数据结构分片的特征标识转换为二进制数据;计算单元,用于利用散列算法对该二进制数据进行计算得到散列结果;确定单元,用于将该散列结果对预设值取模后得到的结果,确定为该每个数据结构分片的第一内存分区标识。可选地,在本发明实施例中,该窗口数据的数据结构为以下中的一种:分布式的列表结构、分布式的字典结构、分布式的集合结构。可选地,该流处理系统可以包括多个DSWM,在实际使用中,也可以对根据实际需要增加DSWM,或删除DSWM。当需要新增DSWM时,该DSWM通过广播的方式获取主节点信息,通过该主节点通知其他主机该新增的DSWM的信息,以便于其他主机更新该流处理系统中的DSWM拓扑信息,该网络管理模块可以新增该DSWM与其他DSWM的网络连接,以便于保证流处理系统中每个DSWM之间的通信连接。因此,本发明实施例的流处理系统中访问窗口数据的装置,能够将窗口数据分成多个数据结构分片,分布式存储在多个主机上,从而突破了单机内存容量有限的瓶颈问题,同时提高了窗口数据的可靠性。根据本发明实施例的流处理系统中访问窗口数据的装置500可对应于根据本发明实施例的流处理系统中访问窗口数据的方法100中的DSWM,并且流处理系统中访问窗口数据的装置500中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。如图6所示,本发明实施例还提供了一种流处理系统中访问窗口数据的装置600的示意性框图,该装置600可以配置于如图1所示的流处理系统中,该装置600包括处理器610、存储器620、总线系统630和网络接口640。其中,处理器610、存储器620和网络接口640通过总线系统630相连,该存储器620用于存储指令,该处理器610用于执行该存储器620存储的指令,例如计算机程序。通过网络接口640(可以是有线或者无线)实现与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。其中,该网络接口640用于接收客户端发送的窗口数据的访问请求,该访问请求携带窗口指示信息,该窗口指示信息指示存储该窗口数据的分布式滑动窗口;该处理器610用于确定该窗口数据在该分布式滑动窗口中的分布式数据结构,该分布式数据结构包括多个数据结构分片,该多个数据结构分片位于至少两个主机上,根据该多个数据结构分片中的每个数据结构分片的特征标识,获取存储该每个数据结构分片的第一内存分区信息,根据该第一内存分区信息,确定存储该每个数据结构分片的主机信息,根据存储该每个数据结构分片的主机信息,访问该每个数据结构分片。因此,本发明实施例的流处理系统中访问窗口数据的装置,能够将窗口数据分成多个数据结构分片,分布式存储在多个主机上,从而突破了单机内存容量有限的瓶颈问题,同时提高了窗口数据的可靠性。应理解,在本发明实施例中,该处理器610可以是中央处理单元(CentralProcessingUnit,简称为“CPU”),该处理器610还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器620可以包括只读存储器和随机存取存储器,并向处理器610提供指令和数据。存储器620的一部分还可以包括非易失性随机存取存储器。例如,存储器620还可以存储设备类型的信息。该总线系统630除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线系统630。在实现过程中,上述方法的各步骤可以通过处理器610中的硬件的集成逻辑电路或者软件形式的指令完成。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器620,处理器610读取存储器620中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。可选地,在本发明实施例中,该分布式数据结构包括该多个数据结构分片和该多个数据结构分片的副本,该多个数据结构分片中的每个数据结构分片和该每个数据结构分片的副本位于不同主机上,该处理器610还用于:根据该每个数据结构分片的特征标识,获取存储该每个数据结构分片的副本的第二内存分区信息;根据该第二内存分区信息,确定存储该每个数据结构分片的副本的主机信息;根据存储该每个数据结构分片的副本的主机信息,访问该每个数据结构分片。可选地,在本发明实施例中,该窗口指示信息为该分布式滑动窗口的窗口名称,该处理器610具体用于:根据该窗口名称,确定该分布式滑动窗口的窗口数据在该分布式滑动窗口中的该分布式数据结构。可选地,在本发明实施例中,该窗口指示信息为该分布式滑动窗口中的子窗口的子窗口名称,该处理器610还用于:根据该子窗口名称,确定该子窗口名称对应的子窗口的窗口数据在该分布式滑动窗口中的该分布式数据结构。可选地,在本发明实施例中,该第一内存分区信息为第一内存分区标识,该处理器610还用于:根据该第一内存分区标识以及内存分区表,获取存储该每个数据结构分片的主机信息,该内存分区表表征内存分区标识,与该每个数据结构分片的副本编号,以及内存分区标识对应的内存分区所在的主机编号的对应关系。可选地,在本发明实施例中,该第二内存分区信息为第二内存分区标识,该处理器610还用于:根据该第二内存分区标识以及内存分区表,获取存储该每个数据结构分片的副本的主机信息,该内存分区表表征内存分区标识,与该每个数据结构分片的副本编号,以及内存分区标识对应的内存分区所在的主机编号的对应关系。可选地,在本发明实施例中,该第一内存分区信息为第一内存分区标识,该处理器610还用于:将该每个数据结构分片的特征标识转换为二进制数据;利用散列算法对该二进制数据进行计算得到散列结果;将该散列结果对预设值取模后得到的结果,确定为该每个数据结构分片对应的内存分区标识。可选地,在本发明实施例中,该窗口数据的数据结构为以下中的一种:分布式的列表结构、分布式的字典结构、分布式的集合结构。因此,本发明实施例的流处理系统中访问窗口数据的装置,能够将窗口数据分成多个数据结构分片,分布式存储在多个主机上,从而突破了单机内存容量有限的瓶颈问题,同时提高了窗口数据的可靠性。应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1