摘要:針對(duì)短信平臺(tái)的高可用性問題,探討適合企業(yè)短信平臺(tái)的構(gòu)建。高可用性的短信平臺(tái)關(guān)鍵是實(shí)現(xiàn)短信服務(wù)器與企業(yè)呼叫中心的負(fù)載均衡,以及短信平臺(tái)與業(yè)務(wù)系統(tǒng)的松耦合。本文結(jié)合企業(yè)短信平臺(tái)的需求特征,討論高可用性短信平臺(tái)的實(shí)現(xiàn)原理及系統(tǒng)功能。
關(guān)鍵詞:高可用性;通用性
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599 (2012) 22-0000-02
傳統(tǒng)的短信平臺(tái)采用短信服務(wù)器結(jié)合數(shù)據(jù)庫(kù)構(gòu)成,業(yè)務(wù)系統(tǒng)使用短信服務(wù)時(shí),在系統(tǒng)代碼直接調(diào)用短信平臺(tái)提供的接口,短信平臺(tái)接收業(yè)務(wù)系統(tǒng)傳輸?shù)男畔?,并?duì)接收短信的手機(jī)號(hào)碼和短信信息進(jìn)行分析,判斷手機(jī)號(hào)碼和信息是否符合短信平臺(tái)的規(guī)范要求,如果符合規(guī)范,則將接收號(hào)碼及信息保存到短信服務(wù)器關(guān)聯(lián)的數(shù)據(jù)庫(kù),而后短信服務(wù)器自動(dòng)讀取數(shù)據(jù)庫(kù)并將信息發(fā)送到預(yù)先設(shè)定的手機(jī)號(hào)碼。
傳統(tǒng)的短信平臺(tái)向業(yè)務(wù)系統(tǒng)提供基本的短信服務(wù),實(shí)現(xiàn)方式有兩種:方式一,傳統(tǒng)短信平臺(tái)的短信服務(wù)器直接調(diào)用短信數(shù)據(jù)庫(kù),中間無緩存和預(yù)處理,這樣導(dǎo)致短信服務(wù)器因處理信息量過大而死機(jī)或短信發(fā)送十分緩慢;方式二,傳統(tǒng)的短信平臺(tái)將所有的業(yè)務(wù)系統(tǒng)的短信不做區(qū)分地進(jìn)行排隊(duì),都存放在待發(fā)送隊(duì)列里面,再由短信服務(wù)器進(jìn)行發(fā)送,這樣單線程地處理發(fā)送效率比較低,同一優(yōu)先級(jí)的短信可能出現(xiàn)嚴(yán)重地堵塞。
結(jié)合上面描述的傳統(tǒng)短信平臺(tái)出現(xiàn)的各種弊端,本文討論構(gòu)建高可用性的短信平臺(tái)。高可用性的短信平臺(tái)需解決通用性及大數(shù)據(jù)量短信服務(wù)的問題。
1 平臺(tái)建設(shè)目標(biāo)
基于傳統(tǒng)短信平臺(tái)設(shè)計(jì)原理,以及企業(yè)短信業(yè)務(wù)的特征,建設(shè)具有高可用性的短信平臺(tái)。平臺(tái)應(yīng)具備如下特點(diǎn):
1.1 支持群發(fā)短信。群發(fā)短信是企業(yè)短信系統(tǒng)的基本功能要求,特別是電力行業(yè),需要對(duì)企業(yè)內(nèi)或外部人員使用短信通知,因此短信平臺(tái)要求操作簡(jiǎn)便、界面人性化的群發(fā)功能。
群發(fā)短信的基本要求是手機(jī)能準(zhǔn)確接收信息,但有時(shí)因特殊原因,部分信息不能被接收,那么這時(shí)需要短信平臺(tái)自動(dòng)獲取發(fā)送失敗的原因,以便人工及時(shí)處理。
1.2 高到達(dá)率。通過短信平臺(tái),短信被準(zhǔn)確發(fā)送到正確的手機(jī)接收端,在特殊情況下,部分短信可能發(fā)送失敗,為了實(shí)現(xiàn)良好的用戶體驗(yàn),短信平臺(tái)需從架構(gòu)著手,盡可能的減少失敗可能性,提高短信到達(dá)率。
1.3 高效率。企業(yè)短信往往發(fā)送量大,及時(shí)性要求強(qiáng),需要短信平臺(tái)高效的處理短信發(fā)送,能按照短信優(yōu)先級(jí),合理地處理短信發(fā)送請(qǐng)求。
1.4 針對(duì)性強(qiáng)。短信平臺(tái)被企業(yè)多個(gè)業(yè)務(wù)系統(tǒng)使用,那么短信發(fā)送時(shí)需自動(dòng)甄別,準(zhǔn)確地發(fā)送到合適業(yè)務(wù)系統(tǒng)指定的接收端。此外,短信使用者不確定性導(dǎo)致手機(jī)段不可定制,由此需要短信平臺(tái)能針對(duì)不同的手機(jī)段,自動(dòng)提供準(zhǔn)確的信息服務(wù)。
1.5 高效益性。短信平臺(tái)作為信息化項(xiàng)目,要求在同等資源下發(fā)揮最大的效益,能夠向企業(yè)不同業(yè)務(wù)系統(tǒng)、不同系統(tǒng)數(shù)據(jù)庫(kù)提供通用、易擴(kuò)展的短信服務(wù)。
2 平臺(tái)基本原理
高可用性的短信平臺(tái)主要由信息獲取、信息處理兩部分構(gòu)成。信息獲取,即業(yè)務(wù)系統(tǒng)按照短信平臺(tái)的規(guī)范要求,將待發(fā)送信息存入短信平臺(tái)數(shù)據(jù)庫(kù);信息處理,即業(yè)務(wù)系統(tǒng)向平臺(tái)傳輸信息和短信服務(wù)器處理信息的中間環(huán)節(jié)。高可用性的短信平臺(tái)主要體現(xiàn)在以下方面。
2.1 合適的規(guī)范。按照信息應(yīng)用技術(shù)標(biāo)準(zhǔn),制定適應(yīng)企業(yè)的短信應(yīng)用系統(tǒng)規(guī)范,指導(dǎo)短信應(yīng)用系統(tǒng)的設(shè)計(jì),以及其他業(yè)務(wù)應(yīng)用系統(tǒng)的短信二次接入應(yīng)用。
2.2 提供良好的短信二次接口規(guī)范。基于短信平臺(tái)基礎(chǔ)設(shè)施,使用過程抽象為:獲得帳號(hào)及密碼(申請(qǐng)者為帳號(hào)的主體)、實(shí)現(xiàn)數(shù)據(jù)交換。具體描述如下:
(1)獲得帳號(hào)。二次接入的應(yīng)用系統(tǒng)向公司短信平臺(tái)管理員申請(qǐng),獲得接入帳號(hào)及密碼。
(2)實(shí)現(xiàn)數(shù)據(jù)交換。二次接入的應(yīng)用系統(tǒng)根據(jù)選用的數(shù)據(jù)交換方式(文本或數(shù)據(jù)庫(kù)表),按接口規(guī)范在本地建立與短信平臺(tái)進(jìn)行數(shù)據(jù)交換的目錄(或數(shù)據(jù)庫(kù)表)。
(3)健全短信平臺(tái)功能模塊。提供禁發(fā)名單管理、過濾詞管理、業(yè)務(wù)類型管理、流量控制管理等。
(4)實(shí)現(xiàn)短信服務(wù)器和企業(yè)呼叫中心待發(fā)送隊(duì)列。高可用性短信平臺(tái)把待發(fā)送隊(duì)列分成兩部分:短信服務(wù)器待發(fā)送隊(duì)列和呼叫中心待發(fā)送隊(duì)列,發(fā)送隊(duì)列分開存儲(chǔ),待發(fā)送短信并發(fā)執(zhí)行,實(shí)現(xiàn)雙線程操作,執(zhí)行效率將大幅度提升。示意圖如下所示:
(5)合理使用資源,實(shí)現(xiàn)智能均衡負(fù)載。在待發(fā)送隊(duì)列的基礎(chǔ)上,數(shù)據(jù)庫(kù)層實(shí)現(xiàn)一個(gè)監(jiān)控程序,實(shí)時(shí)地監(jiān)控呼叫中心待發(fā)送隊(duì)列以及短信服務(wù)器待發(fā)送隊(duì)列的情況,并進(jìn)行智能判斷,若在呼叫中心待發(fā)送短信量超出當(dāng)天發(fā)送容量的情況下,可以由短信服務(wù)器分擔(dān)發(fā)送,或者在短信服務(wù)器待發(fā)送短信量超出當(dāng)天發(fā)送容量的情況下,由呼叫中心分擔(dān)發(fā)送;使資源能夠合理的應(yīng)用,達(dá)到智能負(fù)載均衡的效果。
(6)短信發(fā)送失敗原因詳細(xì)化。在一些特殊情況下,短信可能發(fā)送失敗,為了提高失敗處理效率,短信平臺(tái)提供詳細(xì)的失敗原因,可分類如下:禁發(fā)時(shí)段、禁發(fā)號(hào)碼、禁發(fā)詞語(yǔ)、系統(tǒng)簽名不正確、短信發(fā)送流水號(hào)不正確、發(fā)送端口不正確、短信類型不正確、用戶號(hào)碼不正確、其它錯(cuò)誤、空號(hào)、欠費(fèi)。
3 系統(tǒng)功能實(shí)現(xiàn)
3.1 發(fā)送短信。二次接入的應(yīng)用系統(tǒng)把待發(fā)送的短信按格式生成文本文件,放在指定的數(shù)據(jù)文件交換目錄,短信平臺(tái)客戶端服務(wù)程序從交換目錄讀取文本文件,并且把文件中的記錄發(fā)送給短信平臺(tái),客戶端服務(wù)程序處理完一個(gè)文件后,自動(dòng)刪除該文件。發(fā)送文件格式為:send_年年年年月月日日時(shí)時(shí)分分秒秒_其它字符_.txt。
每條待發(fā)短信在文件中是一條記錄,每條記錄采用回車換行,文件要求以end結(jié)束,沒有end結(jié)束標(biāo)志的文件系統(tǒng)不處理。為保證在網(wǎng)絡(luò)中斷后自動(dòng)恢復(fù)過程中,對(duì)提交的待發(fā)送記錄得到更快的處理,一個(gè)發(fā)送文件中的記錄數(shù)不超過500條。
待發(fā)短信的數(shù)據(jù)格式為XML格式,規(guī)范可定義為:
Content是發(fā)送內(nèi)容,普通短信和免提短信類型時(shí)發(fā)送內(nèi)容不能超過70個(gè)漢字,超長(zhǎng)短信類型時(shí)不能超過66個(gè)漢字.
超長(zhǎng)短信發(fā)送時(shí)需拆分成多條普通短信來發(fā)送,用戶手機(jī)如果支持超長(zhǎng)短信,則會(huì)自動(dòng)將收到的超長(zhǎng)短信按格式組裝成一條,否則用戶將收到多條帶格式的短信,并且有可能產(chǎn)生亂碼。
超長(zhǎng)短信封裝分三部分,第一部分表示短信總條數(shù),即超長(zhǎng)短信總內(nèi)容拆分成普通短信的條數(shù),第二部分表示當(dāng)前短信當(dāng)前條數(shù),第三部分是拆分的短信內(nèi)容(不能超過66個(gè)漢字),封裝格式如下:<1>短信總條數(shù)<2>當(dāng)前條數(shù)<3>短信內(nèi)容(不能超過66個(gè)漢字)。
3.2 發(fā)送結(jié)果。短信平臺(tái)發(fā)送短信后,把發(fā)送結(jié)果返回給客戶端服務(wù)程序,客戶端服務(wù)程序把發(fā)送結(jié)果記錄生成文本文件,放在指定的數(shù)據(jù)文件交換目錄,二次接入的應(yīng)用系統(tǒng)讀取發(fā)送結(jié)果文件,并且更新系統(tǒng)的短信發(fā)送結(jié)果標(biāo)志,二次接入的應(yīng)用系統(tǒng)處理完發(fā)送結(jié)果文件后,刪除該文件。發(fā)送結(jié)果文件格式為:resp_年年年年月月日日時(shí)時(shí)分分秒秒_序號(hào).txt,例如:resp20060501123001_01.txt。
文件要求以end結(jié)尾,沒有以end結(jié)尾的文件,表示該文件還在生成中,發(fā)送結(jié)果含義可定義為:0-成功;-1-禁發(fā)時(shí)段;-2-禁發(fā)號(hào)碼;-3-禁發(fā)詞語(yǔ);-4-系統(tǒng)簽名不正確;-5-短信發(fā)送流水號(hào)不正確;-6-發(fā)送端口不正確;-7-短信類型不正確;-8-用戶號(hào)碼不正確;-9-其它錯(cuò)誤;>0網(wǎng)關(guān)返回代碼。
3.3 狀態(tài)報(bào)告。短信平臺(tái)把狀態(tài)報(bào)告返回給客戶端服務(wù)程序,客戶端服務(wù)程序把狀態(tài)報(bào)告記錄生成文本文件,放在指定的數(shù)據(jù)文件交換目錄,二次接入的應(yīng)用系統(tǒng)讀取狀態(tài)報(bào)告文件,并且更新系統(tǒng)的短信狀態(tài)報(bào)告標(biāo)志,二次接入的應(yīng)用系統(tǒng)處理完?duì)顟B(tài)報(bào)告文件后,刪除該文件。狀態(tài)報(bào)告文件格式為:report_年年年年月月日日時(shí)時(shí)分分秒秒_序號(hào).txt,例如:report20060501123001_01.txt。
文件要求以end結(jié)尾,沒有以end結(jié)尾的文件,表示該文件還在生成中,狀態(tài)報(bào)告分為兩類:DELIVRD(已接收)和EXPIRED(短信過期),只有當(dāng)狀態(tài)為DELIVRD時(shí),才表示對(duì)方用戶已正確接收短信,其它的狀態(tài)都是用戶沒有收到短信。
3.4 接收短信。短信平臺(tái)把接收到的上行短信返回給客戶端服務(wù)程序,客戶端服務(wù)程序把上行短信記錄生成文本文件,放在指定的數(shù)據(jù)文件交換目,二次接入的應(yīng)用系統(tǒng)讀取上行短信文件,存放在自身的系統(tǒng)中,二次接入的應(yīng)用系統(tǒng)處理完上行短信文件后,刪除該文件。上行短信的文件格式為:recv_年年年年月月日日時(shí)時(shí)分分秒秒_端口號(hào)類別_序號(hào).txt,例如:recv 20060501123001_06619911402_01.txt。
文件要求以end結(jié)尾,沒有以end結(jié)尾的文件,表示該文件還在生成中。
4 結(jié)語(yǔ)
隨著短信平臺(tái)的應(yīng)用越來越廣泛,必將越來越多的業(yè)務(wù)系統(tǒng)關(guān)聯(lián)到短信平臺(tái),短信服務(wù)的負(fù)荷也將越來越重,如果不采用高可用性的短信平臺(tái),短信服務(wù)的性能必將遇到瓶頸。高可用性的短信平臺(tái)解決了以上問題,確保了高質(zhì)量的短信服務(wù),在企業(yè)信息化建設(shè)中將起到越來越重要的實(shí)際作用。
參考文獻(xiàn):
[1]余俊新,孫涌.J2EE中對(duì)象關(guān)系映射的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(3):90.
[2]楊本臣,張全貴.基于短信息平臺(tái)的高校辦公網(wǎng)絡(luò)的研究[J].信息科技,2007,3:95-97.
[3]李珩.基于性能模型的短消息系統(tǒng)性能分析[D].湖南大學(xué),2004.
[4]楊建強(qiáng).基于Java ME的點(diǎn)到點(diǎn)短信加密應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2006,8.
[作者簡(jiǎn)介]鐘偉杰(1982.4-),男,籍貫:海南省萬寧市,職稱:助理工程師,研究方向:數(shù)據(jù)中心、網(wǎng)絡(luò)、安全。