姬渭孟 于雪蓮
摘 要:針對運營商IT系統(tǒng)產(chǎn)品規(guī)則校驗復(fù)雜的情況,提出一種基于緩存的規(guī)則計算方法,通過基于緩存的實時數(shù)據(jù)存儲與規(guī)則計算,能夠?qū)崿F(xiàn)對于整個規(guī)則計算過程,全部基于緩存實現(xiàn),從而提高規(guī)則計算的效率。
關(guān)鍵詞:緩存;實時;數(shù)據(jù);存儲;規(guī)則;計算
1 方案提出的背景
隨著通信業(yè)務(wù)的發(fā)展,尤其是近年來流量業(yè)務(wù)的快速發(fā)展,各類產(chǎn)品不斷推出,產(chǎn)品的訂購規(guī)則也越來越復(fù)雜,如產(chǎn)品與產(chǎn)品件的互斥,產(chǎn)品對于用戶余額、入網(wǎng)時間等的規(guī)則要求。在通信運營商層面,用戶進行產(chǎn)品訂購時,由IT系統(tǒng)進行規(guī)則校驗。如校驗較慢,會降低用戶體驗,影響產(chǎn)品推廣。
目前的主流方案是基于緩存計算裝置,包括緩存單元和計算單元,計算單元通過讀取緩存單元的規(guī)則數(shù)據(jù),并完成計算。但需要進行多次的物理磁盤讀的操作,以獲取所需要的實例數(shù)據(jù),存在數(shù)據(jù)讀取計算時間過長的問題。
本方案要解決的技術(shù)問題:通過數(shù)據(jù)的實時存儲,將規(guī)則計算所需要的配置數(shù)據(jù)、實例數(shù)據(jù)均保存在緩存中,并提前進行規(guī)則計算,將計算結(jié)果也保存在緩存中,這樣當需要進行規(guī)則計算時,所有的數(shù)據(jù)均從內(nèi)存中獲取,避免了進行磁盤的讀寫操作,從而可以大大縮短規(guī)則計算的時間。
2 具體方案介紹
本方案提出一種方案,具體組成如下,包括5個單元,單元一:數(shù)據(jù)加載單元;單元二:原始數(shù)據(jù)緩存單元;單元三:數(shù)據(jù)服務(wù)單元;單元四:數(shù)據(jù)計算單元;單元五:數(shù)據(jù)持久化單元。
單元一:數(shù)據(jù)加載單元,原始數(shù)據(jù)加載單元的主要工作有兩項,一是在首次啟動時,會進行數(shù)據(jù)初始化工作,從BSS系統(tǒng)的物理數(shù)據(jù)庫,提取當前時刻全量的產(chǎn)品配置數(shù)據(jù)和“活躍用戶”訂購實例數(shù)據(jù),通過數(shù)據(jù)加載功能,全量加載到單元二中,key-value方式后保存到緩存。二是對于實時的增加變化數(shù)據(jù),提供兩種適配器,消息適配器和文件適配器,當業(yè)務(wù)系統(tǒng)用戶數(shù)據(jù)發(fā)生變更時,如用戶進行了產(chǎn)品訂購,則業(yè)務(wù)系統(tǒng)可以通過消息或文件的方式,與數(shù)據(jù)加載單元的對應(yīng)適配器進對接,將增量變化數(shù)據(jù)同步到數(shù)據(jù)加載單元,由數(shù)據(jù)加載單元將變更
單元二:原始數(shù)據(jù)存儲單元,主要為數(shù)據(jù)存儲功能,以key-value方式將數(shù)據(jù)保存在緩存中。數(shù)據(jù)主要分為兩類,一類是用戶實例數(shù)據(jù),一類是配置數(shù)據(jù)。實現(xiàn)將靜態(tài)數(shù)據(jù)緩存到共享內(nèi)存中,利用共享內(nèi)存實現(xiàn)數(shù)據(jù)的快速計算及讀取,同時采用RBTREE排序方法實現(xiàn)對數(shù)據(jù)的快速查找。
其中用戶實例數(shù)據(jù)緩存通過LRU(最近最少使用算法)及MRU(最近最長使用算法)實現(xiàn)緩存數(shù)據(jù)替換,如果緩存結(jié)果達到系統(tǒng)配置的內(nèi)存值,將提供一定的策略將最近最不常被查詢到的數(shù)據(jù)替換出去,而將最近最常被使用的數(shù)據(jù)保持在緩存中。
單元三:數(shù)據(jù)服務(wù)單元,主要是對外提供緩存的計算和查詢服務(wù),同時具有服務(wù)管理功能,能夠?qū)Ψ?wù)進行注冊和管理,并記錄服務(wù)調(diào)用信息,并對服務(wù)調(diào)用的頻次、渠道等進行管理和控制。
單元四:數(shù)據(jù)計算單元,當熱點用戶生成或新增熱點數(shù)據(jù)后,會調(diào)用數(shù)據(jù)計算單元的數(shù)據(jù)計算模塊,完成規(guī)則的計算,并將計算結(jié)果保存在共享緩存中。
當有服務(wù)通過數(shù)據(jù)服務(wù)單元提供的數(shù)據(jù)校驗服務(wù)要求進行規(guī)則校驗時,根據(jù)服務(wù)入?yún)⑻峁┑牟僮鲉TID,用戶ID,先到單元二中,將操作員ID+用戶ID作為Key值,獲取包括用戶訂購實例的Value值,與用戶的當前訂購實例進行比對。
1)如果比對結(jié)果一致,標識該用戶未做過其它業(yè)務(wù)操作,可以直接將規(guī)則計算結(jié)果返回
2)如果比對結(jié)果不一致,或沒有記錄,則通過單元一,重新將此用戶數(shù)據(jù)作為“熱點數(shù)據(jù)”進行加載到共享緩存,并調(diào)用數(shù)據(jù)計算模塊,快速進行規(guī)則計算,并將計算結(jié)果更新到共享緩存中。
進程管理模塊,可以依據(jù)規(guī)則計算類型,將進程進行分組,如產(chǎn)品互斥規(guī)則計算為單獨一組進程,產(chǎn)品依賴規(guī)則計算為另外一組進程,這樣當有多個產(chǎn)品規(guī)則計算時,可以進行多進程并行計算,從而提高計算速度。
單元五:數(shù)據(jù)持久化單元,主要采用文件或數(shù)據(jù)庫的方式,將共享緩存中心數(shù)據(jù)同步至磁盤,實現(xiàn)數(shù)據(jù)持久化。這樣做的好處時當單元二發(fā)生故障,重新啟動時,共享緩存中的數(shù)據(jù)會全部丟失,可以從數(shù)據(jù)持久化單元中快速恢復(fù)。而不再需要重新通過單元一進行數(shù)據(jù)的全量抽取和加載,提高了共享緩存數(shù)據(jù)恢復(fù)速度。
4 結(jié)束語
本方案的技術(shù)優(yōu)點:一是通過建立“活躍用戶”的模型,降低了緩存中的數(shù)據(jù)量。二是將用戶訂購實例數(shù)據(jù)放入緩存,解決了規(guī)則計算涉及用戶實例數(shù)據(jù)時,與物理數(shù)據(jù)庫頻繁交互造成計算效率明顯下降的問題。三是通過緩存與用戶實例的對比,實現(xiàn)了緩存數(shù)據(jù)的強一致性,保證緩存規(guī)則計算的正確性。4四是通過將緩存計算結(jié)果保存,避免了每次規(guī)則計算都要重新計算的問題,有效提高計算效率。
本方案基于緩存平臺,實現(xiàn)了用戶實例等實時變化類數(shù)據(jù)的實時的存儲和計算,大大提升了規(guī)則計算的效率。