1.
前言
近幾年,隨著通訊行業的迅猛發展,三大運營商之間的競爭也越來越趨於白熱化。在對使用者資源的爭奪中,大量豐富、粘滯性強的業務既是攻城略地的排頭兵,又是保家護院的橋頭堡。對任何乙個業務來說,使用前的訂購、到期後的續訂以及使用後的退訂都是必需的流程。從請求**上說,有簡訊、
wap、
ivr等;從使用者規模上說,面對的是千萬乃至億級的大資料量和高併發。為這樣的需求設計的系統,需要兼具高效、健壯、通用。下面以筆者親身經歷的國內某知名運營商平台上的
xx專案為例,簡要介紹一下自己在該類系統架構設計中的心得,以期達到拋磚引玉的效果。
2.
總體設計
使用者進行業務開通的方式是多種多樣的,常用的就有簡訊
(sms)
、移動網際網路
(wap)
、網際網路
(www)
、**語音
(ivr)
、非結構化補充資料業務
(ussd)
等。為了對其進行標準化,我們設計了
db介面即上行隊列表,所有業務開通的請求全部存入該錶。
後台任務
(用任務管理系統中的任務排程系統配置啟動
)首先讀取上行隊列表,封裝為上行指令物件,傳送至請求分發器。請求分發器在初始化上下文時,已將指令格式與對應的業務處理器的對映關係用
hashmap
的形式載入記憶體,在接到指令物件後,首先判斷和其匹配的指令格式,再分發到業務處理器。
業務處理器採用典型的三層模型,
action
層負責資料封裝,
service
層負責具體的業務處理邏輯,
dao層負責資料持久化。這裡用到了模板模式,將子類
action
共用的操作抽象到父類
action
作為模板,簡化了邏輯。
對業務開通,包括訂購、續訂、退訂等請求的處理來說,關鍵是大量後台任務。這些後台任務要在大資料量、高併發的場景下高效、健壯的執行,需要乙個通用性的框架。該框架包含了後台任務的配置、啟動、關閉入口,我們還設計了啟動監聽亦即
listener
服務,可以指定需要跟隨框架一起啟動的服務。為了實時了解後台任務的運**況,需要乙個監控前台;另外,在錯誤和異常發生時要能告警,通知到相關人員。有了這樣一套系統,後台任務的開發人員僅僅需要關注到其專屬的任務邏輯上,其他工作已經移交框架統一管理。
3.
核心子系統設計
3.1.
任務管理系統設計
該平台將負責後台任務的定時排程,執行中任務的監控,當發生異常時須及時告知相關運營維護、開發人員。該平台將大大降低後台任務開發的難度,同時提高系統的穩定性和可監控性。
該任務管理系統包括如下模組: ø
任務排程系統
在指定時間執行指定任務,並且負責管理任務的生命週期,負責傳送心跳訊號至監控系統,傳送任務執行狀態至監控系統。包含如下模組:
ø任務監控系統
旨在建立乙個通用的應用服務監控平台,實現對每個執行任務的狀態,執行引數收集、展現。同時該平台將對一些基礎資料進行維護,如:
ø告警平台
告警平台將採用email和簡訊並行的方式
這裡可選的工具包括定時排程工具
quartz.jar
,jvm
狀態檢視協議
jmx,
commons-httpclient.jar等
3.2.
請求分發器設計
ø指令解析
解析指令
xml,生成指令格式與業務處理器的對映關係。
<
command
name
="^[0-9]$"
targetclass
="com.aspire.prov.business.handle.action.loginaction"
>
command
>
ø初始化上下文
隨***與任務管理系統一起啟動,主要是業務處理器的例項化。另外,指定當異常發生時由哪個類進行捕獲、處理,以及會話管理的策略也在這個時候完成。
config
= configloade***ctory.getdefaultconfigloader().load(
classloaderutils.getresource(
"commands.xml"
, frameworkcontextimpl.class).getfile());
config
.instantiateallaction();
config.instantiateallexceptionhandlers();
ø業務分發
將請求傳送至與指令格式匹配的業務處理器
action.perform(request, response);
ø會話管理
利用粘性
session
,使來自同乙個終端的所有請求由乙個應用進行處理,避免了不同機器間
session
的同步的繁瑣。利用取模技術,使不同任務間負載均衡。利用任務的
stateful
屬性,避免了同乙個任務不同執行緒間死鎖。
session = context.getmanager().getsession(sessionid);
3.3.
業務處理器設計
øaction層
可統一繼承自抽象類
commonaction
,共用的邏輯抽象到
perform
方法中,子類實現
execute
方法。
øservice層
可按具體的業務開通型別進行分類,如訂購、續訂、退訂。 ø
dao層
可以採用
jdbc
直連,也可以利用第三方
orm工具,如
hibernate
、ibatis
,但要注意效能,盡量避免資料持久化成為整個系統的瓶頸。
移動簡訊回執怎麼開通 中國移動業務簡訊開通指令
1.傳送cxbx 到,查詢當月 剩餘簡訊條數。2.傳送 cxgfx 到,查詢當月飛信 gprs 剩餘流量。3.傳送 cxgtc 到,查詢當月 gprs 剩餘流量。4.傳送 cxcct 到,查詢當月超級暢聽 剩餘流量。5.傳送 cxgll 到,查詢當月已使用的 gprs 流量總和。6.傳送 cxdx1...
判斷SIM卡屬於哪個移動運營商
第一種方法 獲取手機的imsi碼,並判斷是中國移動 中國聯通 中國電信 telephonymanager telmanager telephonymanager getsystemservice context.telephony service 獲取sim卡的imsi碼 sim卡唯一標識 imsi...
三大運營商4G業務調查
本人使用的是日版iphone5,能使用聯通3g網路就算不錯了,4g看起來還很遠。但是遲早還是會用上4g的,所以先對三大運營商的4g業務進行了調查。而且,日版iphone5離4g並沒有想象的那麼遠,甚至比3g都可能更近。那大部分人是不是就只能侷限在2g的龜速中了呢?對於使用了很久4g網路的我來說這反差...