模块间冲突检测方法、装置及服务器转让专利

申请号 : CN201410303047.5

文献号 : CN104052638B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 周超勇

申请人 : 北京蓝汛通信技术有限责任公司

摘要 :

本发明提供了一种模块间冲突检测方法、装置及服务器。该方法包括建立冲突表,其中冲突表用于表示注册到钩子HOOK点的模块间是否存在冲突;依据冲突表检测第一模块与第二模块间是否存在冲突,其中,第一模块与第二模块为注册到同一HOOK点的模块,并且第一模块与第二模块均为使能的模块,通过本发明,解决了相关技术中存在的注册于同一HOOK点的模块之间会存在冲突,导致引起流程不可预测的缺陷的问题,进而达到了有效检测模块间的冲突,避免了流程中不可预测的缺陷的出现,既保证了系统能够针对用户的请求输出正确的请求结果,又能防止系统出现损坏甚至崩溃的严重后果,进而有效提高用户体验的效果。

权利要求 :

1.一种模块间冲突检测方法,其特征在于,包括:建立冲突表,其中所述冲突表用于表示注册到钩子HOOK点的模块间是否存在冲突;

依据所述冲突表检测第一模块与第二模块间是否存在冲突,其中,所述第一模块与所述第二模块为注册到同一HOOK点的模块,并且所述第一模块与所述第二模块均为使能的模块,在建立所述冲突表之前还包括:

获取所述每个HOOK点的访问控制列表,其中,所述访问控制列表包括所有注册到所述每个HOOK点的模块编号信息及注册到所述每个HOOK点的模块在所述每个HOOK点的兼容性信息;

获取所述每个HOOK点的模块所注册的HOOK点编号信息表,其中,所述每个HOOK点的模块可以注册多个HOOK点;

依据所述访问控制列表和所述HOOK点编号信息表生成所有HOOK点与所有HOOK点的模块的二维对应关系表,建立所述冲突表包括:

依据所述访问控制列表与所述二维对应关系表建立所述冲突表。

2.根据权利要求1所述的方法,其特征在于,在所述第一模块与所述第二模块间存在冲突的情况下,还包括:依据所述二维对应关系表定位发生冲突的HOOK点;

输出包含所述第一模块、所述第二模块、所述发生冲突的HOOK点的三元组信息。

3.根据权利要求2所述的方法,其特征在于,还包括:依次去能所述三元组信息中的模块;

对所述发生冲突的HOOK点下的其他使能模块进行冲突检测;

当去能所有注册于所述发生冲突的HOOK点下的使能的模块后,检测结果为冲突依然存在时,执行宕机待修复的操作。

4.一种模块间冲突检测装置,其特征在于,包括:建立模块,用于建立冲突表,其中,所述冲突表用于表示注册到钩子HOOK点的模块间是否存在冲突;

第一检测模块,用于依据所述冲突表检测第一模块与第二模块间是否存在冲突,其中,所述第一模块与所述第二模块为注册到同一HOOK点的模块,并且所述第一模块与所述第二模块均为使能的模块,还包括:

第一获取模块,用于获取所述每个HOOK点的访问控制列表,其中,所述访问控制列表包括所有注册到所述每个HOOK点的模块编号信息及注册到所述每个HOOK点的模块在所述每个HOOK点的兼容性信息;

第二获取模块,用于获取所述每个HOOK点的模块所注册的HOOK点编号信息表,其中,所述每个HOOK点的模块可以注册多个HOOK点;

生成模块,用于依据所述访问控制列表和所述HOOK点编号信息表生成所有HOOK点与所有HOOK点的模块的二维对应关系表,所述建立模块包括:

建立单元,用于依据所述访问控制列表与所述二维对应关系表建立所述冲突表。

5.根据权利要求4所述的装置,其特征在于,还包括:定位模块,用于当所述第一检测模块的检测结果为所述第一模块与所述第二模块间存在冲突的情况下,依据所述二维对应关系表定位发生冲突的HOOK点;

输出模块,用于输出包含所述第一模块、所述第二模块、所述发生冲突的HOOK点的三元组信息。

6.根据权利要求5所述的装置,其特征在于,还包括:去能模块,用于依次去能所述三元组信息中的模块;

第二检测模块,用于对所述发生冲突的HOOK点下的其他使能模块进行冲突检测;

执行模块,用于当去能所有注册于所述发生冲突的HOOK点下的使能的模块后,检测结果为冲突依然存在时,执行宕机待修复的操作。

7.一种服务器,其特征在于,包括权利要求4至6任一项所述的装置。

说明书 :

模块间冲突检测方法、装置及服务器

技术领域

[0001] 本发明涉及通信领域,具体而言,涉及模块间冲突检测方法、装置及服务器。

背景技术

[0002] 在内容分发网络(Content Delivery Network,简称为CDN)领域中,通过在原生流程中插入一定数量的钩子HOOK点,能够实现超文本传输协议(Hypertext Transfer Protocol,简称为HTTP)流程控制;同时在每个钩子函数中注册一定数量的模块MODULE,可以实现功能插入。通过HOOK+MODULE的方式,可以满足不同业务场景的需求。图1是相关技术中HOOK与MODULE的关系图,在相关技术中,HOOK点与MOUDLE之间存在如下流程关系:
[0003] (1)在原生流程中插入一定数量的HOOK点;
[0004] (2)根据不同业务场景,开发一定数量的模块MODULE,每个模块实现一个或多个HOOK点,模块在加载时以注册的方式挂入相应的HOOK点;
[0005] (3)同一个HOOK点,有一个或多个模块实现该HOOK点;
[0006] (4)网民HTTP请求到达CDN时,CDN服务器根据配置参数,决定适用于该请求的模块列表并使能enable;
[0007] (5)CDN服务器在处理HTTP请求的流程中,每到达一个HOOK点时,仅进入挂在该HOOK点下的、且已经使能的模块列表,并逐一执行使能模块对该HOOK点的实现;
[0008] (6)根据CDN服务器配置,不同的HTTP请求到达同一个HOOK点时,使能的模块列表可能不同。
[0009] 但是在相关技术中,注册于同一个HOOK点的模块之间可能会存在冲突,例如:
[0010] 模块A和模块B都实现了HOOK点h,其中模块A中的实现要求添加一个HTTP头部headerX,而模块B中的实现要求删除一个HTTP头部headerX。假设网民发起了一次HTTP请求,并且根据CDN服务器配置正好同时使能模块A和模块B,则在HOOK点h就出现了冲突,流程变得不可预测。
[0011] 因此,在相关技术中存在着注册于同一HOOK点的模块之间会存在冲突,以致引起流程不可预测的缺陷,针对该缺陷并未提出有效的解决方案。

发明内容

[0012] 本发明提供了一种模块间冲突检测方法、装置及服务器,以至少解决相关技术中存在的注册于同一HOOK点的模块之间会存在冲突,导致引起流程不可预测的缺陷的问题。
[0013] 根据本发明的一个方面,提供了一种模块间冲突检测方法,包括:建立冲突表,其中所述冲突表用于表示注册到钩子HOOK点的模块间是否存在冲突;依据所述冲突表检测第一模块与第二模块间是否存在冲突,其中,所述第一模块与所述第二模块为注册到同一HOOK点的模块,并且所述第一模块与所述第二模块均为使能的模块。
[0014] 优选地,在建立所述冲突表之前还包括:获取所述每个HOOK点的访问控制列表,其中,所述访问控制列表包括所有注册到所述每个HOOK点的模块编号信息及注册到所述每个HOOK点的模块在所述每个HOOK点的兼容性信息;获取所述每个模块所注册的HOOK点编号信息表,其中,所述每个模块可以注册多个HOOK点;依据所述访问控制列表和所述HOOK点编号信息表生成所有HOOK点与所有模块的二维对应关系表。
[0015] 优选地,建立所述冲突表包括:依据所述访问控制列表与所述二维对应关系表建立所述冲突表。
[0016] 优选地,在所述第一模块与所述第二模块间存在冲突的情况下,还包括:依据所述二维对应关系表定位发生冲突的HOOK点;输出包含所述第一模块、所述第二模块、所述发生冲突的HOOK点的三元组信息。
[0017] 优选地,所述模块间冲突检测方法还包括:依次去能所述三元组信息中的模块;对所述发生冲突的HOOK点下的其他使能模块进行冲突检测;当去能所有注册于所述发生冲突的HOOK点下的使能的模块后,检测结果为冲突依然存在时,执行宕机待修复的操作。
[0018] 根据本发明的另一方面,提供了一种模块间冲突检测装置,包括:建立模块,用于建立冲突表,其中,其中所述冲突表用于表示注册到钩子HOOK点的模块间是否存在冲突;第一检测模块,用于依据所述冲突表检测第一模块与第二模块间是否存在冲突,其中,所述第一模块与所述第二模块为注册到同一HOOK点的模块,并且所述第一模块与所述第二模块均为使能的模块。
[0019] 优选地,所述模块间冲突检测装置还包括:第一获取模块,用于获取所述每个HOOK点的访问控制列表,其中,所述访问控制列表包括所有注册到所述每个HOOK点的模块编号信息及注册到所述每个HOOK点的模块在所述每个HOOK点的兼容性信息;第二获取模块,用于获取所述每个模块所注册的HOOK点编号信息表,其中,所述每个模块可以注册多个HOOK点;生成模块,用于依据所述访问控制列表和所述HOOK点编号信息表生成所有HOOK点与所有模块的二维对应关系表。
[0020] 优选地,所述建立模块包括:建立单元,用于依据所述访问控制列表与所述二维对应关系表建立所述冲突表。
[0021] 优选地,所述模块间冲突检测装置还包括:定位模块,用于当所述第一检测模块的检测结果为所述第一模块与所述第二模块间存在冲突的情况下,依据所述二维对应关系表定位发生冲突的HOOK点;输出模块,用于输出包含所述第一模块、所述第二模块、所述发生冲突的HOOK点的三元组信息。
[0022] 优选地,所述模块间冲突检测装置还包括:去能模块,用于依次去能所述三元组信息中的模块;第二检测模块,用于对所述发生冲突的HOOK点下的其他使能模块进行冲突检测;执行模块,用于当去能所有注册于所述发生冲突的HOOK点下的使能的模块后,检测结果为冲突依然存在时,执行宕机待修复的操作。
[0023] 根据本发明人的再一方面,提供了一种服务器,包括上述任一项所述的模块间冲突检测装置。
[0024] 通过本发明,采用建立冲突表,其中所述冲突表用于表示注册到钩子HOOK点的模块间是否存在冲突;依据所述冲突表检测第一模块与第二模块间是否存在冲突,其中,所述第一模块与所述第二模块为注册到同一HOOK点的模块,并且所述第一模块与所述第二模块均为使能的模块。解决了相关技术中存在的注册于同一HOOK点的模块之间会存在冲突,导致引起流程不可预测的缺陷的问题,进而达到了有效检测模块间的冲突,避免了流程中不可预测的缺陷的出现,既保证了系统能够针对用户的请求输出正确的请求结果,又能防止系统出现损坏甚至崩溃的严重后果,进而有效提高用户体验的效果。

附图说明

[0025] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0026] 图1是相关技术中HOOK与MODULE的关系图;
[0027] 图2是根据本发明实施例的模块冲突检测方法的流程图;
[0028] 图3是根据本发明实施例的模块间冲突检测装置的结构框图;
[0029] 图4是根据本发明实施例的模块间冲突检测装置的优选结构框图一;
[0030] 图5是根据本发明实施例的模块间冲突检测装置中建立模块32的结构框图;
[0031] 图6是根据本发明实施例的模块间冲突检测装置的优选结构框图二;
[0032] 图7是根据本发明实施例的模块间冲突检测装置的优选结构框图三;
[0033] 图8是根据本发明实施例的服务器。

具体实施方式

[0034] 下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0035] 在本实施例中提供了一种模块间冲突检测方法,图2是根据本发明实施例的模块冲突检测方法的流程图,如图2所示,该流程包括如下步骤:
[0036] 步骤S202,建立冲突表,其中冲突表用于表示注册到钩子HOOK点的模块间是否存在冲突;
[0037] 步骤S204,依据冲突表检测第一模块与第二模块间是否存在冲突,其中,第一模块与第二模块为注册到同一HOOK点的模块,并且第一模块与第二模块均为使能的模块。
[0038] 通过上述步骤,采用建立冲突表,其中冲突表用于表示注册到钩子HOOK点的模块间是否存在冲突;依据冲突表检测第一模块与第二模块间是否存在冲突,其中,第一模块与第二模块为注册到同一HOOK点的模块,并且第一模块与第二模块均为使能的模块的方法,解决了相关技术中存在的注册于同一HOOK点的模块之间会存在冲突,导致引起流程不可预测的缺陷的问题,进而达到了有效检测模块间的冲突,避免了流程中不可预测的缺陷的出现,既保证了系统能够针对用户的请求输出正确的请求结果,又能防止系统出现损坏甚至崩溃的严重后果,进而有效提高用户体验的效果。
[0039] 并且,该冲突表可以是在HOOK访问控制列表以及二维对应关系表的基础上所建立的。二维对应关系表是在HOOK访问控制列表和HOOK点编号信息表的基础上所得到的。为了更清楚的表示HOOK点与模块之间的对应关系,在建立上述各表之前,需要对各个HOOK点以及各个模块进行唯一编号。
[0040] 其中,该HOOK访问控制列表包括所有注册到每个HOOK点的模块编号信息及注册到每个HOOK点的模块在每个HOOK点的兼容性信息,HOOK点编号信息表是每个模块所注册的HOOK点编号的信息表,并且,每个模块可注册多个HOOK点,因此,在该HOOK点编号信息表中,每个模块可以对应多个HOOK点。上述所提及的二维对应关系表是各个模块与各个HOOK点之间的一个对应关系表,并且,在该表中,使用确定的编号将一个或多个HOOK点与一个或多个模块相互对应起来,并且该二维对应关系表是在HOOK访问控制列表以及每个模块所注册的HOOK点编号的信息表的基础上所得到的。在上述各表建立之后,可以清楚的明确各HOOK点与各模块之间的关系,并且也能清楚的确定各个模块与其所注册的HOOK点的兼容性信息,从而为后续模块与模块之间的冲突检测奠定了基础。
[0041] 当依据上述冲突表检测到第一模块与第二模块间存在冲突时,依据上述各HOOK点与各模块间的二维对应关系表定位发生冲突的HOOK点,并输出包含该第一模块、第二模块、以及发生冲突的HOOK点的三元组信息。在输出三元组信息后,可以依据该三元组信息进行后续的模块冲突解除操作,当然也可以在不输出三元组信息的情况下进行模块冲突解除操作,即在上述的检测结果为模块之间存在冲突时并执行模块冲突解除操作。
[0042] 当需要进行模块冲突解除操作时,可以采用去能的方法进行冲突解除,可以逐一去能出现在冲突三元组且通过CDN服务器配置使能的模块,首先去能一部分发生冲突的模块,并重新检测出现冲突的HOOK点下是否还有其他的冲突模块,当重新检测结果为不再存在冲突时,则表明该HOOK点下的模块冲突解除成功;但是若逐一去能HOOK点下的所有模块后,该HOOK点下仍然存在冲突,则说明该HOOK点本身存在一定的缺陷,并且可以确定该HOOK点所在的代码段存在高度危险的代码缺陷,此时应进行宕机等待修复,该修复可以为人工修复,也可以采用相关的操作机器或自动操作程序修补代码缺陷。
[0043] 通过上述的模块冲突检测操作、模块冲突报告操作以及模块冲突解除操作之后,可以有效解决相关技术中存在的注册于同一HOOK点的模块之间会存在冲突,导致引起流程不可预测的缺陷的问题,进而达到了有效检测模块间的冲突,避免了流程中不可预测的缺陷的出现,既保证了系统能够针对用户的请求输出正确的请求结果,又能防止系统出现损坏甚至崩溃的严重后果,进而有效提高用户体验的效果。
[0044] 在本实施例中还提供了一种模块间冲突检测装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
[0045] 图3是根据本发明实施例的模块间冲突检测装置的结构框图,如图3所示,该装置包括建立模块32和第一检测模块34。下面对该装置进行说明。
[0046] 建立模块32,用于建立冲突表,其中,其中该冲突表用于表示注册到钩子HOOK点的模块间是否存在冲突;第一检测模块34,连接至上述建立模块32,用于依据上述冲突表检测第一模块与第二模块间是否存在冲突,其中,该第一模块与该第二模块为注册到同一HOOK点的模块,并且该第一模块与该第二模块均为使能的模块。
[0047] 图4是根据本发明实施例的模块间冲突检测装置的优选结构框图一,如图4所示,该装置除包括图3所示的所有模块外,还包括第一获取模块42、第二获取模块44和生成模块46。下面对该装置进行说明。
[0048] 第一获取模块42,用于获取每个HOOK点的访问控制列表,其中,该访问控制列表包括所有注册到每个HOOK点的模块编号信息及注册到每个HOOK点的模块在每个HOOK点的兼容性信息;第二获取模块44,用于获取每个模块所注册的HOOK点编号信息表,其中,每个模块可以注册多个HOOK点;生成模块46,连接至上述第一获取模块42和第二获取模块44以及建立模块32,用于依据访问控制列表和HOOK点编号信息表生成所有HOOK点与所有模块的二维对应关系表。
[0049] 图5是根据本发明实施例的模块间冲突检测装置中建立模块32的结构框图,如图5所示,该建立模块32包括建立单元52,下面对该建立模块32进行说明。
[0050] 建立单元52,用于依据上述访问控制列表与上述二维对应关系表建立冲突表。
[0051] 图6是根据本发明实施例的模块间冲突检测装置的优选结构框图二,如图6所示,该装置除包括图5所示的所有模块外,还包括定位模块62和输出模块64。下面对该装置进行说明。
[0052] 定位模块62,连接至上述第一检测模块34,用于当该第一检测模块34的检测结果为第一模块与第二模块间存在冲突的情况下,依据二维对应关系表定位发生冲突的HOOK点;输出模块64,连接至上述定位模块62,用于输出包含第一模块、第二模块、发生冲突的HOOK点的三元组信息。
[0053] 图7是根据本发明实施例的模块间冲突检测装置的优选结构框图三,如图7所示,该装置除包括图6所示的所有模块外,还包括去能模块72、第二检测模块74和执行模块76,下面对该装置进行说明。
[0054] 去能模块72,连接至上述输出模块64,用于依次去能三元组信息中的模块;第二检测模块74,连接至上述去能模块72,用于对发生冲突的HOOK点下的其他使能模块进行冲突检测;执行模块76,连接至第二检测模块74,用于当去能所有注册于发生冲突的HOOK点下的使能的模块后,检测结果为冲突依然存在时,执行宕机待修复的操作。
[0055] 图8是根据本发明实施例的服务器,该服务器80包括上述任一个模块间冲突检测装置82。
[0056] 为了解决相关技术中存在的注册于同一HOOK点的模块之间会存在冲突,导致引起流程不可预测的缺陷的问题,本发明实施例提供了一种处理方法,包括如下步骤:
[0057] 1、为每个HOOK点唯一编号。
[0058] 2、为每个模块唯一编号。
[0059] 3、每个HOOK点定义访问控制列表(Access Control List,简称为ACL),包括所有可注册到该HOOK点的模块(编号)列表、这些模块在该HOOK点的兼容性等信息。
[0060] 4、每个模块在加载时,将自身注册到相应的HOOK点,同时,记录该模块下的HOOK点(编号)信息。
[0061] 5、根据上述3、4,可以得到一张HOOK点与模块的二维对应关系(对应于上述的二维对应关系表),即通过HOOK点可以找到挂在其下的全部模块;根据模块可以找到其实现的所有HOOK点。
[0062] 6、根据5以及3中模块与HOOK点的兼容信息,可以建立一张二维冲突表,表示模块两两之间是否存在冲突:如果表中的某项(A,B)置为冲突标志,则意味着必存在某个HOOK点,使得模块A与模块B在该HOOK点存在冲突。
[0063] 7、冲突检测:当网民HTTP请求到达CDN服务器后,CDN服务器根据配置使能部分模块,本技术方案要求根据6中建立的二维表,检查所有使能模块是否存在冲突。如果存在冲突,则进入8。
[0064] 8、冲突报告:根据6中建立的二维表,定位发生冲突的两个模块A和B;再根据5中的二维表,定位发生冲突的HOOK点h,输出所有(h,A,B)冲突三元组信息。进入9。
[0065] 9、冲突解除:尝试逐一去能(disable)出现在冲突三元组中、且通过CDN服务器配置使能的模块,并重新进行冲突检测。如果去能一部分模块后,不再有冲突,则冲突解除成功;如果去能全部模块后,冲突依旧存在,则断定此处为高度危险的代码缺陷,宕机待修复。
[0066] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0067] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。