石育龍
摘要:一般SP增值平臺(tái)由于用戶量少,實(shí)時(shí)性不高,性能要求不高,所以構(gòu)建技術(shù)簡(jiǎn)單。而像手機(jī)報(bào)、套餐類用戶業(yè)務(wù)由于用戶量大,信息實(shí)時(shí)要求高。因此,必須構(gòu)建一個(gè)高效運(yùn)行的平臺(tái)才能滿足實(shí)際業(yè)務(wù)需求。
關(guān)鍵詞:SP;增值業(yè)務(wù);大型平臺(tái)構(gòu)建;SMS;MMS
中圖分類號(hào):TN929.5文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1006-8937(2011)22-0088-02
1系統(tǒng)部署框架
操作系統(tǒng):Linux平臺(tái) AS5.0以上或SUSE10.3以上。
數(shù)據(jù)庫(kù): mysql/oracle。
主要開發(fā)語(yǔ)言(腳本):C、php、perl。
物理服務(wù)器:建議6臺(tái)以上(發(fā)送短信速度可以達(dá)到300條/s,彩信發(fā)送速度200條/s),實(shí)際部署可以調(diào)整。
2系統(tǒng)構(gòu)建要點(diǎn)
系統(tǒng)構(gòu)建框架如圖1所示。
①網(wǎng)關(guān)、web服務(wù)、數(shù)據(jù)庫(kù)雙機(jī)心跳監(jiān)測(cè)處理。采用heartbeat軟件,當(dāng)一臺(tái)宕機(jī)時(shí)另外一臺(tái)接管相應(yīng)的服務(wù)。
②分布式技術(shù)構(gòu)架。系統(tǒng)分為網(wǎng)關(guān)通訊層、發(fā)送代理層、kernel層、號(hào)段服務(wù)層、黑名單服務(wù)層、上行接收模塊、上行業(yè)務(wù)處理、定制關(guān)系管理層。
網(wǎng)關(guān)層:負(fù)責(zé)與運(yùn)營(yíng)商短信、彩信網(wǎng)關(guān)、定制關(guān)系服務(wù)器通信。
發(fā)送代理層:負(fù)責(zé)緩沖下發(fā),發(fā)送優(yōu)先級(jí)處理;
kernel層:與號(hào)段、黑名單服務(wù)一起負(fù)責(zé)判斷發(fā)送接收合理性。
上行接收模塊、上行業(yè)務(wù)處理:上行模塊接收不同接入號(hào)的短信,分發(fā)到不同上行業(yè)務(wù)處理。
定制關(guān)系管理層:處理用戶的定制取消,調(diào)用不同的業(yè)務(wù)處理模塊處理。
各個(gè)層可分布在不同服務(wù)器,各司其職,提高系統(tǒng)吞吐能力。
③需做二級(jí)緩沖,提高發(fā)送速度與成功率。對(duì)成批下發(fā)的短信/彩信業(yè)務(wù),如果不做二級(jí)緩沖處理,直接對(duì)網(wǎng)關(guān)進(jìn)行批量下發(fā),必定造成網(wǎng)關(guān)的數(shù)據(jù)擁擠,容易產(chǎn)生數(shù)據(jù)丟失,發(fā)送成功率下降。 可采用一主線程監(jiān)視多個(gè)子線程,而且數(shù)據(jù)采用高速緩沖區(qū)做存儲(chǔ),能夠處理大批量的短信/彩信群發(fā)工作。在平臺(tái)啟動(dòng)的時(shí)候,平臺(tái)自動(dòng)建立一個(gè)主線程來監(jiān)視是否有短信/彩信下發(fā)數(shù)據(jù),當(dāng)遇到成批下發(fā)的短信/彩信時(shí),如包月產(chǎn)品群發(fā),群發(fā)處理模塊先將群發(fā)內(nèi)容以及相應(yīng)數(shù)據(jù)進(jìn)行手機(jī)過濾、信息收集、信息過濾操作后,統(tǒng)一寫入群緩沖區(qū),當(dāng)主線程發(fā)現(xiàn)有新的群發(fā)數(shù)據(jù)的時(shí)候,會(huì)自動(dòng)將處理的數(shù)據(jù)按預(yù)設(shè)定的大小放入服務(wù)器的高速緩存中做數(shù)據(jù)臨時(shí)存儲(chǔ)并自動(dòng)開啟一個(gè)子線程進(jìn)行下發(fā)處理,這時(shí)數(shù)據(jù)保存在高速緩存里面,運(yùn)行速度及快,不做任何數(shù)據(jù)庫(kù)讀寫操作,而且可以按用戶要求開啟多個(gè)線程并發(fā)處理。 各子進(jìn)程發(fā)送完數(shù)據(jù)后,主線程能自動(dòng)負(fù)責(zé)釋放資源,而且還分別對(duì)各子進(jìn)程做了超時(shí)處理,如果到達(dá)預(yù)期的時(shí)間仍然沒有做下發(fā)處理,該現(xiàn)象在子線程發(fā)生鎖定現(xiàn)象后能遇到,此時(shí)主線程能將子線程中的數(shù)據(jù)收回,并將子線程殺死,開啟一個(gè)新的線程并將數(shù)據(jù)移交給新子線程繼續(xù)做下發(fā)處理。
④要有自動(dòng)重發(fā)功能。由于各方面的原因,下發(fā)有可能無(wú)法正常下發(fā)到用戶,這時(shí)需要對(duì)發(fā)送失敗的記錄進(jìn)行處理。 需采用獨(dú)立的重發(fā)機(jī)制能對(duì)發(fā)送失敗的短信/彩信能自動(dòng)進(jìn)行數(shù)據(jù)重新采集,并做 2 次發(fā)送處理,如 3 次仍然不成功就停止發(fā)送操作,并將數(shù)據(jù)記錄到發(fā)送失敗日志。
⑤要能支持多運(yùn)營(yíng)商、多接入號(hào)。由于采用了分布式編程,增加運(yùn)營(yíng)商、或一個(gè)運(yùn)營(yíng)商多個(gè)接入號(hào),只要增加網(wǎng)關(guān)層即可,配置相應(yīng)的業(yè)務(wù),其它層無(wú)須調(diào)整。
⑥可靈活編寫業(yè)務(wù)處理程序。通訊層一般變化較少,而業(yè)務(wù)處理邏輯經(jīng)常變化。業(yè)務(wù)處理層采用web頁(yè)面編寫,業(yè)務(wù)處理等通過http協(xié)議調(diào)用各個(gè)業(yè)務(wù)對(duì)應(yīng)的頁(yè)面,用戶上行短信/彩信后系統(tǒng)調(diào)用不同頁(yè)面處理業(yè)務(wù)邏輯,無(wú)需重啟程序。程序員只要會(huì)基本的web編程就輕松應(yīng)對(duì)。
⑦須提供開發(fā)接口。作為一個(gè)增值平臺(tái),必須有與其它系統(tǒng)有接口,實(shí)現(xiàn)下行、上行、定制關(guān)系與其它系統(tǒng)無(wú)縫對(duì)接。
⑧須有詳盡的日志管理機(jī)制。各個(gè)服務(wù)層的處理過程都詳細(xì)記錄處理日志,當(dāng)出現(xiàn)故障時(shí),可查詢到每一步日志,輕松排除系統(tǒng)故障,且系統(tǒng)定時(shí)壓縮以前日志,以節(jié)約空間。
⑨系統(tǒng)故障及時(shí)告警。網(wǎng)關(guān)故障或本系統(tǒng)某個(gè)環(huán)節(jié)出項(xiàng)故障時(shí),系統(tǒng)可以發(fā)送電子郵件、短信貓方式告警。讓系統(tǒng)管理員第一時(shí)間排除故障。監(jiān)控指標(biāo):多少時(shí)間沒有上下行、定制關(guān)系、群發(fā)積壓、磁盤空間、CPU、各個(gè)服務(wù)是否運(yùn)行正常等。
3結(jié)語(yǔ)
由于本方案采用分布式多線程編程技術(shù),大大提供了性能,提升了系統(tǒng)的吞吐能力。
完全可以滿足了電信級(jí)別應(yīng)用的需要。
參考文獻(xiàn):
[1] 中國(guó)移動(dòng)通信集團(tuán)公司.互聯(lián)網(wǎng)短信網(wǎng)關(guān)接口協(xié)議[Z],2011.
[2] 中國(guó)移動(dòng)通信集團(tuán)公司.中國(guó)移動(dòng)MISC1.6 Provision接口 使用手冊(cè)[Z],2011.
[3] 中國(guó)移動(dòng)通信集團(tuán)公司中國(guó)移動(dòng).MM7 API用戶手冊(cè)[Z], 2011.
[4] 中國(guó)聯(lián)合網(wǎng)絡(luò)通信有限公司.短消息網(wǎng)關(guān)系統(tǒng)接口協(xié)議[Z],2011.