CN105094810B - 基于通用网关接口插件的数据处理方法和装置 - Google Patents
基于通用网关接口插件的数据处理方法和装置 Download PDFInfo
- Publication number
- CN105094810B CN105094810B CN201510368327.9A CN201510368327A CN105094810B CN 105094810 B CN105094810 B CN 105094810B CN 201510368327 A CN201510368327 A CN 201510368327A CN 105094810 B CN105094810 B CN 105094810B
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- node
- processing
- network data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明涉及一种基于通用网关接口插件的数据处理方法和装置,该方法包括:接收网络数据;将插件节点链的链首节点作为当前节点;调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据;当不满足网络数据处理结束条件时,将插件节点链中当前节点的下一节点作为当前节点后,执行所述调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据的步骤,直至满足网络数据处理结束条件。本发明提供的基于通用网关接口插件的数据处理方法和装置,链式的插件管理与调用方式处理结果准确、修改方便,扩展容易且维护方便。
Description
技术领域
本发明涉及网络技术领域,特别是涉及一种基于通用网关接口插件的数据处理方法和装置。
背景技术
通用网关接口(Common Gateway Interface,CGI)是一段程序,运行在服务器上,为网页提供接入接口。通用网关接口能够把网页和服务器中的执行程序连接起来,把网页接收的指令传递给服务器,再把服务器执行的结果返回给网页。利用通用网关接口可以实现处理表格、数据库查询、发送电子邮件等多种功能,通用网关接口使得网页从静态变为交互式的。
通用网关接口可以挂载插件,通过插件可以实现各种扩展功能,比如日志插件、监控插件等。目前通用网关接口在调用这些插件时,通过if…else…的条件判断来判断当前状态,从而用一个主体流程去调用当前状态下的每个插件。
然而,目前通过状态判断来调用插件的方式,不同的插件之间可能会相互调用,这样各种插件所处理的数据会相互影响,导致数据处理结果不唯一,不准确。
发明内容
基于此,有必要针对目前通过状态判断来调用插件的方式会导致数据处理结果不准确的问题,提供一种基于通用网关接口插件的数据处理方法和装置。
一种基于通用网关接口插件的数据处理方法,所述方法包括:
接收网络数据;
将插件节点链的链首节点作为当前节点;
调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据;
当不满足网络数据处理结束条件时,将插件节点链中当前节点的下一节点作为当前节点后,执行所述调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据的步骤,直至满足网络数据处理结束条件。
一种基于通用网关接口插件的数据处理装置,所述装置包括:
网络数据接收模块,用于接收网络数据;
链首节点处理模块,用于将插件节点链的链首节点作为当前节点;
调用模块,用于调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据;
检测模块,用于检测是否满足网络数据处理结束条件,若是则结束对网络数据的处理;
当前节点变更模块,用于当不满足网络数据处理结束条件时,将插件节点链中当前节点的下一节点作为当前节点后,通知调用模块。
上述基于通用网关接口插件的数据处理方法和装置,将插件形成插件节点链,插件节点链中每个节点各自对应插件。这样在接收到网络数据后,就可以从插件节点链的链首节点开始,按照插件节点链的顺序来逐个地调用相应插件的处理函数对网络数据进行处理。这种链式的插件管理与调用方式,使得对网络数据的处理顺序变得唯一,在正常处理的情况下会得到唯一的结果,准确性强。而且这种链式结构很容易对插件进行删除或增加,修改方便,扩展容易。再者,在插件节点链中增加插件不需要测试全部代码,仅需对增加的插件的代码进行测试便可,维护起来非常方便。
附图说明
图1为一个实施例中通用网关接口工作系统的环境图;
图2为一个实施例中通用网关接口服务器的组成结构示意图;
图3为一个实施例中广告推荐系统的环境图;
图4为一个实施例中基于通用网关接口插件的数据处理方法的流程示意图;
图5为另一个实施例中基于通用网关接口插件的数据处理方法的流程示意图;
图6为一个实施例中网络数据的处理阶段的划分示意图;
图7为一个实施例中通用网关接口所挂载的插件节点链的示意图;
图8为一个实施例中基于通用网关接口插件的数据处理装置的结构框图;
图9为另一个实施例中基于通用网关接口插件的数据处理装置的结构框图;
图10为再一个实施例中基于通用网关接口插件的数据处理装置的结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,在一个实施例中,提供了一种通用网关接口工作系统,包括通用网关接口服务器102和终端104。通用网关接口服务器102可以是独立的物理服务器,也可以是多个物理服务器的集群。终端104可以是台式计算机,也可以是移动终端,移动终端包括手机、平板电脑、智能手表以及智能车载设备等。
如图2所示,在一个实施例中,提供了一种通用网关接口服务器102,包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,处理器具有计算功能和控制整个通用网关接口服务器102工作的控制功能,处理器被配置为执行一种基于通用网关接口插件的数据处理方法。非易失性存储介质包括磁存储介质、光存储介质和闪存式存储介质。非易失性存储介质存储有操作系统、数据库和一种基于通用网关接口插件的数据处理装置,该基于通用网关接口插件的数据处理装置用于实现一种基于通用网关接口插件的数据处理方法。内存储器可用于为处理器和非易失性存储介质提供高速缓存。网络接口用于连接到网络从而接收网络数据,并通过网络发出请求结果。
如图3所以,在一个实施例中,提供了一种广告推荐系统,包括广告推荐引擎CGI服务器302、终端304和广告推荐引擎服务器306。其中广告推荐引擎服务器306上运行有广告推荐引擎,广告推荐引擎为一种计算机程序,用于实现广告推荐内容的计算。
如图4所示,在一个实施例中,提供了一种基于通用网关接口插件的数据处理方法,本实施例以该方法应用于上述图1和图2中的通用网关接口服务器102来举例说明。该方法具体包括如下步骤:
步骤402,接收网络数据。
具体地,通用网关接口服务器102接收终端104发来的网络数据。网络数据是指通过网络传输的数据。网络数据包括HTTP(HyperText Transfer Protocol,超文本传输协议)请求及该HTTP请求对应的数据包。该HTTP请求可为广告推荐请求。
步骤404,将插件节点链的链首节点作为当前节点。
具体地,通用网关接口服务器102将插件节点链的链首节点作为当前节点。这里的插件是遵循通用网关接口的规范的插件API(Application Programming Interface,应用程序编程接口)编写出来的程序,可以挂载在通用网关接口上实现各种功能。比如插件可以包括请求与回复功能插件、日志插件、监控插件、对不同请求的格式适配的插件、回复不同格式答复包的打包插件、用户过滤插件、请求速率限制插件、数据包合法性验证插件、业务计算插件、请求第三方数据的插件以及上报请求结果的插件等。
插件节点链是指代表各插件的各个节点按链式的预定顺序组织起来的数据结构。插件可由脚本生成,并可在编译期被编译到通用网关接口中,形成插件节点链。
该插件节点链具有链首节点和链尾节点,链首节点是指插件节点链中排第一位的节点,而链尾节点则是指插件节点链中排最后一位的节点。当前节点是指当前正处理的节点,这里将插件节点链的链首节点作为当前节点,保证插件节点链的链式处理顺序。
步骤406,调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据。
具体地,通用网关接口服务器102调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据。当前网络数据是指在执行步骤406当时的网络数据,对于第一个处理网络数据的节点,当前网络数据为接收到的网络数据;而对于其它插件,则当前网络数据为当前节点的上一节点处理后的网络数据。
每个插件实现了各自的处理函数,该处理函数用于实现相应插件的具体功能。该处理函数可为回调函数,通用网关接口服务器102在调用该处理函数后,直到接收到该处理函数的继续处理的反馈后,才会继续后续动作,可以保证插件节点链的链式处理方式。
通用网关接口服务器102与终端104建立连接,调用当前节点的插件的处理函数后,将当前网络数据传入该处理函数,获得该处理函数反馈的处理后的网络数据。比如在接入广告推荐请求时,将当前连接的所有信息传入当前节点的插件的处理函数,该处理函数则会根据传入的这些信息进行处理。当前连接的所有信息包括请求来源以及请求时间等。
步骤408,检测是否满足网络数据处理结束条件,若是,则执行步骤410;若否,则执行步骤412后执行步骤406。
具体地,网络数据处理结束条件是指结束采用插件节点链中节点对应的插件的处理函数对网络数据进行处理的条件。若满足网络数据处理结束条件时,说明通用网关接口服务器102可以停止采用插件节点链中各节点对应的插件的处理函数对网络数据进行处理。若不满足网络数据处理结束条件,说明通用网关接口服务器102需要继续采用插件节点链中各节点对应的插件的处理函数对网络数据进行处理。
在一个实施例中,网络数据处理结束条件包括:当前节点的插件的处理函数声明网络数据处理结束。具体地,当前节点的处理函数可以声明网络数据处理已完成,这样通用网关接口服务器102在执行步骤408时,若接收到处理函数反馈的该声明处理已完成的信息,则判定满足网络数据处理结束条件。当前节点的处理函数未声明网络数据处理已完成,或者声明网络数据处理未完成,则通用网关接口服务器102在执行步骤408时,若获取到处理函数反馈的处理后的网络数据但未接收到处理函数反馈的该声明处理已完成的信息,或者接收到处理函数反馈的声明网络数据处理未完成的信息,则判定不满足网络数据处理结束条件。
在一个实施例中,网络数据处理结束条件包括:当前节点的插件的处理函数声明网络数据处理出错。具体地,网络数据可能不满足格式要求,或者网络数据本身是伪造的,或者网络数据在传输过程中出错等,都会导致插件的处理函数无法正常处理从而出错。这样通用网关接口服务器102在执行步骤408时,若接收到处理函数反馈的处理出错的信息,则判定满足网络数据处理结束条件;若获取到处理函数反馈的处理后的网络数据但未接收到处理函数反馈的处理出错的信息,或者接收到处理函数反馈的处理未出错的信息,则判定不满足网络数据处理结束条件。当网络数据处理出错时无需再利用插件节点链中的下一节点的插件的处理函数对网络数据进行处理,可以直接向网络数据的发起端即终端104返回出错提示。
步骤410,结束对网络数据的处理。
具体地,通用网关接口服务器102结束对网络数据的处理,是指结束基于插件节点链的对网络数据的处理。通用网关接口服务器102还可以对网络数据以及请求结果做进一步动作,比如向网络数据的发起端返回请求结果。
步骤412,将插件节点链中当前节点的下一节点作为当前节点。
具体地,通用网关接口服务器102将插件节点链中当前节点的下一节点作为当前节点。插件节点链中节点是链式排列的,因此顺序是唯一的,可以直接按照插件节点链中节点的顺序,将下一节点作为当前节点继续进行处理。
通用网关接口服务器102在执行步骤412之后,当前节点的下一节点更新为当前节点,再返回上述步骤406,继续调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据,然后再继续检测是否满足网络数据处理结束条件,再根据检测结果做进一步处理。这样循环处理下去,按照插件节点链的链式顺序,逐个插件地对网络数据进行处理。
上述步骤408到步骤412,是当不满足网络数据处理结束条件时,将插件节点链中当前节点的下一节点作为当前节点后,执行调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据的步骤,直至满足网络数据处理结束条件的具体步骤。
上述基于通用网关接口插件的数据处理方法,将插件形成插件节点链,插件节点链中每个节点各自对应插件。这样在接收到网络数据后,就可以从插件节点链的链首节点开始,按照插件节点链的顺序来逐个地调用相应插件的处理函数对网络数据进行处理。
这种链式的插件管理与调用方式,使得对网络数据的处理顺序变得唯一,插件节点链中的每个节点的插件都进一个数据,出一个结果,对外是一个黑盒,在正常处理的情况下会得到唯一的结果,准确性强。而且这种链式结构很容易对插件进行删除或增加,修改方便,扩展容易。再者,在插件节点链中增加插件不需要测试全部代码,仅需对增加的插件的代码进行测试便可,维护起来非常方便。上述基于通用网关接口插件的数据处理方法非常适合需求快速迭代的业务。
举例说明,在插件节点链中包括两个相邻的节点,按先后顺序分别对应a插件和b插件。a插件输入一个文本,输出一个过滤掉某些字符后的文本。对于b插件来说,a插件存在与不存在相比,仅仅会导致b插件输入的文本发生变化,但实现的功能不会受a插件影响,这种链式的处理方式保证了处理结果的准确。而传统的通过状态判断来调用插件的方式,当a插件和b插件在同一状态下时,将会并行处理,此时a插件和b插件需要相互调用,可能a插件先实现字符过滤后,b插件再实现其功能,或者b实现其功能后再由a插件实现字符过滤,这两种情况会导致处理结果不同。
如图5所示,在一个实施例中,提供了一种基于通用网关接口插件的数据处理方法,本实施例以该方法应用于上述图1和图2中的通用网关接口服务器102来举例说明。该方法具体包括如下步骤:
步骤502,接收网络数据。
步骤504,将网络数据的第一个处理阶段作为当前处理阶段。
具体地,通用网关接口服务器102处理网络数据分为多个处理阶段,而且多个处理阶段是具有顺序的,通用网关接口服务器102接收到网络数据后首先对网络数据进行第一个处理阶段的处理。
参照图6,在一个实施例中,网络数据的处理阶段包括四个处理阶段,具体地,网络数据的各处理阶段按先后顺序分别为请求接入及数据包接收阶段、数据包处理阶段、业务处理阶段以及业务处理后的收尾阶段。
其中,通用网关接口服务器102在请求接入及数据包接收阶段,主要用于对网络数据的接入以及数据包的接收。参照图7,通用网关接口在该处理阶段可挂载用户过滤插件和请求速率限制插件等。其中用户过滤插件包括白名单过滤插件和黑名单过滤插件,其中白名单过滤插件用于在过滤时保留白名单中记录的用户的网络数据,而黑名单过滤插件则用于过滤掉黑名单中记录的用户的网络数据。请求速率限制插件可用于限制同一发起端发起的网络数据的速率,该速率可以用接收到网络数据的频率表示。
通用网关接口服务器102在数据包处理阶段,主要用于以数据包为单位的数据处理。通用网关接口在该处理阶段可挂载数据包合法性验证插件以及数据包过滤插件等。其中数据包合法性验证插件用于对数据包进行合法性验证,数据包过滤插件则用于过滤掉符合预设的数据包特征的数据包,数据包特征比如可以是数据包大小的特征。
通用网关接口服务器102在业务处理阶段,主要用于对网络数据中的网络数据的具体请求内容做处理,业务包括广告业务、游戏业务、信息查询业务以及即时通信业务等。通用网关接口在该处理阶段可挂载业务计算插件以及请求第三方数据的插件等。业务计算插件主要用于提取数据包中的业务计算相关数据并进行处理,比如过滤、整合等。其中获取第三方数据的插件可用于在登录且需要向第三方的数据库进行验证时,或者需要请求好友关系链时等情况下,请求获取第三方数据。
通用网关接口服务器102在业务处理后的收尾阶段,主要用于实现业务处理之后的各种处理,包括统计、记录日志以及上报请求结果等。通用网关接口在该处理阶段可挂载统计插件、日志插件以及请求结果上报插件等。
步骤506,将当前处理阶段的插件节点链的链首节点作为当前节点。
具体地,通用网关接口服务器102事先在编译时将各个插件编译到通用网关接口中,然后将各个插件的信息组合成节点数组,节点数组中可存储指向相应节点的插件的指针。插件信息包括插件名称、插件类型、插件配置参数、插件处理函数以及插件生效的处理阶段。
每个处理阶段可分别对应一个一维的节点数组,每个节点数组表示相应的处理阶段的插件节点链。所有处理阶段的插件节点链也可以用二维数组表示,该二维数组的一个维度可表示所处的处理阶段,另一个维度可表示相应处理阶段下的插件节点链中的节点。比如若节点数组为A[m][n],其中m表示第m+1处理阶段,n表示第m+1处理阶段下的插件节点链中的节点序号为n+1。具体A[0][0]表示第一个处理阶段下的插件节点链的链首节点,A[1][1]则表示第二个处理阶段下的插件节点链的第二个节点,以此类推。通过节点数组的维度序号可以方便地定位到某处理阶段下的链首节点。
步骤508,调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据。
通用网关接口服务器102调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据。具体地,通用网关接口服务器102可以查询节点数组从而查询到当前节点的插件的处理函数,从而调用该处理函数来对网络数据进行处理。
在一个实施例中,当前处理阶段的插件节点链中的各节点的插件根据当前处理阶段的插件API生成;各处理阶段的插件API不同。
具体地,通用网关接口服务器102在各处理阶段分别提供不同的插件API,每个插件API提供差异化的参数,这样可以适应网络数据的不同处理阶段实现各种功能。比如数据包处理阶段的插件API仅提供与数据包处理有关的参数,而业务处理阶段则仅提供与业务处理有关的参数。而且,同一处理阶段提供相同的插件API,却可以通过处理函数来实现不同的插件功能,插件功能多样化。
举例说明,一个插件APImodule_impl的部分代码如下:
其中,名称为module_impl的插件API,所包括的插件名字name用于唯一标识出一个插件;插件类型type用来对插件进行分类,便于管理;配置参数用于表示一个插件所需要的配置文件中的内容;所要生效的处理阶段phase用于表示插件对应的处理阶段。插件API还定义了相应插件的处理函数handler。
在一个实施例中,该基于通用网关接口插件的数据处理方法还包括:在业务处理阶段,调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据之后,将当前节点处理后的网络数据发送给广告推荐引擎服务器;接收广告推荐引擎服务器反馈的广告推荐内容,并向广告推荐请求的发起端返回广告推荐内容。本实施例中,在业务处理阶段,将当前节点处理后的网络数据发送给广告推荐引擎服务器,由广告计算引擎负责广告推荐内容的具体计算工作,从而向网络数据的发起端返回广告推荐内容。这样应用到广告推荐领域,可以方便地对广告推荐过程进行扩展,维护方便。
步骤510,检测是否满足网络数据处理结束条件,若是,则执行步骤512;若否,则执行步骤514。
步骤512,结束对网络数据的处理。
步骤514,判断当前节点是否为当前处理阶段的插件节点链的链尾节点。若是,则执行步骤516后执行步骤506;若否,则执行步骤518后执行步骤508。
具体地,通用网关接口服务器102需要判断当前处理阶段的插件节点链中当前节点的位置,若当前节点已经是当前处理阶段的插件节点链的最后一个节点,则需要进入到下一个处理阶段,否则将继续处理当前阶段的插件节点链中的下一个节点。
在一个实施例中,通用网关接口服务器102可根据当前处理阶段的节点数组的长度与当前节点对应到节点数组中的位置来判断当前节点是否为当前处理阶段的插件节点链的链尾节点。举例说明,若当前处理阶段的节点数组B[m]的长度为M,且当前节点为B[M-1],则当前节点为链尾节点;若当前节点的下标小于M-1,则当前节点不是链尾节点。
在一个实施例中,可以根据事先记录的当前处理阶段的插件节点链的长度以及当前节点在该插件节点链中的位置来判断当前节点是否为当前处理阶段的插件节点链的链尾节点。
步骤516,按照网络数据处理阶段的顺序,将当前处理阶段的下一处理阶段作为当前处理阶段。
此时,当前节点已经是当前处理阶段的插件节点链的最后一个节点,需要切换到下一个处理阶段进行处理。具体通用网关接口服务器102按照网络数据处理阶段的顺序,将当前处理阶段的下一处理阶段作为当前处理阶段后,继续执行上述步骤506。
步骤518,将当前处理阶段的插件节点链中当前节点的下一节点作为当前节点。
此时,当前节点还不是当前处理阶段的插件节点链的最后一个节点,需要切换到当前处理阶段的插件节点链中当前节点的下一个节点进行处理。具体通用网关接口服务器102将当前处理阶段的插件节点链中当前节点的下一节点作为当前节点后,继续执行上述步骤508。
本实施例中,通过划分网络数据的处理阶段,并且按网络数据的处理阶段来管理各自的插件节点链,便于插件的管理。而且增减插件时仅需在相应处理阶段的插件节点链中进行节点的增减即可,便于维护。
参照图7,下面用一个具体应用场景来说明上述基于通用网关接口插件的数据处理方法的原理。本应用场景中该基于通用网关接口插件的数据处理方法应用于上述图3所示的广告推荐系统中的广告推荐引擎CGI服务器302来举例说明,具体包括如下步骤:
广告推荐引擎CGI服务器接收网络数据,网络数据包括广告推荐请求以及相应的数据包。广告推荐引擎CGI服务器会对该广告推荐请求进行接入,并接收数据包。
广告推荐引擎CGI服务器进入请求接入及数据包接收阶段,获取请求接入及数据包接收阶段的插件节点链,从当前处理阶段的插件节点链的链首节点开始,逐个节点地调用相应节点的插件的处理函数对网络数据进行处理,得到相应节点处理后的网络数据。该处理阶段的插件包括用户过滤插件和请求速率限制插件等。
广告推荐引擎CGI服务器结束请求接入及数据包接收阶段后,进入数据包处理阶段,获取数据包处理阶段的插件节点链,从当前处理阶段的插件节点链的链首节点开始,逐个节点地调用相应节点的插件的处理函数对网络数据进行处理,得到相应节点处理后的网络数据。该处理阶段的插件包括数据包合法性验证插件以及数据包过滤插件等。
广告推荐引擎CGI服务器结束数据包处理阶段后,进入业务处理阶段,获取业务处理阶段的插件节点链,从当前处理阶段的插件节点链的链首节点开始,逐个节点地调用相应节点的插件的处理函数对网络数据进行处理,得到相应节点处理后的网络数据,并将该处理后的网络数据发送给广告推荐引擎服务器,接收广告推荐引擎服务器反馈的广告推荐内容,并向广告推荐请求的发起端返回广告推荐内容。该处理阶段的插件包括业务计算插件以及请求第三方数据的插件等。
广告推荐引擎CGI服务器结束业务处理阶段后,进入到业务处理后的收尾阶段。获取业务处理后的收尾阶段的插件节点链,从当前处理阶段的插件节点链的链首节点开始,逐个节点地调用相应节点的插件的处理函数对网络数据进行处理,得到相应节点处理后的网络数据。该处理阶段的插件包括统计插件、日志插件以及请求结果上报插件等。
如图8所示,在一个实施例中,提供了一种基于通用网关接口插件的数据处理装置800,具有实现上述各个实施例的基于通用网关接口插件的数据处理方法的功能模块。该基于通用网关接口插件的数据处理装置800包括网络数据接收模块802、链首节点处理模块804、调用模块806、检测模块808和当前节点变更模块810。
网络数据接收模块802,用于接收网络数据。
具体地,网络数据接收模块802用于接收终端发来的网络数据。网络数据是指通过网络传输的数据。网络数据包括HTTP请求及该HTTP请求对应的数据包。该HTTP请求可为广告推荐请求。
链首节点处理模块804,用于将插件节点链的链首节点作为当前节点。
具体地,链首节点处理模块804可用于将插件节点链的链首节点作为当前节点。这里的插件是遵循通用网关接口的规范的插件API编写出来的程序,可以挂载在通用网关接口上实现各种功能。比如插件可以包括请求与回复功能插件、日志插件、监控插件、对不同请求的格式适配的插件、回复不同格式答复包的打包插件、用户过滤插件、请求速率限制插件、数据包合法性验证插件、业务计算插件、请求第三方数据的插件以及上报请求结果的插件等。
插件节点链是指代表各插件的各个节点按链式的预定顺序组织起来的数据结构。插件可由脚本生成,并可在编译期被编译到通用网关接口中,形成插件节点链。
该插件节点链具有链首节点和链尾节点,链首节点是指插件节点链中排第一位的节点,而链尾节点则是指插件节点链中排最后一位的节点。当前节点是指当前正处理的节点,这里将插件节点链的链首节点作为当前节点,保证插件节点链的链式处理顺序。
调用模块806,用于调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据。
具体地,当前网络数据是指在调用当前节点的插件的处理函数时的网络数据。对于第一个处理网络数据的节点,当前网络数据为接收到的网络数据;而对于其它插件,则当前网络数据为当前节点的上一节点处理后的网络数据。
每个插件实现了各自的处理函数,该处理函数用于实现相应插件的具体功能。该处理函数可为回调函数,调用模块806可用于在调用该处理函数后,直到接收到该处理函数的继续处理的反馈后,才会继续后续动作,可以保证插件节点链的链式处理方式。
调用模块806用于调用当前节点的插件的处理函数后,将当前网络数据传入该处理函数,获得该处理函数反馈的处理后的网络数据。
检测模块808,用于检测是否满足网络数据处理结束条件,若是则结束对网络数据的处理。
具体地,网络数据处理结束条件是指结束采用插件节点链中节点对应的插件的处理函数对网络数据进行处理的条件。若满足网络数据处理结束条件时,说明可以停止采用插件节点链中各节点对应的插件的处理函数对网络数据进行处理。若不满足网络数据处理结束条件,说明需要继续采用插件节点链中各节点对应的插件的处理函数对网络数据进行处理。
当前节点变更模块810,用于当不满足网络数据处理结束条件时,将插件节点链中当前节点的下一节点作为当前节点后,通知调用模块806。
具体地,插件节点链中节点是链式排列的,因此顺序是唯一的,可以直接按照插件节点链中节点的顺序,将下一节点作为当前节点,通知调用模块806。调用模块806则用于继续调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据。
上述基于通用网关接口插件的数据处理装置800,将插件形成插件节点链,插件节点链中每个节点各自对应插件。这样在接收到网络数据后,就可以从插件节点链的链首节点开始,按照插件节点链的顺序来逐个地调用相应插件的处理函数对网络数据进行处理。这种链式的插件管理与调用方式,使得对网络数据的处理顺序变得唯一,在正常处理的情况下会得到唯一的结果,准确性强。而且这种链式结构很容易对插件进行删除或增加,修改方便,扩展容易。再者,在插件节点链中增加插件不需要测试全部代码,仅需对增加的插件的代码进行测试便可,维护起来非常方便。上述基于通用网关接口插件的数据处理方法非常适合需求快速迭代的业务。
在一个实施例中,网络数据处理结束条件包括:当前节点的插件的处理函数声明网络数据处理结束。具体地,当前节点的处理函数可以声明网络数据处理已完成,这样检测模块808用于若接收到处理函数反馈的该声明处理已完成的信息,则判定满足网络数据处理结束条件。若当前节点的处理函数未声明网络数据处理已完成,或者声明网络数据处理未完成,则检测模块808可用于若获取到处理函数反馈的处理后的网络数据但未接收到处理函数反馈的该声明处理已完成的信息,或者接收到处理函数反馈的声明网络数据处理未完成的信息,则判定不满足网络数据处理结束条件。
在一个实施例中,网络数据处理结束条件包括:当前节点的插件的处理函数声明网络数据处理出错。具体地,网络数据可能不满足格式要求,或者网络数据本身是伪造的,或者网络数据在传输过程中出错等,都会导致插件的处理函数无法正常处理从而出错。这样检测模块808可用于若接收到处理函数反馈的处理出错的信息,则判定满足网络数据处理结束条件;若获取到处理函数反馈的处理后的网络数据但未接收到处理函数反馈的处理出错的信息,或者接收到处理函数反馈的处理未出错的信息,则判定不满足网络数据处理结束条件。当网络数据处理出错时无需再利用插件节点链中的下一节点的插件的处理函数对网络数据进行处理,可以直接向网络数据的发起端返回出错提示。
如图9所示,在一个实施例中,该基于通用网关接口插件的数据处理装置800还包括:第一个处理阶段处理模块803、判断模块805和处理阶段变更模块807。
网络数据接收模块802,用于接收网络数据。
第一个处理阶段处理模块803,用于将网络数据的第一个处理阶段作为当前处理阶段。
链首节点处理模块804,还用于将当前处理阶段的插件节点链的链首节点作为当前节点。各个插件事先在编译时被编译到通用网关接口中,然后各个插件的信息组合成为节点数组,节点数组中可存储指向相应节点的插件的指针。插件信息包括插件名称、插件类型、插件配置参数、插件处理函数以及插件生效的处理阶段。
每个处理阶段可分别对应一个一维的节点数组,每个节点数组表示相应的处理阶段的插件节点链。所有处理阶段的插件节点链也可以用二维数组表示,该二维数组的一个维度可表示所处的处理阶段,另一个维度可表示相应处理阶段下的插件节点链中的节点。通过节点数组的维度序号可以方便地定位到某处理阶段下的链首节点。
调用模块806,用于调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据。具体地,调用模块806可用于查询节点数组从而查询到当前节点的插件的处理函数,从而调用该处理函数来对网络数据进行处理。
检测模块808,用于检测是否满足网络数据处理结束条件,若是则结束对网络数据的处理。
判断模块805,用于当不满足网络数据处理结束条件时,判断当前节点是否为当前处理阶段的插件节点链的链尾节点。
具体地,判断模块805需要判断当前处理阶段的插件节点链中当前节点的位置,若当前节点已经是当前处理阶段的插件节点链的最后一个节点,则需要进入到下一个处理阶段,否则将继续处理当前阶段的插件节点链中的下一个节点。
在一个实施例中,判断模块805可用于根据当前处理阶段的节点数组的长度与当前节点对应到节点数组中的位置来判断当前节点是否为当前处理阶段的插件节点链的链尾节点。
在一个实施例中,判断模块805可用于根据事先记录的当前处理阶段的插件节点链的长度以及当前节点在该插件节点链中的位置来判断当前节点是否为当前处理阶段的插件节点链的链尾节点。
处理阶段变更模块807,用于在当前节点是当前处理阶段的插件节点链的链尾节点时,按照网络数据处理阶段的顺序,将当前处理阶段的下一处理阶段作为当前处理阶段后通知链首节点处理模块804。
当前节点变更模块810,还用于在当前节点不是当前处理阶段的插件节点链的链尾节点时,将当前处理阶段的插件节点链中当前节点的下一节点作为当前节点后,通知调用模块806。
本实施例中,通过划分网络数据的处理阶段,并且按网络数据的处理阶段来管理各自的插件节点链,便于插件的管理。而且增减插件时仅需在相应处理阶段的插件节点链中进行节点的增减即可,便于维护。
在一个实施例中,网络数据的各处理阶段按先后顺序分别为请求接入及数据包接收阶段、数据包处理阶段、业务处理阶段以及业务处理后的收尾阶段。
其中,请求接入及数据包接收阶段,主要用于对网络数据的接入以及数据包的接收。参照图7,通用网关接口在该处理阶段可挂载用户过滤插件和请求速率限制插件等。其中用户过滤插件包括白名单过滤插件和黑名单过滤插件,其中白名单过滤插件用于在过滤时保留白名单中记录的用户的网络数据,而黑名单过滤插件则用于过滤掉黑名单中记录的用户的网络数据。请求速率限制插件可用于限制同一发起端发起的网络数据的速率,该速率可以用接收到网络数据的频率表示。
数据包处理阶段,主要用于以数据包为单位的数据处理。通用网关接口在该处理阶段可挂载数据包合法性验证插件以及数据包过滤插件等。其中数据包合法性验证插件用于对数据包进行合法性验证,数据包过滤插件则用于过滤掉符合预设的数据包特征的数据包,数据包特征比如可以是数据包大小的特征。
业务处理阶段,主要用于对网络数据中的网络数据的具体请求内容做处理,业务包括广告业务、游戏业务、信息查询业务以及即时通信业务等。通用网关接口在该处理阶段可挂载业务计算插件以及请求第三方数据的插件等。业务计算插件主要用于提取数据包中的业务计算相关数据并进行处理,比如过滤、整合等。其中获取第三方数据的插件可用于在登录且需要向第三方的数据库进行验证时,或者需要请求好友关系链时等情况下,请求获取第三方数据。
业务处理后的收尾阶段,主要用于实现业务处理之后的各种处理,包括统计、记录日志以及上报请求结果等。通用网关接口在该处理阶段可挂载统计插件、日志插件以及请求结果上报插件等。
在一个实施例中,当前处理阶段的插件节点链中的各节点的插件根据当前处理阶段的插件API生成。
具体地,各处理阶段分别提供不同的插件API,每个插件API提供差异化的参数,这样可以适应网络数据的不同处理阶段实现各种功能。比如数据包处理阶段的插件API仅提供与数据包处理有关的参数,而业务处理阶段则仅提供与业务处理有关的参数。而且,同一处理阶段提供相同的插件API,却可以通过处理函数来实现不同的插件功能,插件功能多样化。
如图10所示,在一个实施例中,网络数据包括广告推荐请求;该基于通用网关接口插件的数据处理装置800还包括:处理结果发送模块811和广告推荐内容返回模块812。
处理结果发送模块811,用于在业务处理阶段,调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据之后,将当前节点处理后的网络数据发送给广告推荐引擎服务器。
广告推荐内容返回模块812,用于接收广告推荐引擎服务器反馈的广告推荐内容,并向广告推荐请求的发起端返回广告推荐内容。
本实施例中,在业务处理阶段,将当前节点处理后的网络数据发送给广告推荐引擎服务器,由广告计算引擎负责广告推荐内容的具体计算工作,从而向网络数据的发起端返回广告推荐内容。这样应用到广告推荐领域,可以方便地对广告推荐过程进行扩展,维护方便。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于通用网关接口插件的数据处理方法,所述方法包括:
接收网络数据;
按照网络数据的处理阶段的顺序,依次将各所述处理阶段作为当前处理阶段;各所述处理阶段分别对应不同的插件API,同一处理阶段对应相同的插件API;
将当前处理阶段的插件节点链的链首节点作为当前节点;
调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据;
当不满足网络数据处理结束条件时,将插件节点链中当前节点的下一节点作为当前节点后,执行所述调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据的步骤,直至满足网络数据处理结束条件。
2.根据权利要求1所述的方法,其特征在于,所述网络数据处理结束条件,包括:当前节点的插件的处理函数声明网络数据处理结束或出错。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当不满足网络数据处理结束条件时,判断当前节点是否为当前处理阶段的插件节点链的链尾节点;
若是链尾节点,则按照网络数据处理阶段的顺序,将当前处理阶段的下一处理阶段作为当前处理阶段后,执行所述将当前处理阶段的插件节点链的链首节点作为当前节点的步骤;
若不是链尾节点,则将当前处理阶段的插件节点链中当前节点的下一节点作为当前节点后,执行所述调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据的步骤。
4.根据权利要求3所述的方法,其特征在于,当前处理阶段的插件节点链中的各节点的插件根据当前处理阶段的插件API生成;各处理阶段的插件API不同。
5.根据权利要求3所述的方法,其特征在于,所述网络数据包括广告推荐请求;网络数据的各处理阶段按先后顺序分别为请求接入及数据包接收阶段、数据包处理阶段、业务处理阶段以及业务处理后的收尾阶段;
所述方法还包括:
在业务处理阶段,调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据之后,将当前节点处理后的网络数据发送给广告推荐引擎服务器;
接收广告推荐引擎服务器反馈的广告推荐内容,并向广告推荐请求的发起端返回广告推荐内容。
6.一种基于通用网关接口插件的数据处理装置,其特征在于,所述装置包括:
网络数据接收模块,用于接收网络数据;
链首节点处理模块,用于按照网络数据的处理阶段的顺序,依次将各所述处理阶段作为当前处理阶段;各所述处理阶段分别对应不同的插件API,同一处理阶段对应相同的插件API;将当前处理阶段的插件节点链的链首节点作为当前节点;
调用模块,用于调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据;
检测模块,用于检测是否满足网络数据处理结束条件,若是则结束对网络数据的处理;
当前节点变更模块,用于当不满足网络数据处理结束条件时,将插件节点链中当前节点的下一节点作为当前节点后,通知调用模块。
7.根据权利要求6所述的装置,其特征在于,所述网络数据处理结束条件,包括:当前节点的插件的处理函数声明网络数据处理结束或出错。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:判断模块和处理阶段变更模块;
所述判断模块,用于当不满足网络数据处理结束条件时,判断当前节点是否为当前处理阶段的插件节点链的链尾节点;
所述处理阶段变更模块,用于在当前节点是当前处理阶段的插件节点链的链尾节点时,按照网络数据处理阶段的顺序,将当前处理阶段的下一处理阶段作为当前处理阶段后,通知链首节点处理模块;
所述当前节点变更模块,还用于在当前节点不是当前处理阶段的插件节点链的链尾节点时,将当前处理阶段的插件节点链中当前节点的下一节点作为当前节点后,通知调用模块。
9.根据权利要求8所述的装置,其特征在于,当前处理阶段的插件节点链中的各节点的插件根据当前处理阶段的插件API生成;各处理阶段的插件API不同。
10.根据权利要求8所述的装置,其特征在于,所述网络数据包括广告推荐请求;网络数据的各处理阶段按先后顺序分别为请求接入及数据包接收阶段、数据包处理阶段、业务处理阶段以及业务处理后的收尾阶段;
所述装置还包括:
处理结果发送模块,用于在业务处理阶段,调用当前节点的插件的处理函数对当前网络数据进行处理,获得当前节点处理后的网络数据之后,将当前节点处理后的网络数据发送给广告推荐引擎服务器;
广告推荐内容返回模块,用于接收广告推荐引擎服务器反馈的广告推荐内容,并向广告推荐请求的发起端返回广告推荐内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510368327.9A CN105094810B (zh) | 2015-06-26 | 2015-06-26 | 基于通用网关接口插件的数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510368327.9A CN105094810B (zh) | 2015-06-26 | 2015-06-26 | 基于通用网关接口插件的数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094810A CN105094810A (zh) | 2015-11-25 |
CN105094810B true CN105094810B (zh) | 2017-12-12 |
Family
ID=54575338
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510368327.9A Active CN105094810B (zh) | 2015-06-26 | 2015-06-26 | 基于通用网关接口插件的数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105094810B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108076007A (zh) * | 2016-11-10 | 2018-05-25 | 阿里巴巴集团控股有限公司 | 一种接口的实现方法、装置和设备 |
CN113259322B (zh) * | 2021-04-19 | 2022-07-12 | 山东英信计算机技术有限公司 | 一种预防Web服务异常的方法、系统及介质 |
CN113435937B (zh) * | 2021-07-05 | 2023-04-11 | 上海哔哩哔哩科技有限公司 | 广告创建方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5891794B2 (ja) * | 2011-02-09 | 2016-03-23 | 株式会社リコー | 情報処理装置及びプログラム |
CN103297381B (zh) * | 2012-02-22 | 2017-01-18 | 阿里巴巴集团控股有限公司 | 一种基于插件的业务访问方法及其系统 |
-
2015
- 2015-06-26 CN CN201510368327.9A patent/CN105094810B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105094810A (zh) | 2015-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11947556B1 (en) | Computerized monitoring of a metric through execution of a search query, determining a root cause of the behavior, and providing a notification thereof | |
US11620300B2 (en) | Real-time measurement and system monitoring based on generated dependency graph models of system components | |
US11269859B1 (en) | Correlating different types of data of a distributed ledger system | |
US11836148B1 (en) | Data source correlation user interface | |
US11775501B2 (en) | Trace and span sampling and analysis for instrumented software | |
US11194794B2 (en) | Search input recommendations | |
US11372956B2 (en) | Multiple input neural networks for detecting fraud | |
CN108665297A (zh) | 异常访问行为的检测方法、装置、电子设备和存储介质 | |
US20210385251A1 (en) | System and methods for integrating datasets and automating transformation workflows using a distributed computational graph | |
CN107404481B (zh) | 用户信息识别方法及装置 | |
CN108304410A (zh) | 一种异常访问页面的检测方法、装置及数据分析方法 | |
CN108427731A (zh) | 页面代码的处理方法、装置、终端设备及介质 | |
CN109376078A (zh) | 移动应用的测试方法、终端设备及介质 | |
US20200175522A1 (en) | Predicting online customer service requests based on clickstream key patterns | |
CN109344611A (zh) | 应用的访问控制方法、终端设备及介质 | |
CN103631787A (zh) | 网页类型识别方法以及网页类型识别装置 | |
CN105094810B (zh) | 基于通用网关接口插件的数据处理方法和装置 | |
CN107330326A (zh) | 一种恶意木马检测处理方法及装置 | |
WO2021072742A1 (en) | Assessing an impact of an upgrade to computer software | |
CN109547426A (zh) | 业务响应方法及服务器 | |
CN110442502A (zh) | 一种埋点的方法、装置、设备及存储介质 | |
US20180300625A1 (en) | Neural networks for detecting fraud based on user behavior biometrics | |
CN107102950A (zh) | 一种应用程序测试方法和装置 | |
CN109635993A (zh) | 基于预测模型的操作行为监控方法及装置 | |
CN107481039A (zh) | 一种事件处理方法及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |