模塊間沖突檢測方法、裝置及服務器的制造方法
【專利摘要】本發明提供了一種模塊間沖突檢測方法、裝置及服務器。該方法包括建立沖突表,其中沖突表用于表示注冊到鉤子HOOK點的模塊間是否存在沖突;依據沖突表檢測第一模塊與第二模塊間是否存在沖突,其中,第一模塊與第二模塊為注冊到同一HOOK點的模塊,并且第一模塊與第二模塊均為使能的模塊,通過本發明,解決了相關技術中存在的注冊于同一HOOK點的模塊之間會存在沖突,導致引起流程不可預測的缺陷的問題,進而達到了有效檢測模塊間的沖突,避免了流程中不可預測的缺陷的出現,既保證了系統能夠針對用戶的請求輸出正確的請求結果,又能防止系統出現損壞甚至崩潰的嚴重后果,進而有效提高用戶體驗的效果。
【專利說明】模塊間沖突檢測方法、裝置及服務器
【技術領域】
[0001]本發明涉及通信領域,具體而言,涉及模塊間沖突檢測方法、裝置及服務器。
【背景技術】
[0002]在內容分發網絡(Content Delivery Network,簡稱為⑶N)領域中,通過在原生流程中插入一定數量的鉤子HOOK點,能夠實現超文本傳輸協議(Hypertext TransferProtocol,簡稱為HTTP)流程控制;同時在每個鉤子函數中注冊一定數量的模塊MODULE,可以實現功能插入。通過H00K+M0DULE的方式,可以滿足不同業務場景的需求。圖1是相關技術中Η00Κ與MODULE的關系圖,在相關技術中,Η00Κ點與MOUDLE之間存在如下流程關系:
[0003](I)在原生流程中插入一定數量的Η00Κ點;
[0004](2)根據不同業務場景,開發一定數量的模塊MODULE,每個模塊實現一個或多個Η00Κ點,模塊在加載時以注冊的方式掛入相應的Η00Κ點;
[0005](3)同一個Η00Κ點,有一個或多個模塊實現該Η00Κ點;
[0006](4)網民HTTP請求到達⑶N時,⑶N服務器根據配置參數,決定適用于該請求的模塊列表并使能enable ;
[0007](5)⑶N服務器在處理HTTP請求的流程中,每到達一個Η00Κ點時,僅進入掛在該Η00Κ點下的、且已經使能的模塊列表,并逐一執行使能模塊對該Η00Κ點的實現;
[0008](6)根據⑶N服務器配置,不同的HTTP請求到達同一個Η00Κ點時,使能的模塊列表可能不同。
[0009]但是在相關技術中,注冊于同一個Η00Κ點的模塊之間可能會存在沖突,例如:
[0010]模塊A和模塊B都實現了 Η00Κ點h,其中模塊A中的實現要求添加一個HTTP頭部headerX,而模塊B中的實現要求刪除一個HTTP頭部headerX。假設網民發起了一次HTTP請求,并且根據⑶N服務器配置正好同時使能模塊A和模塊B,則在Η00Κ點h就出現了沖突,流程變得不可預測。
[0011]因此,在相關技術中存在著注冊于同一 Η00Κ點的模塊之間會存在沖突,以致引起流程不可預測的缺陷,針對該缺陷并未提出有效的解決方案。
【發明內容】
[0012]本發明提供了一種模塊間沖突檢測方法、裝置及服務器,以至少解決相關技術中存在的注冊于同一 Η00Κ點的模塊之間會存在沖突,導致引起流程不可預測的缺陷的問題。
[0013]根據本發明的一個方面,提供了一種模塊間沖突檢測方法,包括:建立沖突表,其中所述沖突表用于表示注冊到鉤子Η00Κ點的模塊間是否存在沖突;依據所述沖突表檢測第一模塊與第二模塊間是否存在沖突,其中,所述第一模塊與所述第二模塊為注冊到同一Η00Κ點的模塊,并且所述第一模塊與所述第二模塊均為使能的模塊。
[0014]優選地,在建立所述沖突表之前還包括:獲取所述每個Η00Κ點的訪問控制列表,其中,所述訪問控制列表包括所有注冊到所述每個Η00Κ點的模塊編號信息及注冊到所述每個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請求到達⑶N服務器后,⑶N服務器根據配置使能部分模塊,本技術方案要求根據6中建立的二維表,檢查所有使能模塊是否存在沖突。如果存在沖突,則進入8。
[0064]8、沖突報告:根據6中建立的二維表,定位發生沖突的兩個模塊A和B ;再根據5中的二維表,定位發生沖突的HOOK點h,輸出所有(h,A, B)沖突三元組信息。進入9。
[0065]9、沖突解除:嘗試逐一去能(disable)出現在沖突三元組中、且通過⑶N服務器配置使能的模塊,并重新進行沖突檢測。如果去能一部分模塊后,不再有沖突,則沖突解除成功;如果去能全部模塊后,沖突依舊存在,則斷定此處為高度危險的代碼缺陷,宕機待修復。
[0066]顯然,本領域的技術人員應該明白,上述的本發明的各模塊或各步驟可以用通用的計算裝置來實現,它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網絡上,可選地,它們可以用計算裝置可執行的程序代碼來實現,從而,可以將它們存儲在存儲裝置中由計算裝置來執行,并且在某些情況下,可以以不同于此處的順序執行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現。這樣,本發明不限制于任何特定的硬件和軟件結合。
[0067]以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。
【權利要求】
1.一種模塊間沖突檢測方法,其特征在于,包括: 建立沖突表,其中所述沖突表用于表示注冊到鉤子HOOK點的模塊間是否存在沖突; 依據所述沖突表檢測第一模塊與第二模塊間是否存在沖突,其中,所述第一模塊與所述第二模塊為注冊到同一 HOOK點的模塊,并且所述第一模塊與所述第二模塊均為使能的模塊。
2.根據權利要求1所述的方法,其特征在于,在建立所述沖突表之前還包括: 獲取所述每個HOOK點的訪問控制列表,其中,所述訪問控制列表包括所有注冊到所述每個HOOK點的模塊編號信息及注冊到所述每個HOOK點的模塊在所述每個HOOK點的兼容性信息; 獲取所述每個模塊所注冊的HOOK點編號信息表,其中,所述每個模塊可以注冊多個HOOK 點; 依據所述訪問控制列表和所述HOOK點編號信息表生成所有HOOK點與所有模塊的二維對應關系表。
3.根據權利要求2所述的方法,其特征在于,建立所述沖突表包括: 依據所述訪問控制列表與所述二維對應關系表建立所述沖突表。
4.根據權利要求3所述的方法,其特征在于,在所述第一模塊與所述第二模塊間存在沖突的情況下,還包括: 依據所述二維對應關系表定位發生沖突的HOOK點; 輸出包含所述第一模塊、所述第二模塊、所述發生沖突的HOOK點的三元組信息。
5.根據權利要求4所述的方法,其特征在于,還包括: 依次去能所述三元組信息中的模塊; 對所述發生沖突的HOOK點下的其他使能模塊進行沖突檢測; 當去能所有注冊于所述發生沖突的HOOK點下的使能的模塊后,檢測結果為沖突依然存在時,執行宕機待修復的操作。
6.一種模塊間沖突檢測裝置,其特征在于,包括: 建立模塊,用于建立沖突表,其中,其中所述沖突表用于表示注冊到鉤子HOOK點的模塊間是否存在沖關; 第一檢測模塊,用于依據所述沖突表檢測第一模塊與第二模塊間是否存在沖突,其中,所述第一模塊與所述第二模塊為注冊到同一 HOOK點的模塊,并且所述第一模塊與所述第二模塊均為使能的模塊。
7.根據權利要求6所述的方法,其特征在于,還包括: 第一獲取模塊,用于獲取所述每個HOOK點的訪問控制列表,其中,所述訪問控制列表包括所有注冊到所述每個HOOK點的模塊編號信息及注冊到所述每個HOOK點的模塊在所述每個HOOK點的兼容性信息; 第二獲取模塊,用于獲取所述每個模塊所注冊的HOOK點編號信息表,其中,所述每個模塊可以注冊多個HOOK點; 生成模塊,用于依據所述訪問控制列表和所述HOOK點編號信息表生成所有HOOK點與所有模塊的二維對應關系表。
8.根據權利要求7所述的裝置,其特征在于,所述建立模塊包括:建立單元,用于依據所述訪問控制列表與所述二維對應關系表建立所述沖突表。
9.根據權利要求8所述的裝置,其特征在于,還包括: 定位模塊,用于當所述第一檢測模塊的檢測結果為所述第一模塊與所述第二模塊間存在沖突的情況下,依據所述二維對應關系表定位發生沖突的HOOK點; 輸出模塊,用于輸出包含所述第一模塊、所述第二模塊、所述發生沖突的HOOK點的三元組信息。
10.根據權利要求9所述的裝置,其特征在于,還包括: 去能模塊,用于依次去能所述三元組信息中的模塊; 第二檢測模塊,用于對所述發生沖突的HOOK點下的其他使能模塊進行沖突檢測; 執行模塊,用于當去能所有注冊于所述發生沖突的HOOK點下的使能的模塊后,檢測結果為沖突依然存在時,執行宕機待修復的操作。
11.一種服 務器,其特征在于,包括上述任一項所述的裝置。
【文檔編號】H04L29/08GK104052638SQ201410303047
【公開日】2014年9月17日 申請日期:2014年6月27日 優先權日:2014年6月27日
【發明者】周超勇 申請人:北京藍汛通信技術有限責任公司