本發明涉及應用服務器技術領域,特別涉及一種高性能IP-SM-GW系統的實現方法。
背景技術:
IP-SM-GW是IMS(IPMultimediaSubsystem技術,即IP多媒體子系統技術)域中一個應用服務器,為實現基于IP短信業務而新增加的功能實體,它在IMS域內通過SIP協議接收和發送IP短信,與傳統CS(Circuit Switched,電路交換)網絡交互時采用MAP協議進行消息交互。在IMS核心網絡中,它的作用類似一個應用服務器(AS,Application Server)。
IP短信流程分為移動始發短信流程(MO)和終結短信流程(MT)。 IP-SM-GW收到UE發送的短信并發送給短信中心(SMSC)的流程為MO短消息。當IP-SM-GW將短信中心(SMSC)發送的短信發給用戶終端(UE)的流程為MT短消息。
現有技術都是在用戶態直接調用系統進程進行業務處理,這種方法雖然方便直接,但是每次消息的接收或發送都需要調用一次系統進程,這造成系統壓力過大,當處理用戶數據增多時,會導致短消息收發性能下降。
技術實現要素:
為了解決現有技術的問題,本發明提供了一種高性能IP-SM-GW系統的實現方法,其能夠靈活有效的提高IP-SM-GW系統大規模用戶短消息并發性。
本發明所采用的技術方案如下:
一種高性能IP-SM-GW系統的實現方法,包括以下步驟:
A、創建一個由有限個任務線程的線程池,處理短消息業務,并將這些空閑的線程掛起;
B、建立epoll偵聽接口,當偵聽到終端的發送的注冊消息或始發短消息及短信中心發送的終結短消息時,創建相應的文件描述符,并將事件加入到epoll隊列中,對不同的事件進行處理并通知與其關聯的空閑業務線程進行處理。
步驟A中,對線程池每個線程都是不停監控任務列表中是否有任務節點,如果沒有任務節點繼續等待,并將該線程設置為空閑阻塞等待狀態,等待任務隊列中有任務節點喚醒該空閑的任務線程來處理短消息業務;如果任務隊列中存在著任務節點,就取出任務做相應的任務處理并將該任務節點從隊列中刪除。
步驟B中,超出部分的任務就先在任務隊列中等待,待任務線程處理完任務后變為空閑后,就可以轉而執行等待隊列中的任務。
本發明提供的技術方案帶來的有益效果是:
本發明的一種高性能IP-SM-GW系統的實現方法,是通過在IP-SM-GW系統中建立偵聽接口和處理業務的線程池,通過偵聽系統 epoll 隊列中的事件,如果注冊在epoll等待隊列中的文件描述符事件狀態發生了變化,內核就直接將這些事件放到events 數組中直接返回,并調用空閑的業務線程處理,不會隨著監聽事件數的增加而效率顯劇下降。同時epoll 中所監聽的事件數沒有限制,它只與系統的資源有關。避免了現有技術頻繁調用進程處理的低下的問題。
附圖說明
為了更清楚地說明本發明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發明的一種高性能IP-SM-GW系統的實現方法的方法流程圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚,下面將結合附圖對本發明實施方式作進一步地詳細描述。
實施例一
如附圖1所示,本實施例的一種高性能IP-SM-GW系統的實現方法,包括以下流程:
當IP-SM-GW系統啟動時,創建一個含有m個活動的業務處理線程池,并調用epoll接口epoll_create,創建一個文件描述符句柄,并制定偵聽事件的大小(即系統能夠處理的并發請求消息的能力)。
當IP-SM-SW偵聽到用戶的移動始發短消息或者短消息中心的短消息時,調用epoll_ctl將對應偵聽到的文件描述符添加到epoll 事件列表中。在系統進程中通過調用epoll_wait將epoll事件添加到任務隊列中,并喚醒一個空閑的任務線程就行處理。
對線程池每個線程都是不停監控任務列表中是否有任務節點,如果沒有任務節點繼續等待,并將該線程設置為空閑阻塞等待狀態,等待任務隊列中有任務節點喚醒該空閑的任務線程來處理短消息業務。如果任務隊列中存在著任務節點,就取出任務作相應的任務處理并將該任務節點從隊列中刪除。
以上所述僅為本發明的較佳實施例,并不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。