基于分布式的异构处理框架构建方法及系统与流程

文档序号:19610164发布日期:2020-01-03 14:02阅读:475来源:国知局
基于分布式的异构处理框架构建方法及系统与流程

本发明涉及数据处理技术领域,尤其涉及基于分布式的异构处理框架构建方法及系统。



背景技术:

随着互联网行业的不断发展和壮大,网站每天所要处理、存储的数据量成几何倍增长,网站的规模也是不断扩大,传统的垂直应用架构显得越来越臃肿、难以维护、高延迟、低吞吐量,很难以满足大数据信息时代的底层架构需求,采用分布式架构进行数据的存储与计算是互联网时代发展的一个必然趋势,同时需要具备高效的数据线上的实时处理效率以及消息的存储能力的架构以填满现如今的市场技术需求。



技术实现要素:

为了解决上述问题,本发明提出基于分布式的异构处理框架构建方法及系统。

具体的,基于分布式的异构处理框架构建方法,包括以下步骤:

s1.通过发布模块向服务调度模块发送请求数据,所述请求数据包括第一消息;

s2.发布模块通过订阅所述第一消息阻塞发布模块的当前线程;

s3.通过服务调度模块接收所述请求数据并将其封装为中间文件包,将所述中间文件包写入缓存模块,所述中间文件包包括第二消息及配置数据;

s4.服务调度模块通过订阅所述第二消息阻塞服务调度模块的当前线程;

s5.通过计算引擎模块调用所述中间文件包,计算引擎模块根据所述中间文件包中的配置数据加载对应数据并处理,将处理后的最终文件包存储至缓存模块;

s6.计算引擎模块向服务调度模块发布所述第二消息及第二结束标志;

s7.服务调度模块接收所述第二消息并识别所述第二结束标志,取消订阅所述第二消息;

s8.服务调度模块向发布模块发布所述第一消息及第一结束标志;

s9.发布模块接收所述第一消息并识别所述第一结束标志,取消订阅所述第一消息;

s10.发布模块从缓存模块读取所述最终文件包获取数据处理结果。

进一步的,所述步骤s1的具体实施步骤为:

s11.将包括所述第一消息的待发送数据转换为json字符串格式并封装为所述请求数据;

s12.发布模块采用异步方式向服务调度模块发送所述请求数据。

进一步的,所述步骤s3的具体实施步骤为:

s31.服务调度模块将接收到的请求数据转换为map格式;

s32.提取map格式的请求数据中的配置数据,并将配置数据及第二消息封装为json格式的中间文件包;

s33.将所述中间文件包写入缓存模块。

进一步的,所述步骤s4具体实施步骤为:

s41.服务调度模块开启线程,通过调用处理函数调用计算引擎模块;

s42.服务调度模块订阅所述第二消息阻塞当前线程。

具体的,基于分布式的异构处理框架系统,其特征在于,包括发布模块、服务调度模块、计算引擎模块、缓存模块及数据源模块,所述发布模块与所述缓存模块及所述服务调度模块分别连接,所述服务调度模块与所述缓存模块及所述计算引擎模块分别连接,所述缓存模块与所述计算引擎模块连接,所述计算引擎模块与所述数据源模块连接;

所述发布模块用于向所述服务调度模块发送请求数据及通过订阅第一消息实现线程阻塞控制;

所述服务调度模块用于接收请求数据、提取请求数据中的配置文件并将其与第二消息封装为中间文件包存入缓存模块、通过订阅第二消息实现线程阻塞控制、通过调用处理函数来调用所述计算引擎模块及向所述发布模块发布第一订阅消息;

所述计算引擎模块用于调用中间文件包、根据中间文件的配置数据从所述数据源模块中加载对应数据并对加载出的数据进行处理、将处理后的数据存入所述缓存模块及向所述服务调度模块发布第二订阅消息;

所述缓存模块用于存储中间文件包及最终文件包;

所述数据源模块用于提供数据处理所需的关联数据及文件。

进一步的,所述发布模块为应用客户端。

进一步的,所述服务调度模块为netty服务器。

进一步的,所述计算引擎模块为spark集群。

进一步的,所述缓存模块为redis数据库。

进一步的,所述数据源模块包括关系型数据库、非关系型数据库及文件系统。

本发明的有益效果在于:基于分布式的异构数据处理的架构设计理念,通过分布式计算引擎模块、服务调度模块、发布模块、缓存模块完成系统框架的构建,实现对数据的分布式计算和存储,有效提高了数据线上的实时处理效率以及消息的存储能力。

附图说明

图1是本发明的基于分布式的异构处理框架构建方法的方法流程图;

图2是本发明的基于分布式的异构处理框架系统的结构示意图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图说明本发明的具体实施方式。

如图1所示,基于分布式的异构处理框架构建方法,依赖于基于分布式的异构处理框架系统,也可独立实施,包括以下步骤:

s1.开启linux环境下的netty服务器端,监听指定端口,等待socket连接;

web应用向netty服务器端发送数据;

通过发布模块向服务调度模块发送请求数据,请求数据包括第一消息,具体如下:

s11.通过java的json类库gson将包括第一消息的待传入数据格式化成json的字符串形式并封装为请求数据;

s12.开启netty客户端并采用异步方式向netty服务器发送请求数据。

s2.netty客户端通过redis提供的发布/订阅模式,采用jedis订阅第一消息阻塞发布模块的当前线程,第一消息在s11步已经封装在json格式的请求数据里;

s3.通过netty服务器接收请求数据并将其封装为中间文件包,将中间文件包写入redis,中间文件包包括第一消息、第二消息及配置数据,具体过程如下:

s31.netty服务器利用gson将接收到的json格式的请求数据转换为map格式,并将第二消息封装在map格式的数据中;

s32.提取s31步中map格式的数据中spark集群运行处理所需的参数,参数包括请求数据中的配置数据,将所需参数及第二消息封装为json格式的中间文件包;

s33.将中间文件包写入redis。

s4.netty服务器端利用redis提供的发布/订阅模式,采用jedis订阅第二消息以阻塞netty服务器的当前线程,具体过程如下:

s41.netty服务器开启线程,调用已经格式化的linux命令,其命令形式为spark-submitspark.jar,其中spark.jar的名称从s31步中的map数据中读取,以调用spark集群;

s42.netty服务器端利用redis提供的发布/订阅模式,采用jedis订阅第二消息阻塞当前线程。

s5.spark集群接受步骤s41中命令的调用,并通过spark.jar文件包,利用jedis从redis中读取中间文件包,spark集群根据中间文件包中的配置数据,利用sparksql从数据源模块中加载对应数据并利用sparkrdd对加载出的数据进行过滤、加工处理,利用jedis的pipeline将处理后的dateset<row>格式的最终文件数据包存储至redis,数据源模块包括关系型数据库、非关系型数据库及文件系统;

s6.spark集群通过spark.jar文件获取netty服务器端订阅的第二消息,利用redis提供的发布/订阅模式,采用jedis向netty服务器发布json形式的第二消息及第二结束标志;

s7.netty服务器接第二消息并通过读取flag=true/false来判断该消息是否结束,当netty服务器端接收到flag=true的标识后,netty服务器端取消订阅第二消息,结束netty服务器的当前线程阻塞;

s8.netty服务器获取封装在中间文件包中的第一消息,利用redis提供的发布/订阅模式,采用jedis向netty客户端发布第一消息及第一结束标志;

s9.netty客户端接收第一消息并通过读取flag=true/false来判断该消息是否结束,当netty客户端接收到flag=true的标识后,取消订阅第一消息,结束netty客户端的当前线程阻塞;

s10.netty客户端根据数据数量大小选择性的使用并发或阻塞队列或pipeline从redis读取经spark集群处理后的最终文件包获取数据处理结果。

如图2所示,基于分布式的异构处理框架系统,包括发布模块、服务调度模块、计算引擎模块、缓存模块及数据源模块,发布模块与缓存模块及服务调度模块分别连接,服务调度模块与缓存模块及计算引擎模块分别连接,缓存模块与计算引擎模块连接,计算引擎模块与数据源模块连接;

发布模块用于向服务调度模块发送请求数据及通过订阅第一消息实现线程阻塞控制;

服务调度模块用于接收请求数据、提取请求数据中的配置文件并将其与第二消息封装为中间文件包存入缓存模块、通过订阅第二消息实现线程阻塞控制、通过调用处理函数来调用计算引擎模块及向发布模块发布第一订阅消息;

计算引擎模块用于调用中间文件包、根据中间文件的配置数据从数据源模块中加载对应数据并对加载出的数据进行处理、将处理后的数据存入缓存模块及向服务调度模块发布第二订阅消息;

缓存模块用于存储中间文件包及最终文件包;

数据源模块用于提供数据处理所需的关联数据及文件。

进一步的,发布模块为应用客户端。

进一步的,服务调度模块为netty服务器。

进一步的,计算引擎模块为spark集群。

进一步的,缓存模块为redis数据库。

进一步的,数据源模块包括关系型数据库、非关系型数据库及文件系统。

需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和单元并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、rom、ram等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1