国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Websphere MQ搭建高可用消息傳輸隊(duì)列

2016-01-14 12:25于巖
電腦知識(shí)與技術(shù) 2015年19期
關(guān)鍵詞:負(fù)載均衡

于巖

摘要:WebspereMq是IBM研發(fā)的一款優(yōu)秀的消息中間件產(chǎn)品。該產(chǎn)品基于消息隊(duì)列的存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制,為不同應(yīng)用的整合通信,信息交換提供穩(wěn)定的橋梁。在實(shí)際應(yīng)用中,底層產(chǎn)品如存儲(chǔ)器等對(duì)中間件整體可用性有很大影響。該文在如何提高消息中間件可用性方面進(jìn)行了探索。

關(guān)鍵詞:Websphere MQ;消息隊(duì)列;高可用;負(fù)載均衡

中圖分類(lèi)號(hào):TP31 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)19-0076-02

消息隊(duì)列技術(shù)是分布式應(yīng)用間交換信息的一種技術(shù),在異步化分布式系統(tǒng)中,應(yīng)用可以通過(guò)消息隊(duì)列進(jìn)行數(shù)據(jù)傳輸,指令交換或者文件傳遞等。消息隊(duì)列對(duì)外規(guī)約一致的存取接口,內(nèi)部屏蔽了底層實(shí)現(xiàn)細(xì)節(jié)和協(xié)議的差異性,在解除了應(yīng)用耦合的同時(shí),使得應(yīng)用可以專(zhuān)注于業(yè)務(wù)細(xì)節(jié)而非通信管控。

IBM公司研發(fā)的Webspere MQ就是一款典型的消息隊(duì)列產(chǎn)品,在消息存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制基礎(chǔ)上,更好的原語(yǔ)設(shè)計(jì),更強(qiáng)的通信協(xié)議適配以及定制性更好的安全策略等,都使得該系列在業(yè)界應(yīng)用十分廣泛,成為了不同操作系統(tǒng),不同網(wǎng)絡(luò)環(huán)境之間應(yīng)用通信的橋梁。

在很多關(guān)鍵性領(lǐng)域中如金融,交通管控等,往往對(duì)于消息可靠性要求較高。要做到消息不丟,不重,不錯(cuò),即保證隊(duì)列管理器能夠同時(shí)實(shí)現(xiàn)數(shù)據(jù)和服務(wù)的高可用,僅僅憑借MQ無(wú)法實(shí)現(xiàn),需要從底層產(chǎn)品人手,同時(shí)對(duì)MQ自身的參數(shù)調(diào)配,搭建高可用的消息隊(duì)列。

1基礎(chǔ)知識(shí)介紹

應(yīng)用程序把消息放進(jìn)隊(duì)列里,然后發(fā)往另外一個(gè)隊(duì)列管理器中的隊(duì)列,或者等待其他的應(yīng)用程序把消息讀走,由于其良好的適配性,常被用于不同主機(jī)間的進(jìn)程間異步化通信。它有幾個(gè)重要的概念:

1)隊(duì)列管理器

MQ的基礎(chǔ)設(shè)備,作為頂級(jí)單元,它往往被用于維護(hù)和管理其他通信中使用的對(duì)象,并完成同其他隊(duì)列管理器的通信。

2)消息

隊(duì)列管理器使用的基本通信單元被稱(chēng)為消息。它分為消息頭和消息主體兩部分。消息頭存放了消息描述符(MessageDescriptor),這些內(nèi)容供MQ本身使用,消息主體里面存放應(yīng)用數(shù)據(jù)(Application Data),由取用消息的應(yīng)用程序解析使用。

3)隊(duì)列

用于存放消息,是存儲(chǔ)轉(zhuǎn)發(fā)機(jī)制實(shí)現(xiàn)的核心。常用的隊(duì)列有本地隊(duì)列,遠(yuǎn)程隊(duì)列,傳輸隊(duì)列和別名隊(duì)列等。遠(yuǎn)程隊(duì)列指向另一個(gè)隊(duì)列管理器的本地隊(duì)列。在被放人消息后,會(huì)將消息通過(guò)傳輸隊(duì)列傳遞到遠(yuǎn)程的隊(duì)列管理器中去。

4)通道

隊(duì)列管理器之間以及同應(yīng)用程序間的通信都需要使用通道。特別地,分別在兩臺(tái)隊(duì)列管理器A和B上面建立同名的發(fā)送通道和接收通道,即可完成從A到B的通信,反向亦然。

5)監(jiān)聽(tīng)器

監(jiān)聽(tīng)器需要被單獨(dú)定義并啟動(dòng),用來(lái)監(jiān)聽(tīng)對(duì)應(yīng)端口的消息。這些消息可能是應(yīng)用數(shù)據(jù),也可能是管理請(qǐng)求。

圖1是一般基于MQ的通信環(huán)境拓?fù)涫疽鈭D。

圖1的方案可以滿(mǎn)足基本的通信需求,但是由于存在著諸如單點(diǎn)故障等隱患,因而無(wú)法保證通信鏈路的高可用性。

為了解決單點(diǎn)故障,MQ提出了多實(shí)例隊(duì)列管理器的概念。定義多實(shí)例隊(duì)列管理器,并在共享存儲(chǔ)上隊(duì)列管理器數(shù)據(jù)和日志,然后將這個(gè)信息分發(fā)給另外的掛載該存儲(chǔ)的MQ服務(wù)器,就實(shí)現(xiàn)了多實(shí)例隊(duì)列管理器。應(yīng)用strmqm-x[QM_NAME]可以以多實(shí)例的主機(jī)方式啟動(dòng)隊(duì)列管理器。后啟動(dòng)的一臺(tái)將以standby方式運(yùn)行,當(dāng)主機(jī)宕機(jī)或者出現(xiàn)故障,其加在存儲(chǔ)上的鎖會(huì)被釋放,備用機(jī)接管并啟動(dòng),成為主機(jī)。一套多實(shí)例隊(duì)列管理器最多同時(shí)支持兩臺(tái)實(shí)例同時(shí)運(yùn)行。其他實(shí)例只能在有運(yùn)行實(shí)例宕機(jī)后手動(dòng)啟動(dòng)。

2高可用隊(duì)列管理器總體設(shè)計(jì)方案

該方案設(shè)計(jì)拓?fù)浣Y(jié)構(gòu)如圖3所示,本方案主要從3個(gè)層次解決單點(diǎn)故障問(wèn)題。首先,通過(guò)多實(shí)例隊(duì)列管理器來(lái)保證應(yīng)用層的服務(wù)可用性。這樣,在一臺(tái)MQ主機(jī)宕機(jī)后,備用實(shí)例自動(dòng)運(yùn)行起來(lái),繼續(xù)為客戶(hù)端應(yīng)用程序提供服務(wù)。

其次,在存儲(chǔ)層,應(yīng)用GlusterFS服務(wù)器作為共享存儲(chǔ),GlusterFS采用堆棧式結(jié)構(gòu)組織,封裝了多臺(tái)服務(wù)器的寫(xiě)磁盤(pán)操作為一個(gè)原子寫(xiě)入操作,所有寫(xiě)入掛載目錄的請(qǐng)求會(huì)被轉(zhuǎn)化為網(wǎng)絡(luò)通信后寫(xiě)入多臺(tái)服務(wù)器中,同時(shí)成功即返回成功。單臺(tái)存儲(chǔ)主機(jī)宕機(jī)后,另外的主機(jī)會(huì)根據(jù)一定的算法踢出不可用的服務(wù)器,重新組織結(jié)構(gòu)并繼續(xù)對(duì)外提供數(shù)據(jù)存儲(chǔ)服務(wù)。通過(guò)這種多機(jī)冗余和強(qiáng)同步機(jī)制,實(shí)現(xiàn)了存儲(chǔ)服務(wù)的高可用性和極高的數(shù)據(jù)一致性。

最后,在客戶(hù)端應(yīng)用和隊(duì)列管理器之間,使用lvs和keepal-ived搭建了vip,在隊(duì)列管理器完成切換后,vip會(huì)自動(dòng)實(shí)現(xiàn)漂移和遷轉(zhuǎn),這個(gè)過(guò)程對(duì)應(yīng)用幾乎透明。總體方案有效地提高了服務(wù)在線(xiàn)率和可用度。

3方案可靠性驗(yàn)證實(shí)驗(yàn)

設(shè)計(jì)了三組實(shí)驗(yàn)來(lái)驗(yàn)證這套方案的可用性。首先部署實(shí)驗(yàn)環(huán)境如下:

機(jī)器A上運(yùn)行應(yīng)用通過(guò)vip向隊(duì)列管理器TESTQMA中的遠(yuǎn)程隊(duì)列MSG_REMOTE發(fā)送消息。MSGIN_REMOTE收到消息后會(huì)通過(guò)傳輸隊(duì)列XMITMSG將消息轉(zhuǎn)發(fā)至隊(duì)列管理器TES-TQMB中的本地隊(duì)列MSG_IN。為了統(tǒng)計(jì)某一故障對(duì)整體方案可用性的影響,在應(yīng)用中加入統(tǒng)計(jì)代碼,統(tǒng)計(jì)出現(xiàn)訪(fǎng)問(wèn)異常的時(shí)間。同時(shí)為了排查消息的丟失和重復(fù)投遞情況,在發(fā)送的消息上打人時(shí)間戳和編號(hào)。

實(shí)驗(yàn)一、制造MQ單機(jī)運(yùn)行故障。

手動(dòng)關(guān)閉MQ主機(jī)進(jìn)程,此時(shí)應(yīng)用開(kāi)始出現(xiàn)訪(fǎng)問(wèn)異常,約10秒左右,備用實(shí)例啟動(dòng),并開(kāi)始提供服務(wù)。最終統(tǒng)計(jì)在TES-TQMB中的消息數(shù)目,與發(fā)送數(shù)目相同,沒(méi)有丟失和新增消息。

實(shí)驗(yàn)二、GlusterFS服務(wù)器單機(jī)運(yùn)行故障。

在其中一臺(tái)GlusterFS服務(wù)器上執(zhí)行防火墻腳本,模擬其與其他機(jī)器間網(wǎng)絡(luò)故障。GlusterFS立即停止提供服務(wù),同時(shí)客戶(hù)端程序感知故障發(fā)生,開(kāi)始進(jìn)入異常重試,約42秒左右,Glus-terFS恢復(fù)服務(wù),MQ正常接收消息。最終統(tǒng)計(jì)結(jié)果,收到的消息和發(fā)送的消息數(shù)目相等。沒(méi)有丟失。同場(chǎng)景1相同,服務(wù)不可用期間,需要應(yīng)用客戶(hù)端做業(yè)務(wù)重試,保證消息的完整性。

實(shí)驗(yàn)三、制造實(shí)驗(yàn)MQ與目標(biāo)遠(yuǎn)程MQ間網(wǎng)絡(luò)故障.

在實(shí)驗(yàn)MQ主機(jī)上執(zhí)行防火墻腳本,禁止其與遠(yuǎn)程MQ間數(shù)據(jù)通信,在達(dá)到隊(duì)列最大深度限制錢(qián),應(yīng)用程序依然可以向?qū)嶒?yàn)MQ放人數(shù)據(jù),在通信恢復(fù)后,消息被發(fā)往目標(biāo)隊(duì)列。如果達(dá)到接收隊(duì)列最大深度,應(yīng)用程序的發(fā)送請(qǐng)求將會(huì)拋出異常,無(wú)法繼續(xù)放人數(shù)據(jù)。

實(shí)驗(yàn)四、制造LVS服務(wù)器單點(diǎn)故障。

在VIP層制造單機(jī)宕機(jī)故障。Lvs迅速實(shí)施故障轉(zhuǎn)移,備機(jī)啟動(dòng)提供服務(wù),全部過(guò)程幾乎在2秒內(nèi)切換完畢,MQ對(duì)異常無(wú)感知,應(yīng)用會(huì)出現(xiàn)短暫報(bào)錯(cuò),之后恢復(fù)正常。

結(jié)果如表1所示。

實(shí)驗(yàn)結(jié)論:

該方案對(duì)服務(wù)器單點(diǎn)故障和通信故障燈均具有較好的容錯(cuò)性,可以做到服務(wù)的秒級(jí)恢復(fù),同時(shí)提供了很好的數(shù)據(jù)一致性保證。同時(shí),為充分解決服務(wù)瞬時(shí)不可用的問(wèn)題,需要在應(yīng)用客戶(hù)端層做業(yè)務(wù)重試。

猜你喜歡
負(fù)載均衡
LBS檢索容災(zāi)架構(gòu)研究
Linux負(fù)載均衡集群技術(shù)在網(wǎng)絡(luò)服務(wù)器中的應(yīng)用
Oracle MAA在汽車(chē)行業(yè)電子政務(wù)平臺(tái)中的應(yīng)用
社區(qū)教育平臺(tái)運(yùn)營(yíng)策略研究
異構(gòu)環(huán)境下改進(jìn)的LATE調(diào)度算法
基于負(fù)載均衡的云資源調(diào)度策略研究
基于新型VPN 技術(shù)的高校校園網(wǎng)改造
基于云計(jì)算的虛擬實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)及應(yīng)用
基于離散PSO算法的醫(yī)療云存儲(chǔ)部署策略
多站點(diǎn)同步更新系統(tǒng)的設(shè)計(jì)