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