一種基于時間輪定器的事件處理方法及裝置制造方法
【專利摘要】本發(fā)明涉及通信領(lǐng)域,公開了一種基于時間輪定器的事件處理方法及裝置,用于有效降低系統(tǒng)開銷。該方法為:將每一個時間事件分別列入相應(yīng)的時間閾值包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表,再通過一個最高精度的定時器進行循環(huán)定時,該定時器每超時一次,便判斷是否存在超時的時間鏈表,并將超時的時間鏈表中記錄的超時的時間事件彈出進行處理,以及將未超時的時間鏈表繼續(xù)列入其時間閾值包含的下一個精度級別的時間分量對應(yīng)的時間鏈表,并繼續(xù)采用上述定時器進行監(jiān)控,這樣,僅采用一個最高精度的定時器便可以推動整個時間輪的運轉(zhuǎn),并分別監(jiān)控每一個時間事件的超時情況,從而有效降低了系統(tǒng)開銷,提升了系統(tǒng)針對時間事件的容量。
【專利說明】一種基于時間輪定器的事件處理方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,特別涉及一種基于時間輪定器的事件處理方法及裝置。
【背景技術(shù)】
[0002]在目前的演進的分組核心網(wǎng)(Evolved Packet Core, EPC)計費場景下,以每處理單元5萬用戶計算,每用戶統(tǒng)計平均1.2承載,每承載一個費率組計算。則時間閾值計費需要同時啟動12萬個計數(shù)器。按照時間閾值為5分鐘計算,則每秒平均有1000個定時器超時。這一量級的定時器開銷對于系統(tǒng)將產(chǎn)生巨大的影響。
[0003]當(dāng)前計費觸發(fā)功能(Charging Trigger Function, CTF)實現(xiàn)中,針對時間閾值定時器的實現(xiàn)主要有兩類,一類是通過純硬件實現(xiàn),另一類是通過軟件設(shè)計實現(xiàn)。
[0004]純硬件實現(xiàn)方式通過是對每個需要啟動的定時器使用相應(yīng)的硬件定時時鐘,當(dāng)定時器超時時,相應(yīng)的硬件定時時鐘中斷;而在上述模型下同時存在的硬件中斷的量將達到12萬。這一量級幾乎將會耗盡所有的系統(tǒng)資源,而且目前也沒有如此強大的硬件條件能夠支持這一量級要求。
[0005]而軟件實現(xiàn)方式通常是選取一個能滿足系統(tǒng)最高精度需求的硬件定時器做為系統(tǒng)基準定時器,以提供系統(tǒng)所需的系統(tǒng)時鐘和軟件定時器的時鐘源。通過軟件后續(xù)處理和換算實現(xiàn)大容量定時器需求。然而,選取一個能滿足系統(tǒng)最高精度需求的硬件定時器做為系統(tǒng)基準定時器,會令系統(tǒng)基準定時器的時鐘源將始終處于啟動狀態(tài),即在每個最小的精度時間片都會產(chǎn)生中斷,這樣,在不存在最高精度要求的定時需求時,將會產(chǎn)生大量的無效中斷,耗費系統(tǒng)開銷。
[0006]在實際使用中發(fā)現(xiàn)超過90%的硬件定時中斷為無效中斷,這些中斷浪費了大量的系統(tǒng)資源,降低了系統(tǒng)效率。針對這一弊端,很多定時器設(shè)置采用了多級精度的方法,即啟動一個較低精度的定時器T鏈表,將所有時間事件按超時順序插入該鏈表,當(dāng)前較低精度級別定時器超時后,再根據(jù)剩余時刻啟動較高精度的定時器完成剩余時間的定時。
[0007]例如,參閱圖1所示,當(dāng)較低精度的定時器T’中斷到達后,T1時間與實際到時時刻T’之差已達不到一個低精度定時周期T,此時T1事件從時間鏈表中彈出,并啟動一個硬件剩余時刻精度定時器ΛΤ=Τ’ -Τ1的高精度定時器,當(dāng)該高精度定時器中斷到達時。觸發(fā)Τ1事件到時處理。
[0008]而當(dāng)Τ4事件到達時,以當(dāng)前時間鏈表的精度Τ為單位,計算Τ4事件在該精度級別的超時時間,遍歷較低精度的時間鏈表將Τ4事件按超時順序插入該鏈表。
[0009]這一方案有兩個主要弊端:一方面,新的事件到達時需要在較低精度定時器鏈表上尋找自身的插入位置,在定時事件比較多的情況下,在鏈表上尋找插入位置將消耗較大的軟件開銷;另一個方面,在較低精度定時周期Τ內(nèi)的定時事件比較多的場景下(例如在Τ’時刻,時間鏈表上的Τ1?Τη時間剩余超時時間均達不到Τ時,Τ1?Τη都將啟動硬件超時定時器),這仍舊會消耗較多的定時中斷,導(dǎo)致系統(tǒng)性能下降。
[0010]綜上所述,在EPC計費系統(tǒng)中,由CTF完成對用戶承載和費率組級別的流量信息統(tǒng)計,CTF通過Rf接口將統(tǒng)計信息交付給計費數(shù)據(jù)功能(Charging Data Function, CDF),由⑶F生成相應(yīng)的⑶R發(fā)給計費網(wǎng)關(guān)功能(Charging Gateway Function, CGF)。CGF對計費數(shù)據(jù)記錄(Charging Data Record, Q)R)進行處理后發(fā)送給賬單域(Billing Domain, BD)。在整個計費過程中多種計費規(guī)則與方法都需要通過CTF進行數(shù)據(jù)采集。其中基于承載或費率組的時間閾值計費,需要針對每條承載或費率組使用定時器控制時間閾值。CTF每秒需要處理大量的定時器。那么針對實現(xiàn)而言,大量的定時器開銷將嚴重影響系統(tǒng)容量、增加系統(tǒng)負荷、降低處理性能。如何提供大容量,低開銷,高精度的定時器是CTF需要考慮和解決的問題。
【發(fā)明內(nèi)容】
[0011]本發(fā)明實施例提供一種基于時間輪定器的事件方法及裝置,用于有效降低系統(tǒng)開銷。
[0012]本發(fā)明實施例提供的具體技術(shù)方案如下:
[0013]第一方面,一種基于時間輪定器的事件處理方法,包括:
[0014]獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值;
[0015]分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表;
[0016]采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時,所述定時器每超時一次,均判斷當(dāng)前是否存在超時的時間鏈表,在確定存在超時的時間鏈表時,開始對所述超時的時間鏈表中記錄的已超時的時間事件進行處理,以及將所述超時的時間鏈表中記錄的未超時的每一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,并繼續(xù)采用所述定時器進行超時監(jiān)控。
[0017]結(jié)合第一方面,在第一種可能的實現(xiàn)方式中,獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值,包括:
[0018]獲取待處理的時間事件,分別確定每一個時間事件對應(yīng)的用于表征等待處理所需時間的絕對時長;
[0019]分別對每一個時間事件對應(yīng)的絕對時長進行歸一化處理;
[0020]將每一件時間事件對應(yīng)的經(jīng)歸一化處理的絕對時長作為相應(yīng)的時間事件的時間閾值。
[0021]結(jié)合第一方面或第一方面的的第一種可能的實現(xiàn)方式,在第二種可能的實現(xiàn)方式中,分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表后,在采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時之前,進一步包括:
[0022]分別針對每一個時間事件對應(yīng)的時間鏈表設(shè)置相應(yīng)的計數(shù)器。
[0023]結(jié)合第一方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,采用基于當(dāng)前最高精度的定時器進行循環(huán)定時,所述定時器每超時一次,均判斷當(dāng)前是否有超時的時間鏈表,包括:
[0024]啟動所述定時器進行循環(huán)定時之后,所述定時器每超時一次,判斷當(dāng)前是否存在對應(yīng)的計數(shù)器已到達指定數(shù)值的時間鏈表,若是,則確定存在超時的時間鏈表,否則,確定不存在超時的時間鏈表。[0025]結(jié)合第一方面或第一方面的第一種可能的實現(xiàn)方式,在第四種可能的實現(xiàn)方式中,將所述超時的時間鏈表中記錄的未超時的一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,包括:
[0026]在所述一個時間事件對應(yīng)的時間閾值所表征的時長中刪除所述超時的時間列表對應(yīng)的精度級別的時長,并將所述一個時間事件列入相應(yīng)的時間閾值的剩余時長中當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表。
[0027]第二方面,一種CTF,包括:
[0028]處理單元,用于獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值,并分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表,以及采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時,所述定時器每超時一次,均判斷當(dāng)前是否存在超時的時間鏈表,在確定存在超時的時間鏈表時,對所述超時的時間鏈表中記錄的已超時的時間事件進行處理,以及將所述超時的時間鏈表中記錄的未超時的每一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,并繼續(xù)采用所述定時器進行超時監(jiān)控;
[0029]結(jié)合第二方面,在第一種可能的實現(xiàn)方式中,所述處理單元具體用于:
[0030]獲取待處理的時間事件,分別確定每一個時間事件對應(yīng)的用于表征等待處理所需時間的絕對時長;
[0031]分別對每一個時間事件對應(yīng)的絕對時長進行歸一化處理;
[0032]將每一件時間事件對應(yīng)的經(jīng)歸一化處理的絕對時長作為相應(yīng)的時間事件的時間閾值。
[0033]結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第二方面的第二種可能的實現(xiàn)方式中,所述處理單元進一步用于:
[0034]在分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表后,在采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時之前,分別針對每一個時間事件對應(yīng)的時間鏈表設(shè)置相應(yīng)的計數(shù)器。
[0035]結(jié)合第二方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述處理單元具體用于:
[0036]啟動所述定時器進行循環(huán)定時之后,所述定時器每超時一次,判斷當(dāng)前是否存在對應(yīng)的計數(shù)器已到達指定數(shù)值的時間鏈表,若是,則確定存在超時的時間鏈表,否則,確定不存在超時的時間鏈表。
[0037]結(jié)合第二方面或第二方面的第一種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述處理單元具體用于:
[0038]在將所述超時的時間鏈表中記錄的未超時的一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表時,在所述一個時間事件對應(yīng)的時間閾值所表征的時長中刪除所述超時的時間列表對應(yīng)的精度級別的時長,并將所述一個時間事件列入相應(yīng)的時間閾值的剩余時長中當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表。
[0039]第三方面,一種CTF,包括處理器,其中,
[0040]處理器,用于獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值,并分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表,以及采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時,所述定時器每超時一次,均判斷當(dāng)前是否存在超時的時間鏈表,在確定存在超時的時間鏈表時,對所述超時的時間鏈表中記錄的已超時的時間事件進行處理,以及將所述超時的時間鏈表中記錄的未超時的每一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,并繼續(xù)采用所述定時器進行超時監(jiān)控。
[0041]結(jié)合第三方面,在第一種可能的實現(xiàn)方式中,所述處理器具體用于:
[0042]獲取待處理的時間事件,分別確定每一個時間事件對應(yīng)的用于表征等待處理所需時間的絕對時長;
[0043]分別對每一個時間事件對應(yīng)的絕對時長進行歸一化處理;
[0044]將每一件時間事件對應(yīng)的經(jīng)歸一化處理的絕對時長作為相應(yīng)的時間事件的時間閾值。
[0045]結(jié)合第三方面或第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中,所述處理器進一步用于:
[0046]在分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表后,在采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時之前,分別針對每一個時間事件對應(yīng)的時間鏈表設(shè)置相應(yīng)的計數(shù)器。
[0047]結(jié)合第三方面的第二種可能的實現(xiàn)方式,在第三種可能的實現(xiàn)方式中,所述處理器具體用于:
[0048]啟動所述定時器進行循環(huán)定時之后,所述定時器每超時一次,判斷當(dāng)前是否存在對應(yīng)的計數(shù)器已到達指定數(shù)值的時間鏈表,若是,則確定存在超時的時間鏈表,否則,確定不存在超時的時間鏈表。
[0049]結(jié)合第三方面或第三方面的第一種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,所述處理器具體用于:
[0050]在將所述超時的時間鏈表中記錄的未超時的一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表時,在所述一個時間事件對應(yīng)的時間閾值所表征的時長中刪除所述超時的時間列表對應(yīng)的精度級別的時長,并將所述一個時間事件列入相應(yīng)的時間閾值的剩余時長中當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表。
[0051 ] 本發(fā)明實施例中,將每一個時間事件分別列入相應(yīng)的時間閾值包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表,再通過一個最高精度的定時器進行循環(huán)定時,該定時器每超時一次,便判斷是否存在超時的時間鏈表,并將超時的時間鏈表中記錄的超時的時間事件彈出進行處理,以及將未超時的時間鏈表繼續(xù)列入其時間閾值包含的下一個精度級別的時間分量對應(yīng)的時間鏈表,并繼續(xù)采用上述定時器進行監(jiān)控,這樣,相較于現(xiàn)有技術(shù)下的實現(xiàn)方式,可以大大減少定時器數(shù)目,不必針對每一個時間事件分別設(shè)置相應(yīng)的定時器,令定時器數(shù)目不再受時間事件的影響,僅采用一個最高精度的定時器便可以推動整個時間輪的運轉(zhuǎn),并分別監(jiān)控每一個時間事件的超時情況,從而有效降低了系統(tǒng)開銷,提升了系統(tǒng)針對時間事件的容量
【專利附圖】
【附圖說明】
[0052]圖1為現(xiàn)有技術(shù)下在時間鏈表中插入新事件示意圖;[0053]圖2為本發(fā)明實施例中基于TWT進行事件處理流程圖;
[0054]圖3為本發(fā)明實施例中歸一化處理示意圖;
[0055]圖4和圖5為本發(fā)明實施例中CTF示意圖。
【具體實施方式】
[0056]為了有效降低計費開銷,本發(fā)明實施例中,CTF采用時間輪定時器(TimeWheelTimers, TWT)設(shè)定多級精度的時間鏈表,通過將定時事件從低精度的時間鏈表上逐步遷移到高精度的時間鏈表上,完成時間的遞推,當(dāng)時間到達時,將定時事件從時間鏈表上彈出進行超時處理。
[0057]進一步地,由于每個時間鏈表對應(yīng)的時間是相同的,因此時間事件在插入時間鏈表時無需排序,插入鏈表尾即可。有效的降低了系統(tǒng)負荷與開銷。提升了定時容量。
[0058]下面結(jié)合附圖對本發(fā)明優(yōu)選的實施方式進行詳細說明。
[0059]參閱圖2所示,本發(fā)明實施例中,CTF采用TWT進行計費的詳細流程如下:
[0060]步驟200:CTF獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值。
[0061]具體的,CTF獲取待處理的時間事件,分別確定每一個時間事件對應(yīng)的用于表征等待處理所需時間的絕對時長,以及分別對每一個時間事件對應(yīng)的絕對時長進行歸一化處理,再將每一件時間事件對應(yīng)的經(jīng)歸一化處理的絕對時間作為相應(yīng)的時間事件的時間閾值。
[0062]從上述內(nèi)容 可以看出,一個時間事件的時間閾值即是該時間事件的等待處理時長,也可稱為超時時間,本發(fā)明實施例中,以絕對時間的形式來記錄一個時間事件的時間閾值,如,時間事件A的時間閾值為2分鐘2秒150毫秒,則其表示記錄時間事件A的起始時刻為0秒,到2分鐘2秒150毫秒的時刻,時間事件A超時,可以進行處理。
[0063]另一方面,由于不同的時間事件的絕對時間不一致,則在確定每一個時間事件的時間閾值后,在執(zhí)行步驟210之前,可選的,可以對每一個時間事件的時間閾值進行歸一化處理。
[0064]本發(fā)明實施例中,在采用TWT的基礎(chǔ)上,CTF會根據(jù)事件的需求確定最小精度值,通過最小精度值將連續(xù)時間軸上的小于最小精度的時間事件進行歸一化處理。即CTF會確定每一個時間事件的最小精度,并對其最小精度進行歸一化處理,其中,在進行歸一化處理時,可以向前取整,也可以向后取整。
[0065]以向后取整為例,參閱圖3所示,本發(fā)明實施例中,假設(shè)在連續(xù)時間序列上,在T0時刻和T1時刻之間存在時間事件111、112、…t In,則CTF歸一化認為這些時間事件均在T1時刻發(fā)生;又假設(shè)在連續(xù)時間序列上,在T1時刻和T2時刻之間存在時間事件t21、t22、…
t2n,則CTF歸一化認為這些時間事件均在T2時刻發(fā)生。ΤΟ、ΤΙ、T2......這些時刻即為CTF
根據(jù)計費需求設(shè)置的最小精度,本實施例中,針對計費事件可以將最小精度設(shè)置為秒級的,也可以設(shè)置為百毫秒級的,具體看計費需求而定。
[0066]具體的,在EPC系統(tǒng)中,時間事件通常配置為分鐘級到十分鐘級別,按照這一閾值范圍,100ms的精度足以滿足時間閾值的定時需求。將連續(xù)的時間軸劃分為100ms間隔的離散時間序列。對于隨機接入的用戶,認為在每個100ms時間間隔內(nèi)的時間閾值到達(定時器超時)事件,可以統(tǒng)一在100ms到達時刻的時間序列點上處理。[0067]例如,假設(shè)時間事件A的時間閾值為2分鐘2秒150毫秒,而T0表示0毫秒,T1表示100毫秒,T2表示200毫秒……,顯然,CTF采用的最小精度為100毫秒,若按照向前取整的歸一化處理方式,則CTF確定時間事件A的時間閾值歸一化為2分鐘2秒100毫秒,而若按照向后取整的歸一化處理方式,則CTF確定時間事件A的時間閾值歸一化為2分鐘2秒200毫秒。
[0068]步驟210:CTF分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表。
[0069]TWT采用絕對時間序列,通過設(shè)置多個時間量級的時間鏈表完成時間的遞推。為簡單起見,采用類似于日歷的模型進行闡述該原理(針對不同的應(yīng)用場景,該時間量級可以按照需求進行設(shè)置):即設(shè)置精度分別為年,月,日,時,分,秒,百毫秒等七個時間量級,每個時間量級根據(jù)基礎(chǔ)的日歷換算關(guān)系設(shè)置對應(yīng)數(shù)目的時間鏈表。 [0070]例如,如果需要TWT支持長達30年的絕對時間序列,則年量級需要設(shè)定30個時間鏈表,分別對應(yīng)絕對時間的第0年到第29年,月量級設(shè)置12個時間鏈表,對應(yīng)每年的12個月;日量級設(shè)置30個時間鏈表,對應(yīng)每月的30天;時量級設(shè)置24個時間鏈表,對應(yīng)每天的24個小時;分量級設(shè)置60個時間鏈表,對應(yīng)每小時的60分鐘;秒量級設(shè)置60個時間鏈表,對應(yīng)每分鐘的60秒;百暈秒量級設(shè)置10個時間鏈表,對應(yīng)每秒中的10個百暈秒。(由于本身時間輪定時器并不是真實的日歷,此處不需要考慮閏年閏月和大小月的情況。)
[0071]然后,假設(shè)時間事件B的時間閾值為10分鐘20秒200毫秒(已經(jīng)歸一化處理)。則CTF確定時間事件B對應(yīng)的時間閾值包含的當(dāng)前精度最低的時間分量為10分鐘,則CTF首先把時間事件B列入當(dāng)前精度最低的10分鐘時間鏈表;當(dāng)然,當(dāng)10分鐘時間鏈表超時后,CTF需要將時間事件B列入下一個當(dāng)前精度最低的時間分量所對應(yīng)時間鏈表,即20秒時間鏈表,而到20秒時間鏈表超時后,CTF需要繼續(xù)將時間事件B繼續(xù)列入一下個當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表,即200毫秒時間鏈表,直到200毫秒時間鏈表超時才會對時間事件B進行處理,這一點將在后續(xù)實施例中進行詳細介紹,此處僅強調(diào)所謂當(dāng)前精度最低的時間鏈表是指時間事件B對應(yīng)的還未超時的鏈表,已經(jīng)超時的時間鏈表不在考慮之列。
[0072]步驟220:CTF采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時,該定時器每超時一次,均判斷當(dāng)前是否存在超時的時間鏈表,在確定存在超時的時間鏈表時,開始對該超時的時間鏈表中記錄的已超時的時間事件進行處理,以及將該超時的時間鏈表中記錄的未超時的每一個時間事件,列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,并繼續(xù)采用所述定時器進行超時監(jiān)控。
[0073]本發(fā)明實施例中,CTF在分別將未超時的每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表后,在采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時之前,進一步包括:分別針對每一個時間事件對應(yīng)的時間鏈表設(shè)置相應(yīng)的計數(shù)器,其中,每一個時間鏈表對應(yīng)的計數(shù)器均基于最高精度的定時器的啟動而開始計數(shù),當(dāng)任意一個計數(shù)器記錄的數(shù)值到達表征相應(yīng)時間鏈表超時的預(yù)設(shè)數(shù)值時,即判斷上述相應(yīng)的時間鏈表超時。
[0074]當(dāng)然,計數(shù)器的設(shè)置也可以在時間鏈表生成時即設(shè)置完畢,待開始獲取時間事件后便直接使用,本發(fā)明實施例中僅以使用哪一個時間鏈表便設(shè)置哪一個時間鏈表對應(yīng)的計數(shù)器為例進行說明,這樣,可以在一定程度上節(jié)省系統(tǒng)開銷。
[0075]具體的,在執(zhí)行步驟220時,CTF啟動一個基于當(dāng)前最高精度的定時器進行循環(huán)定時,該定時器每超時一次,CTF判斷當(dāng)前是否存在對應(yīng)的計數(shù)器已到達指定數(shù)值的時間鏈表,若是,則確定存在超時的時間鏈表,否則,確定不存在超時的時間鏈表。
[0076]進一步地,本發(fā)明實施例中,CTF將超時的時間鏈表中記錄的未超時的一個時間事件,列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表時,在上述時間閾值所表征的時長中刪除上述超時的時間列表對應(yīng)的精度級別的時長,并將上述一個時間事件列入相應(yīng)的時間閾值的剩余時長中當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表。
[0077]本發(fā)明實施例中,由一個最高精度的定時器,推動整個時間輪運轉(zhuǎn)。假設(shè)最高精度的定時器其精度為100ms,那么,定時器每超時一次對應(yīng)一個絕對時間點,啟動時刻為0時亥IJ,第η次超時即為第n*100ms時刻。第1次超時對應(yīng)為0年0月0日0時0分0秒100毫秒,此時需要處理的是毫秒級第1個時間鏈表,即毫秒級第1個時間鏈表對應(yīng)的計數(shù)器到達指定數(shù)值(如,指定數(shù)值為1),該毫秒級第1個時間鏈表當(dāng)前已超時;而第2次超時對應(yīng)為0年0月0日0時0分0秒200毫秒,此時需要處理的是毫秒級第2個時間鏈表,即毫秒級第2個時間鏈表對應(yīng)的計數(shù)器到達指定數(shù)值(如,指定數(shù)值為2),該毫秒級第2個時間鏈表當(dāng)前已超時;第10次超時對應(yīng)為0年0月0日0時0分1秒000毫秒,此時需要處理的是秒級第1個時間鏈表,即秒級第1個時間鏈表對應(yīng)的計數(shù)器到達指定數(shù)值(如,指定數(shù)值為10),該秒級第1個時間鏈表當(dāng)前已超時;第600次超時對應(yīng)0年0月0日0時1分00秒00,此時需要處理的是分鐘級第1個時間鏈表,即分鐘級第1個時間鏈表對應(yīng)的計數(shù)器到達指定數(shù)值(如,指定數(shù)值為600),該分鐘級第1個時間鏈表當(dāng)前已超時;以此類推。
[0078]本發(fā)明實施例中,CTF在判斷是否存在超時事件時,可以采用但不限于以下方法:以時間事件C為例,假設(shè)時間事件C對應(yīng)的時間閾值為50秒500毫秒,當(dāng)時間事件C對應(yīng)的50秒時間鏈表超時時,CTF將時間事件C的超時時刻和當(dāng)前時刻作比較,若時間事件C的超時時刻大于當(dāng)前時刻,則說明時間事件C還未到處理時刻,則CTF對時間事件C對應(yīng)的時間閾值進行繼續(xù)折解,折解出下一個時間分量500毫秒,并將時間事件C插入到500毫秒時間鏈表中,即將時間事件C接入至下一個當(dāng)前精度最低的時間鏈表的表尾)
[0079]例如,按照最小精度(100ms)為基準,當(dāng)前時刻為0年0月0日1時2分5秒100,CTF獲取的時間事件D對應(yīng)的時間閾值為10分鐘。那么,該時間事件D應(yīng)在0年0月0日1時12分5秒100ms超時。此時,超時時刻和當(dāng)前時刻的年月日時等時刻均相同(時刻為
0),而分鐘時刻不同,超時時刻為12分鐘,那么CTF應(yīng)當(dāng)將時間事件D列入第12個分鐘級別時間鏈表上。當(dāng)時間到達0年0月0日1時12分0秒000ms時,CTF掃描第12個分鐘級時間鏈表,將已超時的第12個分鐘級時間鏈表中記錄的時間事件D從TWT中彈出,再根據(jù)未超時的時間事件D的剩余的時間(此例為5秒100ms),計算下一個精度級別的時間分量(此例為秒級分量為5),并將時間事件D插入第5個秒級時間鏈表的表尾。
[0080]其中,如果下一精度級別的時間分量為0,則繼續(xù)向更下一個精度級別拆解剩余時間分量,直至折解至當(dāng)前最高的精度級別,如,假設(shè)時間事件E的時間閾值為12分0秒100ms,則CTF將時間事件E從第12個分鐘級時間鏈表摘除,插入至第1個百毫秒級時間鏈表的表尾。
[0081]基于上述實施例,下面采用一個具體的應(yīng)用場景對上述實施例作出詳細說明。[0082]假設(shè)在0年0月0日1時2分5秒135毫秒產(chǎn)生一個時間事件,稱為時間事件F,假設(shè)時間事件的時間閾值為10分鐘,那么CTF對該時間事件F的處理過程如下:
[0083]首先,CTF以當(dāng)前最高的精度為單位計算定時超時時間,假設(shè)時間事件F的時間閾值設(shè)置為為0年0月0日1時12分5秒100毫秒。
[0084]接著,CTF將時間事件E的超時時刻和當(dāng)前時刻比較,將時間事件F掛在最低精度的時間分量對應(yīng)的時間鏈表的表尾,即第12個分鐘(12分)級時間鏈表的尾部。
[0085]CTF啟動100ms的最高精度定時器,隨著最高精度定時器的循環(huán)定時,時間推到0年0月0日1時12分0秒0毫秒的時候,CTF將時間事件E從第12個分鐘級時間鏈表上摘除,插入到第5個秒級的時間鏈表的尾部。
[0086]接著,隨著最高精度定時器的循環(huán)定時,時間繼續(xù)推進到0年0月0日1時12分5秒0毫秒的時候,CTF將時間事件E從第5個秒級時間鏈表上摘除,插入到第1個百毫秒級時間鏈表的尾部。
[0087]最后,隨著最高精度定時器的循環(huán)定時,時間繼續(xù)推進到0年0月0日1時12分5秒100毫秒的時候,時間事件E定時到達,CTF將時間事件E從TWT中彈出,開始進行處理。
[0088]基于上述實施例,參閱圖4,本發(fā)明實施例中,CTF至少包括處理單元40,其中,
[0089]處理單元40,用于獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值,并分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表,以及采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時,定時器每超時一次,均判斷當(dāng)前是否存在超時的時間鏈表,在確定存在超時的時間鏈表時,對超時的時間鏈表中記錄的已超時的時間事件進行處理,以及將超時的時間鏈表中記錄的未超時的每一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,并繼續(xù)采用定時器進行超時監(jiān)控。
[0090]例如,處理單元40在獲知計費觸發(fā)單元觸發(fā)計費并將用戶的計費相關(guān)參數(shù)(例如:時間閾值,承載信息等)傳遞給自身時,根據(jù)獲得的計費相關(guān)參數(shù)生成一個時間事件,并設(shè)置該事件的定時周期,待該時間事件定時到達后再根據(jù)承載信息等統(tǒng)計該承載上的流量,并通過Rf接口將結(jié)果反饋給⑶F。
[0091 ] 處理單元40具體用于:
[0092]獲取待處理的時間事件,分別確定每一個時間事件對應(yīng)的用于表征等待處理所需時間的絕對時長;
[0093]分別對每一個時間事件對應(yīng)的絕對時長進行歸一化處理;
[0094]將每一件時間事件對應(yīng)的經(jīng)歸一化處理的絕對時長作為相應(yīng)的時間事件的時間閾值。
[0095]處理單元40進一步用于:
[0096]在分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表后,在采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時之前,分別針對每一個時間事件對應(yīng)的時間鏈表設(shè)置相應(yīng)的計數(shù)器。
[0097]處理單元40具體用于:
[0098]啟動定時器進行循環(huán)定時之后,定時器每超時一次,判斷當(dāng)前是否存在對應(yīng)的計數(shù)器已到達指定數(shù)值的時間鏈表,若是,則確定存在超時的時間鏈表,否則,確定不存在超時的時間鏈表。
[0099]處理單元40具體用于:
[0100]在將超時的時間鏈表中記錄的未超時的一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表時,在一個時間事件對應(yīng)的時間閾值所表征的時長中刪除超時的時間列表對應(yīng)的精度級別的時長,并將一個時間事件列入相應(yīng)的時間閾值的剩余時長中當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表。
[0101]參閱圖5所示,本發(fā)明實施例中,CTF至少包括處理器50,其中,
[0102]處理器50,用于獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值,并分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表,以及采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時,定時器每超時一次,均判斷當(dāng)前是否存在超時的時間鏈表,在確定存在超時的時間鏈表時,對超時的時間鏈表中記錄的已超時的時間事件進行處理,以及將超時的時間鏈表中記錄的未超時的每一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,并繼續(xù)采用定時器進行超時監(jiān)控。
[0103]例如,處理器50在獲知計費觸發(fā)器觸發(fā)計費并將用戶的計費相關(guān)參數(shù)(例如:時間閾值,承載信息等)傳遞給自身時,根據(jù)獲得的計費相關(guān)參數(shù)生成一個時間事件,并設(shè)置該事件的定時周期,待該時間事件定時到達后根據(jù)承載信息等統(tǒng)計該承載上的流量,并通過Rf接口將結(jié)果反饋給⑶F。
[0104]處理器50具體用于:
[0105]獲取待處理的時間事件,分別確定每一個時間事件對應(yīng)的用于表征等待處理所需時間的絕對時長;
[0106]分別對每一個時間事件對應(yīng)的絕對時長進行歸一化處理;
[0107]將每一件時間事件對應(yīng)的經(jīng)歸一化處理的絕對時長作為相應(yīng)的時間事件的時間閾值。
[0108]處理器50進一步用于:
[0109]在分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表后,在采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時之前,分別針對每一個時間事件對應(yīng)的時間鏈表設(shè)置相應(yīng)的計數(shù)器。
[0110]處理單元50具體用于:
[0111]啟動定時器進行循環(huán)定時之后,定時器每超時一次,判斷當(dāng)前是否存在對應(yīng)的計數(shù)器已到達指定數(shù)值的時間鏈表,若是,則確定存在超時的時間鏈表,否則,確定不存在超時的時間鏈表。
[0112]處理單元50具體用于:
[0113]在將超時的時間鏈表中記錄的未超時的一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表時,在一個時間事件對應(yīng)的時間閾值所表征的時長中刪除超時的時間列表對應(yīng)的精度級別的時長,并將一個時間事件列入相應(yīng)的時間閾值的剩余時長中當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表。
[0114]綜上所述,本發(fā)明實施例中,將每一個時間事件分別列入相應(yīng)的時間閾值包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表,再通過一個最高精度的定時器進行循環(huán)定時,該定時器每超時一次,便判斷是否存在超時的時間鏈表,并將超時的時間鏈表中記錄的超時的時間事件彈出進行處理,以及將未超時的時間鏈表繼續(xù)列入其時間閾值包含的下一個精度級別的時間分量對應(yīng)的時間鏈表,并繼續(xù)采用上述定時器進行監(jiān)控,這樣,相較于現(xiàn)有技術(shù)下的實現(xiàn)方式,可以大大減少定時器數(shù)目,不必針對每一個時間事件分別設(shè)置相應(yīng)的定時器,令定時器數(shù)目不再受時間事件的影響,僅采用一個最高精度的定時器便可以推動整個時間輪的運轉(zhuǎn),并分別監(jiān)控每一個時間事件的超時情況,從而有效降低了系統(tǒng)開銷,提升了系統(tǒng)針對時間事件的容量
[0115]進一步地,本發(fā)明實施例中,將時間事件均勻分布于各個時間分量對應(yīng)的時間鏈表中,可以有效降低時間鏈表的長度,如,超時時刻和當(dāng)前時刻相距較長的時間事件可以位于精度較低的時間鏈表上,而即將超時的時間事件則位于精度較高的時間鏈表上。
[0116]并且時間事件無需在時間鏈表中按照超時順序?qū)ふ也迦胛恢?,僅需要插入對應(yīng)精度級別的時間鏈表的尾部即可,從而避免了大容量條件下查詢操作和插入操作所產(chǎn)生的大量系統(tǒng)。
[0117]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0118]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0119]這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0120]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0121]盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
[0122]顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明實施例進行各種改動和變型而不脫離本發(fā)明實施例的精神和范圍。這樣,倘若本發(fā)明實施例的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種基于時間輪定器的事件處理方法,其特征在于,包括:獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值;分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表;采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時,所述定時器每超時一次,均判斷當(dāng)前是否存在超時的時間鏈表,在確定存在超時的時間鏈表時,開始對所述超時的時間鏈表中記錄的已超時的時間事件進行處理,以及將所述超時的時間鏈表中記錄的未超時的每一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,并繼續(xù)采用所述定時器進行超時監(jiān)控。
2.如權(quán)利要求1所述的方法,其特征在于,獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值,包括:獲取待處理的時間事件,分別確定每一個時間事件對應(yīng)的用于表征等待處理所需時間的絕對時長;分別對每一個時間事件對應(yīng)的絕對時長進行歸一化處理;將每一件時間事件對應(yīng)的經(jīng)歸一化處理的絕對時長作為相應(yīng)的時間事件的時間閾值。
3.如權(quán)利要求1或2所述的方法,其特征在于,分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表后,在采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時之前,進一步包括:分別針對每一個時間 事件對應(yīng)的時間鏈表設(shè)置相應(yīng)的計數(shù)器。
4.如權(quán)利要求3所述的方法,其特征在于,采用基于當(dāng)前最高精度的定時器進行循環(huán)定時,所述定時器每超時一次,均判斷當(dāng)前是否有超時的時間鏈表,包括:啟動所述定時器進行循環(huán)定時之后,所述定時器每超時一次,判斷當(dāng)前是否存在對應(yīng)的計數(shù)器已到達指定數(shù)值的時間鏈表,若是,則確定存在超時的時間鏈表,否則,確定不存在超時的時間鏈表。
5.如權(quán)利要求1或2所述的方法,其特征在于,將所述超時的時間鏈表中記錄的未超時的一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,包括:在所述一個時間事件對應(yīng)的時間閾值所表征的時長中刪除所述超時的時間列表對應(yīng)的精度級別的時長,并將所述一個時間事件列入相應(yīng)的時間閾值的剩余時長中當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表。
6.一種計費觸發(fā)功能CTF,其特征在于,包括:處理單元,用于獲取待處理的時間事件,并分別確定每一個時間事件的時間閾值,并分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表,以及采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時,所述定時器每超時一次,均判斷當(dāng)前是否存在超時的時間鏈表,在確定存在超時的時間鏈表時,對所述超時的時間鏈表中記錄的已超時的時間事件進行處理,以及將所述超時的時間鏈表中記錄的未超時的每一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表,并繼續(xù)采用所述定時器進行超時監(jiān)控。
7.如權(quán)利要求6所述的CTF,其特征在于,所述處理單元具體用于:獲取待處理的時間事件,分別確定每一個時間事件對應(yīng)的用于表征等待處理所需時間的絕對時長;分別對每一個時間事件對應(yīng)的絕對時長進行歸一化處理;將每一件時間事件對應(yīng)的經(jīng)歸一化處理的絕對時長作為相應(yīng)的時間事件的時間閾值。
8.如權(quán)利要求6或7所述的CTF,其特征在于,所述處理單元進一步用于:在分別將每一個時間事件列入相應(yīng)的時間閾值所包含的當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表后,在采用一個基于當(dāng)前最高精度的定時器進行循環(huán)定時之前,分別針對每一個時間事件對應(yīng)的時間鏈表設(shè)置相應(yīng)的計數(shù)器。
9.如權(quán)利要求8所述的CTF,其特征在于,所述處理單元具體用于:啟動所述定時器進行循環(huán)定時之后,所述定時器每超時一次,判斷當(dāng)前是否存在對應(yīng)的計數(shù)器已到達指定數(shù)值的時間鏈表,若是,則確定存在超時的時間鏈表,否則,確定不存在超時的時間鏈表。
10.如權(quán)利要求6或7所述的CTF,其特征在于,所述處理單元具體用于:在將所述超時的時間鏈表中記錄的未超時的一個時間事件列入相應(yīng)的時間閾值包含的下一個精度級別的時間分量所對應(yīng)的時間鏈表時,在所述一個時間事件對應(yīng)的時間閾值所表征的時長中刪除所述超時的時間列表對應(yīng)的精度級別的時長,并將所述一個時間事件列入相應(yīng)的時間閾值的剩余時長中當(dāng)前精度最低的時間分量所對應(yīng)的時間鏈表。
【文檔編號】G06F9/46GK103677976SQ201310664905
【公開日】2014年3月26日 申請日期:2013年12月9日 優(yōu)先權(quán)日:2013年12月9日
【發(fā)明者】張鄭錕, 張峰 申請人:大唐移動通信設(shè)備有限公司