專利名稱::一種媒體網關多模塊數據配置下的數據分發方法
技術領域:
:本發明涉及大型通訊設備中的數據同步技術,尤其涉及一種媒體網關多模塊數據配置下的數據分發的方法。
背景技術:
:電信網絡中的通訊設備的正常運行需要復雜的相關數據支持,而隨著應用場景的不同,同一種設備的運行數據是不同的。為了應對千差萬別的應用環境,需要對設備進行動態的數據配置管理。為了提高運行效率,通常在設備內部采用高效率、高實時性的內存數據庫系統;同時,為了增加數據配置的靈活性、穩定性,將配置的數據與運行中的內存數據分離,即將數據配置在后臺數據服務器上,數據服務器采用商用數據庫系統。當配置數據有所變動時,通過數據同步機制,將變化數據同步到設備上。自前比較通用的數據同步機制都是基于單模塊系統的。即數據服務器上的同步代理進程直接將數據同步到設備的主控模塊,之后主控模塊加載、保存數據,此種方法在單模塊系統中會很好的工作。但是隨著通訊設備處理能力越來越大,設備的復雜度隨之加大。目前大容量的設備一般分多個功能模塊,每個功能模塊的分工各有不同,各模塊正常運行時需要的數據也不盡相同。在這種情況下,現有的前后臺數據同步機制已經不能滿足設備的運行需要。綜上所述,當前需要一種媒體網關多模塊數據配置下的數據分發的技術方案。
發明內容本發明所要解決的技術問題是提供一種媒體網關多模塊數據配置下的數據分發的方法,在原有的前后臺數據同步的基礎上,建立一種可行的、有效的通訊設備內部的多模塊數據分發,保證多模塊設備的正常運行。為了解決上述問題,本發明提供了一種媒體網關多模塊數據配置下的數據分發的方法,主控模塊作為發送方,其他業務模塊作為接收方,包括以下步驟,tl、發送方與接收方采用互控協議,發送方每次發送一個數據包后都等待接收方的回應,直到接收方收到發送方發送的所有關系表數據后,返回給發送方確認消息,其中發送方根據對應的關系對接收方分發相應的關系表數據;t2、發送方收到確認消息后,發送本次通訊連接結束消息;接收方收到通訊連接結束消息后,返回確認消息,并從緩沖區加載收到的關系表數據。進一步地,上述方法還可包括,所述步驟tl中,包括,發送方將需要同步的關系表列表發送到接收方后,接收方進行校驗后存入緩沖區,返回應答消息給發送方;發送方收到應答消息后,讀取所有關系表中的關系表名稱字段,根據接收方的模塊類型進行查找,得到接收方所對應的關系表并發送到接收方,并通知接收方開始同步該關系表;接收方收到關系表信息后,返回發送方應答消息,并且準備接收關系表記錄的數據;發送方收到接收方的應答消息后,將所述關系表的記錄數據發送到接收方,所述關系表的記錄數據包括關系表的記錄個數、關系表的記錄內容。進一步地,上述方法還可包括,所述步驟tl中,還包括,發送方收到數據服務器新的數據時或者接收方在系統初始化時通知發送方分發數據時,發送方產生新的傳輸標識號;發送方將傳輸標識號發送到接收方,建立通訊連接;接收方收到傳輸標識號后,初始化接收數據的緩沖區,返回應答消息。進一步地,上述方法還可包括,所述發送方將所述關系表的記錄數據發送到接收方后,進一步包括步驟,步驟I、接收方將收到關系表的記錄數據寫入緩沖區,并進行消息回應;步驟J、發送方判斷所述關系表的所有記錄數據是否同步完成,如果是,則執行步驟K,否則,發送方再次將所述關系表的記錄數據發送到接收方,執行步驟I;步驟K、發送方通知接收方所述關系表同步完成;步驟L、接收方收到所述關系表同步完成消息后,返回應答消息;步驟M、發送方收到應答消息后,判斷是否已發送所有關系表數據,如果是,則發送方對接收方發送所有關系表同步完成消息,否則,發送方再次讀取所有關系表中的關系表名稱字段,根據接收方的模塊類型進行查找,得到接收方所對應的關系表并發送到接收方,并通知接收方開始同步該關系表。進一步地,上述方法還可包括,接收方收到所述所有關系表同步完成消息后,返回給發送方確認消息。進一步地,上述方法還可包括,所述步驟tl中,若一定時間后,發送方未收到接收方回應,則重發消息,若重發多次仍未收到回應,則認為此次傳輸失敗;接收方每次收到數據后都給發送方回應,并等待下一個數據包或消息,若一定時間后,未收到發送方消息,則重發上一消息,若重發多次仍未收到發送方消息,則認為此次傳輸失敗,數據不進行修改。進一步地,上述方法還可包括,為了避免不必要的數據分發,主控模塊和其他業務模塊都需要維護一個數據版本號,每次接收數據時主控模塊和其他業務模塊都會更新自己的數據版本號;同時數據分發時,接收方也會比較發送過來的數據版本是否比自身數據版本更新,接收方只接收比本地數據版本更新的tt據。進一步地,上述方法還可包括,所述接收方收到傳輸標識號后,初始化接收數據的緩沖區,返回應答消息時,其中所述應答消息的內容包括收到的傳輸標識號;所述關系表的內容包括關系表名稱、記錄長度、字段描述、模塊類型的進一步地,上述方法還可包括,對于每個所述關系表,都會對應一條記錄,描述每個關系表分別對何種類型的模塊有效,其中模塊類型字段包括多種模塊類型的組合值。進一步地,上述方法還可包括,所述步驟t2中,接收方將接收的數據存放在緩沖區中,接收所有數據完成以后,進行數據校驗。進一步地,上述方法還可包括,如果接收方數據校驗失敗,則本次同步失敗,整體回滾;如果接收方數據校驗成功,則將緩沖區中的數據拷貝到對應的內存區i或。進一步地,上述方法還可包括,所述數據校驗內容包括關系表記錄個數是否超出內存數據庫相應表的規劃容量、相關聯的關系表數據是否一致。與現有技術相比,由于本發明引入了設備內部的多模塊分發機制,使得后臺只需將所有數據同步到主控模塊,剩余的工作均由設備內部的分發機制來完成。這樣提高了同步的效率,減少了用戶操作步驟,提高了設備的可靠性。另外,主控模塊根據各業務模塊的實際需要進行數據的分發,節約了寶貴的內存空間,提高了設備的運行效率。圖1是本發明具體實施方式中主控模塊向業務模塊分發數據的流程圖;圖2是本發明具體實例的系統中各模塊邏輯連接關系圖。具體實施方式下面結合附圖和具體實施方式對本發明作進一步說明。本發明的主要構思是設備的主控模塊接收數據服務器的最新數據后觸發主控模塊向其他業務模塊進行數據的分發操作,其中主控模塊作為發送方,其他業務模塊作為接收方。發送方與接收方采用互控協議,發送方每次發送一個數據包后都等待接收方的回應。發送方根據接收方的不同的模塊對應的關系表名稱對接收方分發相應的關系表數據,若一定時間后,發送方未收到接收方回應,則重發消息,若重發多次(例如3次)仍未收到回應,則認為此次傳輸失敗。接收方每次收到數據后都給發送方回應,并等待下一個凄t據包或消息。若一定時間后,未收到發送方消息,則重發上一消息,若重發多次(例如3次)仍未收到發送方消息,則認為此次傳輸失敗,數據不進行修改。此外為了保證消息不會4晉序,在消息中增加了一個消息包號來標識包的傳輸順序。圖l描述了設備的主控模塊向其他業務模塊進行數據分發的流程,包括以下步驟步驟A、發送方收到數據傳輸觸發消息,產生一個新的傳輸標識號;主控模塊(即發送方)擁有數據服務器的數據庫中的所有數據,業務模塊根據各自的需要來進行同步。主控模塊需要接收所有的關系表數據,關系表數據源于數據服務器;其他業務模塊則根據各自的模塊類型來確定需要的關系表數據。觸發同步流程有兩種情況一種就是主控模塊收到了更新的數據,需要進行分發數據;另外一種情況就是業務模塊在系統初始化時通知主控模塊分發數據。為了避免不必要的數據分發,主控模塊和其他業務模塊都需要維護一個數據版本號,每次接收數據時各模塊都會更新自己的數據版本號;同時數據分發的時候,接收方也會比較發送過來的數據版本是否比自身數據版本更新,接收方只接收比本地數據版本更新的數據;數據版本號的應用主要是在業務模塊上電加載數據的時候。步驟B、發送方將傳輸標識號發送到接收方,建立通訊連接;步驟C、接收方收到傳輸標識號后,初始化接收數據的緩沖區,返回應答消息;所述應答消息的內容包括收到的傳輸標識號。步驟D、發送方收到應答消息后,將需要同步的關系表列表發送到接收方;步驟E、接收方收到關系表列表,進行筒單的校驗后存入緩沖區,返回應答消息給發送方;步驟F、發送方收到應答消息后,發送接收方的對應的關系表到接收方,并通知接收方開始同步該關系表;發送方收到應答消息后,讀取所有關系表中的關系表名稱字段,根據接收方的模塊類型進行查找,得到接收方所對應的關系表并發送到接收方,并通知接收方開始同步該關系表。所述關系表的內容包括關系表名稱、記錄長度、字段描述、模塊類型等信息。步驟G、接收方收到關系表信息后,返回發送方應答消息,并且準備接收關系表記錄的數據;步驟H、發送方收到接收方的應答消息后,將所述關系表的記錄數據發送到接收方;所述關系表的記錄數據包括關系表的記錄個數、關系表的記錄內容。步驟I、接收方收到記錄數據后,寫入緩沖區,并進行消息回應;步驟J、發送方判斷所述關系表的所有記錄數據是否同步完成,如果是,則執行步驟K,否則,執行步驟H;如果記錄數據較多,則需要重復步驟H-I循環進行記錄發送接收操作。步驟K、發送方通知接收方所述關系表同步完成;此時所有記錄數據同步完成,發送方通知接收方所述關系表同步完成。步驟L、接收方收到所述關系表同步完成消息后,返回應答消息;接收方收到所述關系表同步完成消息后,返回應答消息,并準備接收下一個關系表。步驟M、發送方收到應答消息后,判斷是否已發送所有關系表數據,如果是,則執行步驟N,否則,執行步驟F;發送方收到應答消息后,重復步驟F-L發送關系表數據,直到對《^收方發送完所有的關系表it據。步驟N、發送方對接收方發送所有關系表同步完成消息;此時所有關系表同步完成,發送所有關系表同步完成消息。步驟O、接收方收到所有關系表同步完成消息后,返回確認消息;步驟P、發送方收到確認消息后,發送本次通訊連接結束消息;步驟Q、接收方收到通訊連接結束消息后,返回確認消息,并從緩沖區加載收到的關系表數據。接收方將接收的數據存放在緩沖區中,接收所有數據完成以后,進行數據校驗。校驗內容包括關系表記錄個數是否超出內存數據庫相應表的規劃容量、相關聯的關系表數據是否一致等。如果校驗失敗,則本次同步失敗;如果校驗成功,則將緩沖區中的數據拷貝到對應的內存區域。如果接收方加載數據過程中出現關系表之間的一致性錯誤,則本次同步失敗,整體回滾。下面結合具體實例對本發明作進一步說明。以NGN(電信下一代網絡)網關設備為例,詳細介紹本發明的實施。一個完整的網關設備包括OMP(主控模塊)、CMP(業務模塊)、各種業務單板(比如網絡接口板,語音處理單板等)、后臺數據配置服務器等。后臺數據配置在單獨的數據庫服務器上,采用MicrosoftSQLServer數據庫系統。如圖2所示,后臺數據配置服務器上的傳送進程直接與OMP模塊進行通訊,各CMP模塊分別與OMP存在業務上的通訊鏈路,后臺傳送程序與CMP之間不存在直接的通訊鏈路。完整的數據同步中的數據流應該是后臺傳送進程——〉OMP——>各CMP。本發明所關心的是OMP上數據分發到各CMP的整個流程及機制,下面就這一部分功能介紹一下本例中的具體實現。為了達到對不同的業務模塊只分發必須的數據,設備中維護一張靜態關系表,描述了設備中不同類型的模塊需要的關系表名稱。數據分發時主控模塊將根據不同的模塊對應的關系表名稱來分發相應的關系表。關系表結構如下所示表l模塊類型對應的關系表名稱字段名稱字段類型字段含義MODULETYPEINT模塊類型TABLENAMECHAR(20)模塊所需要的關系表名稱OMP模塊比較特殊,因為設備上所有業務模塊所需要的數據都是從其分發出去的,所以OMP模塊需要接收所有的關系表數據,數據源于后臺數據配置服務器。其他業務模塊則根據各自的模塊類型來確定需要的關系表數據。為了避免不必要的數據分發,每個模塊都需要維護一個數據版本號,每次接收數據時各模塊都會更新自己的數據版本號。同時數據分發的時候,接收方也會比較發送過來的數據版本是否比自身數據版本更新,接收方只接收比本地數據版本更新的數據。版本號的應用主要是在業務模塊上電加載數據的時候。一、分發流程的觸發設備中OMP分發數據流程由以下幾種情況觸發OMP接收到后臺服務器更新的數據后,OMP啟動向所有CMP分發數據的流程。某個業務CMP上電初始化時,如果本地數據版本號比OMP數據版本號低,通知OMP向其分發數據。二、數據分發分發流程觸發后,OMP根據表1所示的關系表取得目標業務模塊所需要的數據關系表,按照圖1所示的流程進行同步。分發流程觸發后,OMP讀取所有關系表中的關系表名稱(TABLENAME)字段,得到目標業務模塊所對應的關系表,按照圖1所示的流程進行同步。OMP讀取所有關系表中的關系表名稱(TABLENAME)字段,讀取該關系表對應的模塊類型(MODULETYPE)字段。參考表l,對于系統中的每個關系表,都會對應一條記錄,描述每個關系表分別對何種類型的模塊有效,其中MODULETYPE字段可以是多種模塊類型的組合值。OMP根據某個模塊的類型(多種模塊類型組合值應該拆開分別查找)查找該關系表,可以得到一個關系表名列表,這個關系表名列表就是該模塊所需的關系表。如表2所示表2:<table>tableseeoriginaldocumentpage13</column></row><table>從中可以看出,R一BOARD表對于所有類型為1的模塊都可以分發。R—UNIT表對于所有類型為2的模塊都可以分發。R一LINK表對于所有類型為4的模塊都可以分發。R—ROUTE表對于所有類型為l或者2或者4的模塊都可以分發。(其中7為1,2,4的組合值)三、數據加載接收方模塊將接收的數據存放在緩沖區中,接收所有數據完成以后,進行數據校驗。校驗內容包括關系表記錄個數是否超出內存數據庫相應表的規劃容量、相關聯的關系表數據是否一致等。如果校驗失敗,則本次同步失敗;如果校驗成功,則將緩沖區中的數據拷貝到對應的內存區域。四、變化數據的生效業務模塊數據加載成功后,需要通知其他業務進程數據的變化。業務進程重新獲取變化數據,至此數據變化生效。以上所述,僅為本發明較佳的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉該技術的人在本發明所揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。權利要求1、一種媒體網關多模塊數據配置下的數據分發的方法,主控模塊作為發送方,其他業務模塊作為接收方,其特征在于,包括以下步驟,t1、發送方與接收方采用互控協議,發送方每次發送一個數據包后都等待接收方的回應,直到接收方收到發送方發送的所有關系表數據后,返回給發送方確認消息,其中發送方根據對應的關系對接收方分發相應的關系表數據;t2、發送方收到確認消息后,發送本次通訊連接結束消息;接收方收到通訊連接結束消息后,返回確認消息,并從緩沖區加載收到的關系表數據。2、如權利要求l所述的方法,其特征在于,所述步驟tl中,包括,發送方將需要同步的關系表列表發送到接收方后,接收方進行校驗后存入緩沖區,返回應答消息給發送方;發送方收到應答消息后,讀取所有關系表中的關系表名稱字段,根據接收方的模塊類型進行查找,得到接收方所對應的關系表并發送到接收方,并通知接收方開始同步該關系表;接收方收到關系表信息后,返回發送方應答消息,并且準備接收關系表記錄的數據;發送方收到接收方的應答消息后,將所述關系表的記錄數據發送到接收方,所述關系表的記錄數據包括關系表的記錄個數、關系表的記錄內容。3、如權利要求2所述的方法,其特征在于,所述步驟tl中,還包括,發送方收到數據服務器新的數據時或者接收方在系統初始化時通知發送方分發數據時,發送方產生新的傳輸標識號;發送方將傳輸標識號發送到接收方,建立通訊連接;接收方收到傳輸標識號后,初始化接收數據的緩沖區,返回應答消息。4、如權利要求3所述的方法,其特征在于,所述發送方將所述關系表的記錄數據發送到接收方后,進一步包括步驟,步驟I、接收方將收到關系表的記錄數據寫入緩沖區,并進行消息回應;步驟J、發送方判斷所述關系表的所有記錄數據是否同步完成,如果是,則執行步驟K,否則,發送方再次將所述關系表的記錄數據發送到接收方,執行步驟I;步驟K、發送方通知接收方所述關系表同步完成;步驟L、接收方收到所述關系表同步完成消息后,返回應答消息;步驟M、發送方收到應答消息后,判斷是否已發送所有關系表數據,如果是,則發送方對接收方發送所有關系表同步完成消息,否則,發送方再次讀取所有關系表中的關系表名稱字段,根據接收方的模塊類型進行查找,得到接收方所對應的關系表并發送到接收方,并通知接收方開始同步該關系表。5、如權利要求4所述的方法,其特征在于,接收方收到所述所有關系表同步完成消息后,返回給發送方確認消息。6、如權利要求l、2、3、4或5所述的方法,其特征在于,所述步驟tl中,若一定時間后,發送方未收到接收方回應,則重發消息,若重發多次仍未收到回應,則認為此次傳輸失敗;接收方每次收到數據后都給發送方回應,并等待下一個數據包或消息,若一定時間后,未收到發送方消息,則重發上一消息,若重發多次仍未收到發送方消息,則認為此次傳輸失敗,數據不進行修改。7、如權利要求l、2、3、4或5所述的方法,其特征在于,為了避免不必要的數據分發,主控模塊和其他業務才莫塊都需要維護一個數據版本號,每次接收數據時主控模塊和其他業務模塊都會更新自己的數據版本號;同時數據分發時,接收方也會比較發送過來的數據版本是否比自身數據版本更新,接收方只接收比本地數據版本更新的數據。8、如權利要求5所述的方法,其特征在于,所述接收方收到傳輸標識號后,初始化接收數據的緩沖區,返回應答消息時,其中所述應答消息的內容包括收到的傳輸標識號;所述關系表的內容包括關系表名稱、記錄長度、字段描述、模塊類型的信息。9、如權利要求8所述的方法,其特征在于,對于每個所述關系表,都會對應一條記錄,描述每個關系表分別對何種類型的模塊有效,其中模塊類型字段包括多種模塊類型的組合值。10、如權利要求l、2、3、4或5所述的方法,其特征在于,所述步驟t2中,接收方將接收的數據存放在緩沖區中,接收所有數據完成以后,進行數據校驗。11、如權利要求IO所述的方法,其特征在于,如果接收方數據校驗失敗,則本次同步失敗,整體回滾;如果接收方數據校驗成功,則將緩沖區中的數據拷貝到對應的內存區域。12、如權利要求11所述的方法,其特征在于,所述數據校驗內容包括關系表記錄個數是否超出內存數據庫相應表的規劃容量、相關聯的關系表數據是否一致。全文摘要本發明公開了一種媒體網關多模塊數據配置下的數據分發方法,主控模塊作為發送方,其他業務模塊作為接收方,首先發送方與接收方采用互控協議,發送方每次發送一個數據包后都等待接收方的回應,直到接收方收到發送方發送的所有關系表數據后,返回給發送方確認消息,其中發送方根據對應的關系對接收方分發相應的關系表數據;發送方收到確認消息后,發送本次通訊連接結束消息;接收方收到通訊連接結束消息后,返回確認消息,并從緩沖區加載收到的關系表數據。應用本發明,在原有的前后臺數據同步的基礎上,建立一種可行的、有效的通訊設備內部的多模塊數據分發,保證多模塊設備的正常運行。文檔編號H04L12/66GK101150545SQ200710151458公開日2008年3月26日申請日期2007年10月18日優先權日2007年10月18日發明者民劉,王瑞豐,恒蔣申請人:中興通訊股份有限公司