用于處理電信網(wǎng)絡(luò)中的事件的設(shè)備和方法
【專利說明】用于處理電信網(wǎng)絡(luò)中的事件的設(shè)備和方法
[0001]分案說明
[0002]本申請是申請日為2009年7月28日,申請?zhí)枮?00980160635.5,題為“用于處理電信網(wǎng)絡(luò)中的事件的設(shè)備和方法”的中國專利申請的分案申請。
技術(shù)領(lǐng)域
[0003]本發(fā)明涉及用于處理電信網(wǎng)絡(luò)中的事件的設(shè)備和方法,并且具體地涉及諸如Java企業(yè)版(JEE)處理平臺之類的電信處理平臺中用于同步與應(yīng)用會話相關(guān)聯(lián)的事件的處理的方法和設(shè)備。
【背景技術(shù)】
[0004]在電信網(wǎng)絡(luò)中,為了提供除常規(guī)電話呼叫之外的額外功能,存在許多應(yīng)用和服務(wù)。這些應(yīng)用和服務(wù)通常運行在連接到電信網(wǎng)絡(luò)的不同服務(wù)器上。這些服務(wù)器通常運行在與電信網(wǎng)絡(luò)自身不同的平臺上。
[0005]一種這樣的平臺是Java企業(yè)版(JEE)平臺,其是標(biāo)準(zhǔn)Java平臺的發(fā)展。JEE是針對Java編程語言中的服務(wù)器編程的廣泛使用的平臺。JEE平臺與標(biāo)準(zhǔn)Java平臺的不同在于其添加了主要基于運行在應(yīng)用服務(wù)器上的模塊化組件來部署容錯的分布式多層Java軟件的功能的庫。JEE平臺的特征在于其允許多個處理線程并行地運行,由此提高任務(wù)執(zhí)行的吞吐量。
[0006]盡管JEE平臺適合于許多應(yīng)用,但是如下所述,對于某些電信服務(wù)可能是不可行的。
[0007]電信協(xié)議的處理通常要求使用與應(yīng)用會話相關(guān)聯(lián)的狀態(tài)機(jī)。對于這些狀態(tài)機(jī),必須一次僅接收一個消息,使得不會破壞狀態(tài)。因此,JEE平臺不提供用于一次一個地處理特定應(yīng)用會話上的消息的裝置。相反,JEE平臺通常會啟動與要處理的消息一樣多的并行線程。
[0008]圖1示出了典型的JEE簇1,包括多個處理器3。處理器3可以是相同的,并且分享JEE簇I的負(fù)載。當(dāng)用作電信處理平臺時,每個處理器3通常將包括若干容器,例如Enterprise Java Beans 5 (EJB)、HTTP 服務(wù)程序(servlet) 7、會話發(fā)起協(xié)議(SIP)服務(wù)程序9或者其他執(zhí)行單元13,如用于與傳統(tǒng)系統(tǒng)通信的其他資源適配器。
[0009]圖1示出的架構(gòu)包括線程池19。線程池19包括一個或多個處理線程t N,用于使得處理器3能夠并行地執(zhí)行多任務(wù)。線程池19還包括任務(wù)隊列21,任務(wù)隊列21包含線程^至t ,要執(zhí)行的任務(wù)的集合。每個處理線程t 1至t N—次執(zhí)行一個任務(wù)。
[0010]如上面提到的,JEE平臺配置為并行地嘗試和執(zhí)行與系統(tǒng)中定義的線程一樣多的任務(wù)。這在下述情況下可能出現(xiàn)問題:如圖1所示的JEE平臺被用于處理電信應(yīng)用和服務(wù),其中當(dāng)多個線程^至1,并行地執(zhí)行與應(yīng)用會話相關(guān)聯(lián)的多個事件時,會話狀態(tài)變?yōu)闊o效。換言之,應(yīng)用會話中的事件并發(fā)地更新相同的會話狀態(tài)。
[0011]確保事件同步的一種方法是使用鎖或旗語(semaphore)來防止應(yīng)用會話中的事件并發(fā)地更新相同的會話狀態(tài)。如此,當(dāng)一個線程^至tN在處理與特定應(yīng)用會話相關(guān)聯(lián)的事件時,所有其他線程必須等待直到所述一個線程結(jié)束。其缺點在于:使許多線程^至七,等待,這不是對系統(tǒng)資源的最佳使用,并且通常與JEE平臺原理相沖突。
[0012]確保事件同步的另一方法是向每個應(yīng)用會話僅分配所述多個線程^至^中的一個線程。如此,每個應(yīng)用會話具有用于處理其事件的專用線程。然而,這樣的解決方案具有上述線程池機(jī)制的缺點,以及因此違背了支配所有資源(包括線程)必須被管理的重要JEE平臺原理。該解決方案還具有以下缺點:使用比所需的線程多得多的線程^至七,,由此資源效率不高。
[0013]根據(jù)上文應(yīng)該理解,在不損害資源效率的情況下實現(xiàn)事件同步存在問題。
【發(fā)明內(nèi)容】
[0014]本發(fā)明的目的在于提供一種用于以資源高效的方式同步在電信網(wǎng)絡(luò)中使用的處理平臺中的事件處理的方法和設(shè)備。
[0015]根據(jù)本發(fā)明的一個方面,提供了一種在電信處理平臺中同步與應(yīng)用會話相關(guān)聯(lián)的事件的處理的方法,其中所述電信處理平臺具有用于并行地處理多個任務(wù)的多個處理線程,以及其中所述任務(wù)存儲在任務(wù)隊列中。所述方法包括以下步驟:在與特定應(yīng)用會話相關(guān)聯(lián)的事件隊列中存儲一個或多個事件,以及向特定應(yīng)用會話的事件隊列中的僅一個事件分配所述任務(wù)隊列中的任務(wù)。
[0016]本發(fā)明具有以下優(yōu)點:避免了并發(fā)地處理事件,因為特定應(yīng)用會話的事件隊列中僅一個事件分配有任務(wù)。本發(fā)明還具有以下優(yōu)點:不需要對現(xiàn)有線程池本身執(zhí)行任務(wù)隊列中的任務(wù)的處理的方式進(jìn)行任何修改。
[0017]在事件隊列中存儲事件可以包括以下步驟:確定所述事件是否是事件隊列中的第一事件,如果是,則向該特定事件分配任務(wù)隊列中的任務(wù)。
[0018]從事件隊列中移除已處理的事件可以包括以下步驟:確定事件隊列是否為空,如果不為空,則向事件隊列中的另一事件分配任務(wù)隊列中的任務(wù)。該分配任務(wù)的步驟可以包括向事件隊列中的下一個事件分配任務(wù)的步驟。
[0019]在事件隊列中存儲事件以及確定所述事件是否是事件隊列中的第一事件的步驟可以作為不可分割的動作來執(zhí)行。這具有避免競態(tài)條件的優(yōu)點。
[0020]從事件隊列中移除事件以及確定事件隊列是否為空的步驟可以作為不可分割的動作來執(zhí)行。這也具有避免競態(tài)條件的優(yōu)點。
[0021]根據(jù)本發(fā)明的一個方面,可以提供鎖,以執(zhí)行所述不可分割的動作。備選地,可以使用原子計數(shù)器來執(zhí)行所述不可分割的動作。該原子計數(shù)器具有在相應(yīng)的存儲或移除步驟期間遞增或遞減的計數(shù)值,所述計數(shù)值指示事件隊列是否為空,或者事件是否是事件隊列中的第一事件。
[0022]所述方法可以用在具有Java企業(yè)版(JEE)處理平臺的電信處理平臺中。
[0023]根據(jù)本發(fā)明的另一方面,提供了一種在具有用于并行地處理多個任務(wù)的多個處理線程的電信處理平臺中使用的資源適配器,所述任務(wù)存儲在任務(wù)隊列中。所述資源適配器包括一個或多個事件隊列。每個事件隊列與應(yīng)用會話相關(guān)聯(lián),并且適于存儲與其對應(yīng)應(yīng)用會話相關(guān)聯(lián)的一個或多個事件。所述資源適配器包括:同步單元,用于同步事件隊列中的事件的處理,所述同步單元配置為向事件隊列中的僅一個事件分配任務(wù)隊列中的任務(wù)。
[0024]根據(jù)本發(fā)明的另一方面,提供了一種JEE簇,所述JEE簇包括如所附權(quán)利要求所述的資源適配器,或者適于執(zhí)行如所附權(quán)利要求所述的方法。
[0025]本發(fā)明具有如下優(yōu)點:有效地使用線程池來處理來自多個隊列的事件,不會不必要地阻止線程,而且同時并行處理盡可能多的事件(來自不同應(yīng)用會話)。此外,本發(fā)明無死鎖和活鎖。
【附圖說明】
[0026]為了更好地理解本發(fā)明,以及更清楚地示出如何實現(xiàn)本發(fā)明,現(xiàn)在將參考作為示例的附圖,在附圖中:
[0027]圖1示出了已知JEE簇的典型架構(gòu);
[0028]圖2示出了具有用于處理應(yīng)用會話的資源適配器的JEE架構(gòu);
[0029]圖3示出了根據(jù)本發(fā)明的實施例的資源適配器;
[0030]圖4示出了根據(jù)本發(fā)明的實施例的方法中執(zhí)行的步驟;
[0031]圖5示出了根據(jù)本發(fā)明的一個方面的方法中執(zhí)行的步驟;
[0032]圖6示出了根據(jù)本發(fā)明的另一方面執(zhí)行的步驟;
[0033]圖7示出了根據(jù)本發(fā)明的另一方面執(zhí)行的步驟;
[0034]圖8示出了根據(jù)本發(fā)明的另一方面的執(zhí)行的步驟;以及
[0035]圖9至12提供了根據(jù)本發(fā)明可以如何處理多個事件的示例。
【具體實施方式】
[0036]下面將在JEE平臺的上下文中描述的本發(fā)明。然而,應(yīng)該理解,本發(fā)明還可應(yīng)用于與線程池結(jié)合來執(zhí)行對事件和會話的處理的平臺的其他形式,即通過利用事件處理的任何會話框架。此外,盡管本發(fā)明是在電信環(huán)境的上下文中描述的,但是本發(fā)明還可應(yīng)用于具有類似問題的其他應(yīng)用。
[00