顧同江+++安金鵬+++弋才勇
摘 要:目前各企業(yè)在線運(yùn)行著多套業(yè)務(wù)應(yīng)用系統(tǒng),并且在逐步增多,如郵件系統(tǒng)、網(wǎng)絡(luò)管理系統(tǒng)、OA系統(tǒng)、企業(yè)內(nèi)控管理系統(tǒng)等,隨著業(yè)務(wù)應(yīng)用部署規(guī)模的擴(kuò)大,接入業(yè)務(wù)數(shù)量的不斷增多,普通的單一的短信服務(wù)架構(gòu)已不能滿足業(yè)務(wù)需求,出現(xiàn)短信收發(fā)延遲時(shí)間過長甚至收發(fā)失敗的情況,失去通知、監(jiān)控類短信收發(fā)的重要意義。通過短信平臺(tái)雙機(jī)互備體系的研究,提出一種新的短信平臺(tái)架構(gòu)模式,有效避免因服務(wù)器或數(shù)據(jù)庫異常造成短信無法發(fā)送的問題。根據(jù)企業(yè)業(yè)務(wù)發(fā)展情況分析,使用短信平臺(tái)進(jìn)行業(yè)務(wù)往來的系統(tǒng)會(huì)逐步增加,需要保證短信的穩(wěn)定性和時(shí)效性,因此對(duì)短信平臺(tái)的體系結(jié)構(gòu)升級(jí)改造勢(shì)在必行。
關(guān)鍵詞:短信平臺(tái);雙機(jī)互備;負(fù)載均衡
1 系統(tǒng)相關(guān)背景
由于業(yè)務(wù)需求,應(yīng)用短信的程度日益加大。傳統(tǒng)的單一服務(wù)器短信平臺(tái)系統(tǒng)已經(jīng)無法滿足業(yè)務(wù)需求,所以在此提出一種新的短信平臺(tái)體系——雙機(jī)互備體系。通過對(duì)該體系的研究探討,考究該體系的可行性和應(yīng)用價(jià)值。
2 雙機(jī)互備體系的介紹
該短信平臺(tái)雙機(jī)互備系統(tǒng)為B/S結(jié)構(gòu),由負(fù)載均衡連接兩臺(tái)短信服務(wù)器,由負(fù)載均衡將接收用戶請(qǐng)求并將請(qǐng)求分?jǐn)偟街?、備服?wù)器上。分別在兩臺(tái)服務(wù)器上搭建數(shù)據(jù)庫,主、備數(shù)據(jù)庫實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)同步。再由三臺(tái)網(wǎng)關(guān)服務(wù)器發(fā)送至運(yùn)營商。
對(duì)現(xiàn)短信平臺(tái)軟件進(jìn)行升級(jí),分別對(duì)三大運(yùn)營商的接口通道升級(jí)為網(wǎng)關(guān)API的收發(fā)。按照分層的方式實(shí)現(xiàn)業(yè)務(wù)與承載的分離,通過具有業(yè)務(wù)路由功能的功能層可以實(shí)現(xiàn)各業(yè)務(wù)系統(tǒng)調(diào)用,對(duì)業(yè)務(wù)數(shù)據(jù)的透明訪問,和業(yè)務(wù)模塊之間的有機(jī)集成,從而提供靈活多樣的業(yè)務(wù)接入能力和業(yè)務(wù)擴(kuò)展能力,并且可以通過業(yè)務(wù)支撐單元的外部開放接口可以提供簡便、安全、可靠、易于擴(kuò)展的第三方業(yè)務(wù)的透明接入系統(tǒng)途徑。
對(duì)現(xiàn)短信平臺(tái)硬件進(jìn)行改造,通過負(fù)載均衡將訪問流量分配到主、備短信服務(wù)器,數(shù)據(jù)寫入數(shù)據(jù)庫集群,數(shù)據(jù)庫集群采用主從互備的機(jī)制實(shí)現(xiàn),在將數(shù)據(jù)通過三臺(tái)網(wǎng)關(guān)服務(wù)器分發(fā)到各運(yùn)營商。
3 雙機(jī)互備體系的優(yōu)勢(shì)
(1)利用負(fù)載均衡來擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量和并發(fā)能力,加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。利用負(fù)載均衡和兩臺(tái)主、備服務(wù)器,能有效解決由于傳輸數(shù)據(jù)量過大導(dǎo)致網(wǎng)絡(luò)阻塞的問題,降低服務(wù)器單節(jié)點(diǎn)風(fēng)險(xiǎn),提高系統(tǒng)的整體性能。
(2)短信平臺(tái)利用雙服務(wù)器主從互備的特點(diǎn),能有效增加系統(tǒng)的容錯(cuò)性和穩(wěn)定性。數(shù)據(jù)庫集群主、從互備,能夠使數(shù)據(jù)做到實(shí)時(shí)同步,可以有效避免因數(shù)據(jù)庫異常造成的短信無法發(fā)送以及數(shù)據(jù)丟失的問題。
(3)采用開放式的系統(tǒng)體系結(jié)構(gòu)和負(fù)載動(dòng)態(tài)均衡系統(tǒng)設(shè)計(jì)技術(shù),保證系統(tǒng)容量的動(dòng)態(tài)增長和功能的完善和升級(jí),適應(yīng)信息管理技術(shù)不斷進(jìn)步的需要,并為新技術(shù)的發(fā)展提供應(yīng)有的可行空間。
(4)軟件系統(tǒng)的設(shè)計(jì)采用模塊化結(jié)構(gòu)設(shè)計(jì)和規(guī)范化標(biāo)識(shí),保證軟件的可維護(hù)性要求,當(dāng)系統(tǒng)軟件局部功能模塊發(fā)生故障時(shí),不影響其他模塊的正常運(yùn)行。
4 雙機(jī)互備體系的具體建設(shè)
系統(tǒng)結(jié)構(gòu)是基于中間件的三層客戶機(jī)/服務(wù)器模式,將業(yè)務(wù)層、功能層和傳輸層分為三個(gè)不同的部分。短信數(shù)據(jù)的收發(fā)是通過傳輸層進(jìn)行的;短信數(shù)據(jù)的完整性與一致性是功能層來保證的;各業(yè)務(wù)系統(tǒng)與業(yè)務(wù)層對(duì)接,只負(fù)責(zé)業(yè)務(wù)的處理。
業(yè)務(wù)層:提供的用戶通過多種接入方式接入系統(tǒng)后,向用戶提供的短信收發(fā)服務(wù)。
功能層:也就是系統(tǒng)的業(yè)務(wù)邏輯層,是由接口和短信平臺(tái)、數(shù)據(jù)庫共同完成,功能層與用戶終端訪問方式無關(guān)。
傳輸層:構(gòu)架平臺(tái)的最底層,主要是由應(yīng)用服務(wù)器、WEB應(yīng)用中間件與數(shù)據(jù)庫組成。
其中關(guān)鍵步驟有:
(1)數(shù)據(jù)庫體系基于容量和時(shí)間雙約束的溢出檢測(cè)和自適應(yīng)的日志運(yùn)行可靠性設(shè)計(jì)。
數(shù)據(jù)庫Master-Slave模式,一臺(tái)Slave承受不住讀請(qǐng)求壓力時(shí),可以添加多臺(tái),進(jìn)行負(fù)載均衡,分散讀壓力。還可以對(duì)多臺(tái)Slave進(jìn)行分工,服務(wù)于不同的系統(tǒng),因?yàn)椴煌到y(tǒng)的查詢需求不同,對(duì)Slave分工后,可以創(chuàng)建不同的索引,使其更好的服務(wù)于目標(biāo)系統(tǒng)。
數(shù)據(jù)庫Master-Master模式互相將對(duì)方作為自己的Master,自己作為對(duì)方的Slave來進(jìn)行復(fù)制,但對(duì)外來講,還是一個(gè)主和一個(gè)從。當(dāng)主Master下線時(shí),備Master切換為主Master,當(dāng)原來的主Master上線后,因?yàn)樗涗浟俗约寒?dāng)前復(fù)制到對(duì)方的什么位置了,就會(huì)自動(dòng)從之前的位置開始重新復(fù)制,不需要人為地干預(yù),大大提升了效率。
數(shù)據(jù)庫體系采用mysql主動(dòng)模式的Master-Master(Master-Master in Active-Active Mode)模式,Master-Master復(fù)制的兩臺(tái)服務(wù)器,既是master,又是另一臺(tái)服務(wù)器的slave。這樣,任何一方所做的變更,都會(huì)通過復(fù)制應(yīng)用到另外一方的數(shù)據(jù)庫中。
通過短信業(yè)務(wù)應(yīng)用的特性,需要實(shí)現(xiàn)數(shù)據(jù)分布(Data distribution)、負(fù)載平衡(load balancing)、備份(Backups)、高可用性和容錯(cuò)行 (High availability and failover),對(duì)比后采用Master-Master模式。
(2)接口監(jiān)控基于Watchdog的監(jiān)視和自啟復(fù)活的可靠性設(shè)計(jì):采用watchdog模式對(duì)應(yīng)用和短信平臺(tái)的接口程序進(jìn)程進(jìn)行24小時(shí)自動(dòng)監(jiān)控,出現(xiàn)問題后及時(shí)重啟接口進(jìn)程及服務(wù)告警。
watchdog 實(shí)際上是模式核心是一個(gè)用于接口進(jìn)程服務(wù)主動(dòng)重啟的計(jì)時(shí)器機(jī)制,在指定時(shí)間內(nèi)對(duì)/dev/watchdog列表中接口進(jìn)程服務(wù)進(jìn)程進(jìn)行一次檢查,如果進(jìn)程正常則歸零計(jì)時(shí)器,重新倒計(jì)時(shí)。如果在指定時(shí)間內(nèi)接口進(jìn)程進(jìn)程異常,watchdog便認(rèn)為接口進(jìn)程服務(wù)進(jìn)程發(fā)生嚴(yán)重故障,主動(dòng)重啟接口進(jìn)程服務(wù)進(jìn)程,實(shí)現(xiàn)接口進(jìn)程的監(jiān)視和自啟復(fù)活,以求自救而不是等死。
(3)基于雙機(jī)熱備和負(fù)載均衡的體系結(jié)構(gòu)設(shè)計(jì):通過雙機(jī)熱互備技術(shù),采用的active/standby 方式,active服務(wù)器處于工作狀態(tài);而standby服務(wù)器處于監(jiān)控準(zhǔn)備狀態(tài)。當(dāng)active服務(wù)器出現(xiàn)故障的時(shí)候,通過軟件診測(cè)或手工方式將standby機(jī)器激活,保證應(yīng)用在短時(shí)間內(nèi)完全恢復(fù)正常使用。結(jié)合mysql數(shù)據(jù)庫集群主從互備技術(shù),采用主動(dòng)的Master-Master模式,實(shí)現(xiàn)數(shù)據(jù)的一致性;從而構(gòu)建短信平臺(tái)雙機(jī)互備體系。通過設(shè)置虛擬服務(wù)地址(IP),將位于同一地域(Region)的多臺(tái)服務(wù)器虛擬成一個(gè)高性能、高可用的應(yīng)用服務(wù)池;再根據(jù)應(yīng)用指定的方式,將來自客戶端的網(wǎng)絡(luò)請(qǐng)求分發(fā)到服務(wù)器池中。網(wǎng)絡(luò)負(fù)載均衡會(huì)檢查服務(wù)器池中后端服務(wù)器的健康狀態(tài),自動(dòng)隔離異常狀態(tài)的后端服務(wù)器,從而解決了單臺(tái)后端服務(wù)器的單點(diǎn)問題,同時(shí)提高了應(yīng)用的整體服務(wù)能力。
雙機(jī)互備采用F5負(fù)載均衡來接收用戶的請(qǐng)求,由負(fù)載均衡將請(qǐng)求分?jǐn)偟街?、備服?wù)器上。主、備服務(wù)器運(yùn)行環(huán)境為Redhat Linux 5.0,應(yīng)用服務(wù)為Apache,基于Application Platform平臺(tái)進(jìn)行集成開發(fā),使用 Mysql 5.0數(shù)據(jù)庫,基于PHP,Perl開發(fā)語言的面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)模式。
數(shù)據(jù)庫體系采用mysql主動(dòng)模式的Master-Master(Master-Master in Active-Active Mode)模式,避免因單數(shù)據(jù)庫或硬盤容量占用率過大等異常造成短信無法發(fā)送;對(duì)數(shù)據(jù)庫實(shí)現(xiàn)主備模式、增加系統(tǒng)的容錯(cuò)性和穩(wěn)定性。
5 結(jié)束語
系統(tǒng)增加冗余備份、擁塞控制、狀態(tài)報(bào)告、優(yōu)先級(jí)、調(diào)度機(jī)制、消息跟蹤等模塊,優(yōu)化接口管理、網(wǎng)關(guān)吞吐量模塊,提高程序的穩(wěn)定性和短信發(fā)送效率。
通過具有業(yè)務(wù)路由的功能層實(shí)現(xiàn)各業(yè)務(wù)系統(tǒng)調(diào)用,對(duì)業(yè)務(wù)數(shù)據(jù)的透明訪問,和業(yè)務(wù)模塊之間的有機(jī)集成,從而提供靈活多樣的業(yè)務(wù)接入能力和業(yè)務(wù)擴(kuò)展能力,并且可以通過業(yè)務(wù)支撐單元的外部開放接口可以提供簡便、安全、可靠、易于擴(kuò)展的第三方業(yè)務(wù)的透明接入系統(tǒng)途徑。提供了webservice,url,socket,中間庫等多種接口。
短信平臺(tái)雙機(jī)互備體系非常適合對(duì)短信業(yè)務(wù)需求較高的企業(yè)和單位,提升效率的同時(shí)也能有效提高系統(tǒng)的穩(wěn)定性和容錯(cuò)性。