一种兼容型的业务系统及业务实现方法与流程

文档序号:11250942阅读:566来源:国知局
一种兼容型的业务系统及业务实现方法与流程

本发明属于互联网技术领域,尤其涉及一种兼容型的业务系统及业务实现方法。



背景技术:

抓站是指将整个网站内容保存到本地,通常情况下网站内容将仍保持原本的html(超文本标记语言)格式,其文件名与目录结构都不会变化,这样可以准确地提供网站的镜像,即使网络断开、或者网站关闭,抓取下来的网站依然可以浏览。反抓站的目的是防止网站内容被恶意抓取,从而防范对网站的攻击。

反抓站业务需求是:识别当前的访问是正常请求还是爬虫抓取网站内容的非正常请求,如果是非正常请求则拦截。从反抓站业务需求可以看出,任意请求都需要实时的给出判定而不能是离线的事后判定。随着大数据技术的不断成熟,越来越多的平台涌现出来,针对实时性要求高的业务,storm(分布式实时计算技术)成为了厂商首选的技术之一,基于此,现有技术中提供了一种基于storm的反抓站业务系统。storm采用主从架构的模式,nimbus(主节点)和supervisor(工作节点)基于zookeeper通信,是一种分布式流式处理平台。zookeeper是分布式应用程序协调服务,是一个开放源码的、为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

随着业务量的逐渐增多,基于storm的反抓站业务系统存在两个技术问题:第一是系统性能方面相对落后;第二是热部署不方便,需要全局重启。



技术实现要素:

有鉴于此,本发明提供一种兼容型的业务系统及业务实现方法,基于gearpump且可兼容运行storm,用以有效提升系统性能,实现热部署。

为了实现上述目的,本发明提供一种兼容型的业务系统,包括主节点模块gpnimbus、客户端模块gpstormclient和转化模块gptopologytranslate,其中:

所述gpstormclient模块,用于将用户提交的storm任务提交到gpnimbus模块;

所述gpnimbus模块,用于接收gpstormclient模块提交的storm任务,调用gptopologytranslate模块将所述storm任务转化为gearpump任务,以及将所述gearpump任务部署到gearpump中并跟踪gearpump任务的执行;

所述gptopologytranslate模块,用于在gpnimbus模块的调用下,将接收到的storm任务转化为gearpump任务。

进一步地,所述gpnimbus模块,具体用于启动用于接收客户端连接的nimbus服务进程,以便接收gpstormclient模块提交的storm任务;接收到storm任务时,调用gptopologytranslate模块将所述storm任务的应用拓扑转化为gearpump的拓扑有向无环图dag,并将转化后的拓扑dag部署到gearpump中;终止storm任务时,根据storm任务的应用标识,终止gearpump中相应的拓扑dag。

进一步地,所述gptopologytranslate模块,具体用于在gpnimbus模块的调用下,分析接收到的storm任务的应用拓扑,将应用拓扑中的sport和bolt转化为gearpump的processor,并在各个processor之间建立连接;将storm任务的group转化为gearpump的partitioner;生成gearpump的拓扑dag,返回给gpnimbus模块。

进一步地,用户通过命令方式或者web界面方式向所述gpstormclient模块提交storm任务,其中:

通过命令方式提交时,用户指定storm任务的jar包和配置文件,所述配置文件中的运行参数包括地址和端口;通过web界面方式提交时,用户上传storm任务的jar包至临时目录,并填写运行参数;

以及,所述gpnimbus模块,还用于如果用户指定配置文件,则在启动nimbus服务进程之前,加载用户指定的配置文件并识别配置文件中的运行参数。

进一步地,所述业务具体为反抓站业务,其中,一个storm任务的应用拓扑具体为storm中运行的一条反抓站策略。

基于同一技术构思,本发明还提供了一种兼容型的业务实现方法,包括:

主节点模块gpnimbus接收客户端模块gpstormclient提交的storm任务,所述storm任务是用户向所述gpstormclient模块提交的;

gpnimbus模块调用转化模块gptopologytranslate将所述storm任务转化为gearpump任务;以及,

将所述gearpump任务部署到gearpump中并跟踪gearpump任务的执行。

进一步地,主节点模块gpnimbus接收客户端模块gpstormclient提交的storm任务,具体包括:

启动用于接收客户端连接的nimbus服务进程,以便接收gpstormclient模块提交的storm任务;

以及,所述gpnimbus模块调用转化模块gptopologytranslate将所述storm任务转化为gearpump任务;以及将所述gearpump任务部署到gearpump中并跟踪gearpump任务的执行,具体包括:

接收到storm任务时,调用gptopologytranslate模块将所述storm任务的应用拓扑转化为gearpump的拓扑有向无环图dag,并将转化后的拓扑dag部署到gearpump中;

终止storm任务时,根据storm任务的应用标识,终止gearpump中相应的拓扑dag。

进一步地,所述gptopologytranslate模块将所述storm任务转化为gearpump任务的方法,具体包括:

所述gptopologytranslate模块在gpnimbus模块的调用下,分析接收到的storm任务的应用拓扑,将应用拓扑中的sport和bolt转化为gearpump的processor,并在各个processor之间建立连接;

将storm任务的group转化为gearpump的partitioner;

生成gearpump的拓扑dag,返回给gpnimbus模块。

进一步地,用户通过命令方式或者web界面方式向所述gpstormclient模块提交storm任务,其中:

通过命令方式提交时,用户指定storm任务的jar包和配置文件,所述配置文件中的运行参数包括地址和端口;通过web界面方式提交时,用户上传storm任务的jar包至临时目录,并填写运行参数;

以及,所述方法还包括:

如果用户指定配置文件,则在启动nimbus服务进程之前,加载用户指定的配置文件并识别配置文件中的运行参数。

进一步地,所述业务具体为反抓站业务,其中,一个storm任务的应用拓扑具体为storm中运行的一条反抓站策略。

本发明提供的兼容型的业务系统及业务实现方法,提出了一种基于gearpump且可兼容运行storm的实时业务系统,gpnimbus模块是系统的核心,会启动一个nimbus服务进程,用于以接收gpstormclient模块提交的storm任务;调用gptopologytranslate模块将该storm任务转化为gearpump任务;最后将gearpump任务部署到gearpump中并跟踪gearpump任务的执行。gpstormclient模块用于提供一个客户端,用户可以通过该客户端提交storm任务,客户端会同gpnimbus模块通信,将用户提交的storm任务提交到gpnimbus模块。通过该系统,可以直接部署现有storm任务至gearpump,在同等资源下可以处理更多的数据,从而极大的提升系统性能;现有复杂的业务逻辑无需重新在gearpump上编写,从而极大的节省开发成本;基于gearpump的业务系统无需全局重启,便于热部署。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

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

图1是本发明实施例中兼容型的业务系统框图;

图2是本发明实施例中gpnimbus模块的工作流程图;

图3是本发明实施例中gpstormclient模块的工作流程图;

图4是本发明实施例中gptopologytranslate模块的工作流程图;

图5是本发明实施例中将stormtopology转化为gearpumpdag的示意图;

图6是本发明实施例中兼容型的业务实现方法流程图。

具体实施方式

针对基于storm的反抓站业务系统存在的系统性能落后、以及热部署不方便的问题,本发明实施例提供了一种兼容型的业务系统及业务实现方法,基于gearpump且可兼容运行storm,用以有效提升系统性能,实现热部署。所述热部署是指应用正在运行的时候可以升级软件无需重新启动。

以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

本发明人在发明过程中发现:面对不断增长的业务量,在有限的资源情况下更高效的利用集群尤为重要。storm是业界使用最广泛的流处理引擎,但也暴露出了不少局限性,这些局限性在gearpump中都得到了良好的解决。gearpump是开放源码的流处理引擎,是基于akkaactor模型构建的高可靠的实时系统,基于事件消息,具有低延迟、高性能、精确处理一次语义和拓扑图动态更新等特性。gearpump的一个cluster(簇)中,有一个master和多个worker,每个worker会管理各个集群上各个节点的资源。层级化的好处是系统一部分出问题时不会影响到其它部分,在gearpump中,一个master可以管理多个worker,多个应用之间是相互隔离的,每个应用会有一个对应的app-master,每个app-master向master申请资源后可以在worker上部署executer,相当于一个jvm(java虚拟机),具体的执行单元是task,一个task就是一个actor。gearpump的dynamicdag(动态有向无环图)是可以在线修改的,而且计算快,延时低。

可以预见的是,当基于storm的反抓站业务系统迁移至gearpump,可以在同等资源下处理更多的数据,但是复杂的现有业务逻辑使得重新在gearpump上编写所有策略并不现实,基于此本发明实施例提供了一种兼容型的业务系统,基于该系统,可以直接部署原有storm任务至gearpump,极大的节省开发成本。本发明实施例提供的兼容型的业务系统,不仅适用于基于storm的反抓站业务,对于其他基于storm的实时性要求高的业务同样适用。

本发明实施例提供的兼容型的业务系统,如图1所示,包括:

主节点模块(本发明实施例中称为gpnimbus模块)101,客户端模块(本发明实施例中称为gpstormclient模块)102,转化模块(本发明实施例中称为gptopologytranslate模块)103。其中:

gpnimbus模块101是系统的核心,会启动一个nimbus服务进程,用于接收gpstormclient模块提交的storm任务;调用gptopologytranslate模块103将该storm任务转化为gearpump任务;以及将gearpump任务部署到gearpump中并跟踪gearpump任务的执行。

gpstormclient模块102,用于提供一个客户端,用户可以通过该客户端提交storm任务,客户端会同gpnimbus模块101通信,将用户提交的storm任务提交到gpnimbus模块101。

gptopologytranslate模块103,用于在gpnimbus模块101的调用下,将接收到的storm任务转化为gearpump任务。

各个模块详细介绍如下:

一、主节点模块(gpnimbus模块)

gpnimbus模块的主要功能是启动一个用于接收客户端连接的nimbus服务进程,接收到storm任务后调用gptopologytranslate模块将storm任务转化为gearpump任务,以及将gearpump任务部署到gearpump中并跟踪gearpump任务的执行。

首先gearpump和storm都是对单条数据单个消息进行处理;其次用户接口都是相似的,storm是通过topology(拓扑),gearpump是通过dag(有向无环图);另外task(任务)接口也是相似的。storm本身的nimbus与client是通过协议通信的,可以在gearpump中实现一个nimbus来同client交互,包括如下功能:启动nimbus服务进程,提交storm任务和终止storm任务。gpnimbus模块的工作流程如图2所示:启动nimbus服务进程的时候,gpnimbus模块需要能够加载配置文件,识别配置文件中用户指定的运行参数(地址和端口)。接收到storm任务的时候,gpnimbus模块需要调用gptopologytranslate模块将stormtopology转化为gearpumpdag,并将转化后的dag提交给gearpump部署。终止storm任务的时候,需要根据对应的应用标识(例如应用名),终止gearpumpdag。

从实现上讲gpnimbus模块核心gearpumpnimbus类,这是一个单例的类,继承了storm的nimbus.iface接口,并实现了其方法,部分核心代码如下:

该代码的具体逻辑是gpnimbus模块首先会调用stormutil的getthriftport返回未占用端口,通过readstormconfig读取storm的默认配置,进而将地址和端口绑定,然后通过updatestormconfig方法更新启动时的配置,最后通过createserver方法来创建nimbus服务进程并启动。

二、客户端模块(gpstormclient模块)

用户执行storm任务的时候,系统需要提供用户可以调用的接口或者页面,让用户可以顺利的提交,然后gpnimbus模块可以进行相应的处理,gpstormclient模块负责这一部分功能。

gpstormclient模块的工作流程如图3所示。提交部分实现了两种方式,一种是通过命令方式提交,另一种是通过web界面方式提交。通过命令方式提交时需要用户指定jar(javaarchive,java归档)包和配置文件,配置文件中的运行参数包括地址和端口;通过web界面方式提交时用户需要上传jar包并填写运行参数。web界面提交通过restful结构方式,jar包会被上传到临时目录,通过gpstormclient模块完成storm任务的提交。

从实现上来讲,gpstormclient模块包含两个部分,分别是命令行提交类gpstormclient和web接口类clientservice,下边分别给出两个类的核心代码和解释。

gpstormclient继承了argumentsparser,是gearpump提供的工具类,通过parse(args)方法进行预处理,配置比较的参数jar和config,分别对应任务jar包和配置文件,然后调用核心方法gearpump的工具类启动startprocess提交storm任务,与gpnimbus模块通信。

clientservie会处理上传得到的jar包和运行参数,将jar包保存到临时目录,指定运行参数,调用核心方法gearpump的工具类启动startprocess提交storm任务。

三、转化模块(gptopologytranslate模块)

当gpnimbus模块接收到提交的storm任务后,需要将storm任务的应用拓扑(通常称为stormtopology)转化为gearpump的拓扑dag(通常称为gearpumpdag),然后才能在gearpump运行,gptopologytranslate模块就完成了这一工作。gptopologytranslate模块的工作流程如图4所示,gptopologytranslate模块的处理流程是首先接收到storm任务,分析出该storm任务的应用拓扑,将应用拓扑中的spout(storm中的消息源)和bolt(storm中的消息处理者)都转化为gearpump的processor(处理器),在各个processor之间建立连接;将storm任务的group(组)转化为gearpump的partitioner(分区工具);最终生成gearppump的拓扑dag,返回给gpnimbus模块。

核心代码如下:

如上述代码展示,首先获取storm任务的bolt之后会将其核心方法prepare和next转化为gearpump的方法,spout也是类似不再赘述,待循环遍历所有节点转化为processor之后,由gb来构建连接即storm任务的group转化为gearpump的partitioner,最终生成gearpump的dag之后返回给gpnimbus模块。

综上所述,三个模块构成了该兼容系统的完整架构,gpnimbus模块作为核心控制,对外提供服务,接收gpstormclient模块提交来的storm任务,通过gptopologytranslate模块将storm任务的应用拓扑(stormtopology)转化为gearpump的拓扑dag(gearpumpdag),最终部署拓扑dag到gearpump,监控storm任务的执行,返回执行结果。

下面,以反抓站业务为例,详细说明本发明实施例提供的兼容型的业务系统。基于storm的反抓站业务系统运行着多条反抓站策略,每一条反抓站策略即为一个storm任务的应用拓扑,假设其中一个反抓站策略为当前ip在一分钟内访问的接口中,比例最高的接口占总接口的比例大于预设阈值n即为命中策略,现通过该兼容系统将其迁移到gearpump,过程如下:

1、打开gpstormclient模块,假设采用命令方式即通过终端调用命令添加jar包、指定运行参数(ip地址、端口等)

2、gpnimbus模块接收到gpstormclient模块提交的jar包,调用gptopologytranslate模块分析该jar包并将其转化为gearpump的拓扑dag,效果如图5所示。

3、转化后的gearpump任务部署到gearpump中,返回成功。

基于同一技术构思,本发明实施例提供了一种兼容型的业务实现方法,由于该方法解决问题的原理与兼容型的业务系统相一致,因此该方法的实施可以参见系统的实施,重复之处不在赘述。

如图6所示,本发明实施例提供的兼容型的业务实现方法,包括:

s601、主节点模块gpnimbus接收客户端模块gpstormclient提交的storm任务,所述storm任务是用户向所述gpstormclient模块提交的;

s602、gpnimbusgpnimbus模块调用转化模块gptopologytranslate将所述storm任务转化为gearpump任务;

s603、gpnimbusgpnimbus模块将所述gearpump任务部署到gearpump中并跟踪gearpump任务的执行。

在s601的具体实施中,主节点模块gpnimbus接收客户端模块gpstormclient提交的storm任务,可以包括如下步骤:

启动用于接收客户端连接的nimbus服务进程,以便接收gpstormclient模块提交的storm任务;

在s602和s603的具体实施中,所述gpnimbus模块调用转化模块gptopologytranslate将所述storm任务转化为gearpump任务;以及将所述gearpump任务部署到gearpump中并跟踪gearpump任务的执行,具体可以包括:

接收到storm任务时,调用gptopologytranslate模块将所述storm任务的应用拓扑转化为gearpump的拓扑dag,并将转化后的拓扑dag部署到gearpump中;

终止storm任务时,根据storm任务的应用标识,终止gearpump中相应的拓扑dag。

在s602的具体实施中,所述转化模块gptopologytranslate将所述storm任务转化为gearpump任务的方法,可以包括如下步骤:

所述gptopologytranslate模块在gpnimbus模块的调用下,分析接收到的storm任务的应用拓扑,将应用拓扑中的sport和bolt转化为gearpump的processor,并在各个processor之间建立连接;

将storm任务的group转化为gearpump的partitioner;

生成gearpump的拓扑dag,返回给gpnimbus模块。

在s601的具体实施中,用户通过命令方式或者web界面方式向所述gpstormclient模块提交storm任务,其中:

通过命令方式提交时,用户指定storm任务的jar包和配置文件,所述配置文件中的运行参数包括地址和端口;通过web界面方式提交时,用户上传storm任务的jar包至临时目录,并填写运行参数;

以及,所述方法还包括:

如果用户指定配置文件,则在启动nimbus服务进程之前,加载用户指定的配置文件并识别配置文件中的运行参数。

本发明实施例提供的兼容型的业务系统及业务实现方法,提出了一种基于gearpump且可兼容运行storm的实时业务系统,gpnimbus模块是系统的核心,会启动一个nimbus服务进程以接收gpstormclient模块提交的storm任务;调用gptopologytranslate模块将该storm任务转化为gearpump任务;最后将gearpump任务部署到gearpump中并跟踪gearpump任务的执行。gpstormclient模块用于提供一个客户端,用户可以通过该客户端提交storm任务,客户端会同gpnimbus模块通信,将用户提交的storm任务提交到gpnimbus模块。通过该系统,可以直接部署现有storm任务至gearpump,在同等资源下可以处理更多的数据,从而极大的提升系统性能;现有复杂的业务逻辑无需重新在gearpump上编写,从而极大的节省开发成本;基于gearpump的业务系统无需全局重启,便于热部署。

本领域的技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、系统(装置)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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