久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

消息中間件 MQ 企業(yè)級方案設(shè)計(jì),,第 1 部分: 異步通信與負(fù)載均衡

 IT民工收藏 2015-03-11

引言

Websphere MQ 是 IBM 功能強(qiáng)大的消息傳送中間件產(chǎn)品,它以其成熟的技術(shù)和世界領(lǐng)先的產(chǎn)品向我們提供了的功能豐富,、可靠易用的異構(gòu)平臺間實(shí)現(xiàn)可靠信息傳遞的成熟解決方案,。使用 MQ 消息傳遞產(chǎn)品可以幫助業(yè)務(wù)應(yīng)用在不同種類平臺上交換信息,以消息的方式接收,、發(fā)送數(shù)據(jù),,從而實(shí)現(xiàn)企業(yè)應(yīng)用集成。MQ 屏蔽了異構(gòu)軟硬件平臺和網(wǎng)絡(luò)協(xié)議的復(fù)雜性,,確?!跋⒌竭_(dá)并且僅到達(dá)一次”的可靠的消息傳遞,滿足高可靠性的,、高性能的,、安全可靠的穩(wěn)定信息數(shù)據(jù)傳輸要求,并具有開放性,、擴(kuò)展性,、先進(jìn)性、安全性,、可管理性和易于維護(hù)開發(fā)等特性,。依靠這些優(yōu)勢,MQ 在消息類中間件市場上占有統(tǒng)治地位,,已經(jīng)成為事實(shí)上的行業(yè)標(biāo)準(zhǔn),,在企業(yè)的各類應(yīng)用中承擔(dān)了可靠的信息數(shù)據(jù)傳輸?shù)幕A(chǔ)支撐。MQ 是為能夠支撐大型企業(yè)的海量信息傳輸而設(shè)計(jì)的,,它設(shè)計(jì)了很多應(yīng)用特性,,為企業(yè)級應(yīng)用提供支持,這些特性分散在系統(tǒng)設(shè)計(jì)和應(yīng)用編程的各種細(xì)節(jié)之處,。本系列以使用 IBM 大型機(jī)服務(wù)器的客戶為主要對象,,對異步通信與同步通信、MQ 高可用性及負(fù)載均衡方案,、MQ 的安全性實(shí)現(xiàn),、MQ 與傳統(tǒng) CICS 應(yīng)用的連接,、使用 MQ 實(shí)現(xiàn) SOA 服務(wù)、MQ 應(yīng)用性能監(jiān)控和企業(yè)級應(yīng)用設(shè)計(jì)構(gòu)架等幾個方面探討如何應(yīng)用 MQ 的特性實(shí)現(xiàn)企業(yè)級應(yīng)用的業(yè)務(wù)需求,。本文是本系列的第 1 部分,,將為大家介紹異步通信與同步通信的特點(diǎn)與設(shè)計(jì)考慮以及 MQ 高可用性及負(fù)載均衡方案。

回頁首

異步通信與同步通信

異步通信與同步通信的特點(diǎn)

MQ 在支持同步通訊的同時,,提供了基于消息隊(duì)列存儲 - 轉(zhuǎn)發(fā)機(jī)制的異步通訊模式,,應(yīng)用程序只需將消息交給 MQ,就由 MQ 負(fù)責(zé)將消息安全,、可靠地發(fā)送出去,,不再需要應(yīng)用和人工的干預(yù),真正實(shí)現(xiàn)了數(shù)據(jù)傳輸自動化,,這一特點(diǎn)能夠使應(yīng)用程序獨(dú)立于通信對方和網(wǎng)絡(luò)的可用性,。與我們常見的同步通信相比,異步通信模式有以下特點(diǎn):

  • 通信的達(dá)成只依賴于發(fā)送方和消息中間件,,接收方以及網(wǎng)絡(luò)的意外情況不造成影響,。
  • 因?yàn)椴槐貙?shí)現(xiàn)同步握手,異步通信通常效率更高,。
  • 因?yàn)椴槐氐却憫?yīng),,異步通信傾向于實(shí)現(xiàn)更短的交易處理,節(jié)省系統(tǒng)資源占用,。
  • 異步通信有利于提高系統(tǒng)并發(fā)度,,提高系統(tǒng)吞吐能力。
  • 異步通信有利于實(shí)現(xiàn)松散耦合的系統(tǒng)結(jié)構(gòu),。

與異步通信相比,,同步通信想法更為簡單而且更容易實(shí)現(xiàn)――發(fā)起方在系統(tǒng)中等待直到對方響應(yīng),這樣可以避免復(fù)雜的發(fā)送 / 確認(rèn) / 重傳機(jī)制的設(shè)計(jì),,但同時也造成了低效率和對資源占用大的缺點(diǎn),,同步通信目前是一種常見的廉價通信實(shí)現(xiàn)方式。

需要說明的是這里談?wù)摰耐?/ 異步是底層消息傳輸?shù)哪J?,與其最終提供的服務(wù)模式無關(guān):同步業(yè)務(wù)服務(wù)可以通過同步通信實(shí)現(xiàn),,也可以通過異步通信實(shí)現(xiàn)。比如我們常見的電話業(yè)務(wù),,一般我們都認(rèn)為是一種同步的服務(wù),,但電信公司實(shí)際實(shí)施時,如果是通過交換機(jī),,在通話雙方之間建立一個電路連接,,那就是一種同步通信實(shí)現(xiàn);如果電信公司采用的是 IP 電話,,通過網(wǎng)絡(luò)把聲音打成若干數(shù)據(jù)包在 Internet 上發(fā)送,,在收話方?jīng)]有感覺到的時間內(nèi)再按順序組合把語音還原出來,,那就是使用的異步底層通信實(shí)現(xiàn)。我們進(jìn)行應(yīng)用方案設(shè)計(jì)時要充分意識到兩種通信模式的特點(diǎn),,考慮各種選擇的可能性和優(yōu)劣。

異步通信實(shí)現(xiàn)同步應(yīng)用設(shè)計(jì)

由于同步 / 異步通信有各自的特點(diǎn),,所以通過異步通信來實(shí)現(xiàn)同步應(yīng)用時,,有一些特殊的方法需要考慮。異步通信基礎(chǔ)上實(shí)現(xiàn)同步應(yīng)用,,是通過若干異步消息分段實(shí)現(xiàn)的,,以最簡單的雙方模式為例,A 發(fā)送給 B 一個異步消息,,B 接收后完成特定處理,,再返回給 B 一個異步消息,如果這個處理過程足夠快,,就能夠?qū)崿F(xiàn)一個請求 / 應(yīng)答模式的同步應(yīng)用,。這種模式下,應(yīng)用中 UOW 的范圍,,和同步應(yīng)用下是有很大不同的,,應(yīng)用設(shè)計(jì)中要充分考慮到這種區(qū)別。

在同步模式下,,在 A 和 B 的所有操作都可以放在一個 UOW 中,,通過兩階段提交協(xié)議實(shí)現(xiàn)數(shù)據(jù)一致;在異步模式,,應(yīng)用會分成幾個 UOW,,第一個是應(yīng)用程序在本地隊(duì)列管理器中的操作,第二個是兩個隊(duì)列管理器間的數(shù)據(jù)傳輸,,這個 UOW 是系統(tǒng)完成的,,對于應(yīng)用是透明的,第三個 UOW 是遠(yuǎn)程應(yīng)用在遠(yuǎn)程隊(duì)列管理器中的操作,。應(yīng)用設(shè)計(jì)時要充分意識到這些區(qū)別,。

由于交易一致性控制,一個 MQ 應(yīng)用中在隊(duì)列中進(jìn)行的改變,,只在它 COMMIT 后,,其他應(yīng)用程序才能看到,所以在進(jìn)行請求 / 應(yīng)答模式的 MQ 應(yīng)用程序中,,請求程序發(fā)送請求消息后,,要在適當(dāng)?shù)奈恢孟?COMMIT,完成這個 UOW,,然后在到應(yīng)答隊(duì)列里去等待對方完成 UOW 后的返回,。應(yīng)答程序也要與請求程序類似,,也要合理地控制 UOW 的范圍,使得返回消息能夠恰當(dāng)?shù)乇徽埱蟪绦虻玫健?/p>

在使用 MQ 進(jìn)行要求同步通訊的程序設(shè)計(jì)時,,會碰到原來可能會做單一 UOW 的應(yīng)用,,在 MQ 下的異步應(yīng)用設(shè)計(jì)下要劃分成若干個 UOW,這就涉及到如何在多 UOW 下保證數(shù)據(jù)整體的一致性,。這種需求,,一般可以通過合理的沖正設(shè)計(jì)來實(shí)現(xiàn)。

MQ Server 與 Client

MQ 產(chǎn)品分為 Server 和 Client 兩種版本,,在 MQ Server 的運(yùn)行環(huán)境下,,有隊(duì)列管理器、隊(duì)列,、消息通道等對象,,它提供全面的消息服務(wù);MQ Client 本身沒有隊(duì)列管理器,、隊(duì)列等對象,,它通過 MQI 通道與服務(wù)器之間建立通訊,并將消息從客戶端發(fā)往服務(wù)器端的隊(duì)列,,或從 Server 端的隊(duì)列中取得消息,,其他功能也比 Server 有限。MQ Client 與 Server 之間的通信是同步模式完成的,,它必須在 Server 正在工作并且可以通過網(wǎng)絡(luò)訪問的情況下才能完成任務(wù),。MQ Client 通常在有大量末端環(huán)境的應(yīng)用系統(tǒng)中采用,可以通過這種方式來節(jié)省成本,,但要求在 Client 到 Server 之間要有比較可靠的網(wǎng)絡(luò)連接,。

回頁首

MQ 高可用性及負(fù)載均衡方案

大型企業(yè)應(yīng)用方案,在功能性要求之外系統(tǒng)高可靠性能力與負(fù)載均衡能力是一個十分重要的衡量指標(biāo),。MQ 在這方案提供了很強(qiáng)的特性,,主要通過兩種主要技術(shù)實(shí)現(xiàn):MQ Cluster 技術(shù)和 Queue Sharing Group 技術(shù)。Cluster 技術(shù)可以在各種系統(tǒng)平臺上甚至跨平臺實(shí)施,,能夠提供基本的高可用性能力,,Queue Sharing Group 只能在 IBM System z 主機(jī)平臺上實(shí)現(xiàn),能夠提供最高級的高可用性能力,。

MQ Cluster 方案

MQ Cluster 結(jié)構(gòu)與特點(diǎn)

使用 Queue Manager Cluster 技術(shù),,可以把安裝在不同平臺(如 AIX,LINUX,,WINDOW,,z/OS)上的若干個 Queue Manager 設(shè)計(jì)為一個集群,每個 Queue Manager 都創(chuàng)建成集群中的一員,。集群中有一個或多個 Queue Manager 可以定義成擁有整個集群的對象定義信息,,稱作 Repository queue manager,。當(dāng)用戶在集群中創(chuàng)建一個接收通道或隊(duì)列時,系統(tǒng)會自動在其他隊(duì)列管理器中創(chuàng)建相應(yīng)的發(fā)送通道和遠(yuǎn)程隊(duì)列定義,。不論整個集群中有多少 Queue Manager,,每個 Queue Manager 只要建立一個接收通道,和一個指向 Repository queue manager 的發(fā)送通道就可以完成消息連通,,而不必要針對每個 queue manager 分別定義通道,;同時每個 Queue Manager 也不必要定義遠(yuǎn)程所有用到的遠(yuǎn)程 Queue.

圖1 MQ Cluster 集群
圖1 MQ Cluster 集群

通過 Cluster 技術(shù),可以有效地減少系統(tǒng)的管理工作,,更快地建立應(yīng)用同時可以提高系統(tǒng)的可用性并可以在集群 MQ 管理器間實(shí)現(xiàn)負(fù)載均衡。

減少系統(tǒng)的管理工作主要體現(xiàn)在 :

  • 不論連接多少遠(yuǎn)程隊(duì)列管理器,,只要建一個集群發(fā)送通道和一個集群接收通道,,不必為每個管理器分別建立通道
  • 每個隊(duì)列管理器只要建立一個 transmission queues。
  • 不必一一定義遠(yuǎn)程隊(duì)列,,可直接使用

使用 Cluster 技術(shù)提高系統(tǒng)的可用性和實(shí)現(xiàn)負(fù)載均衡,,是通過在 Cluster 內(nèi)的不同 QMGR 上建立同名的 Queue(同一個 Queue 的多個實(shí)例)來實(shí)現(xiàn)的。每個 Queue 的實(shí)例都能作為消息的目的地,,MQ 能夠在依照一定的算法決定實(shí)際消息應(yīng)當(dāng)傳給哪個 QMGR,。這樣當(dāng)集群里某個 QMGR 失效時,消息會自動路由到其他活動的 QMGR 管理的實(shí)例上去,。

典型部署模式

在實(shí)際應(yīng)用 Cluster 技術(shù)時,,一般采取如下的部署方案:

圖2 MQ Cluster 的典型部署模式
圖2 MQ Cluster 的典型部署模式

在 Cluster 中首先設(shè)計(jì)一臺 MQ 服務(wù)器作為整個 Cluster 的網(wǎng)關(guān),作為對外的連接點(diǎn),,它本地并不定義任何輸入(Inbound)隊(duì)列(如上例中的 Q1),,只定義輸出(Outbound)隊(duì)列(如上例中的 Q2)。另外設(shè)置若干消息處理服務(wù)器,,其中定義本地的輸入隊(duì)列,,同時有消息處理程序在運(yùn)行。在外部交易進(jìn)入 Cluster 時首先發(fā)送到網(wǎng)關(guān)機(jī)上,,由網(wǎng)關(guān)動態(tài)地發(fā)送到 Cluster 里定義了輸入隊(duì)列的 MQ 服務(wù)器上去,。MQ 網(wǎng)關(guān)可以根據(jù)設(shè)置,按照輪循或權(quán)重的方式對進(jìn)入的消息進(jìn)行分發(fā),,還可以通過出口程序(User Exit)實(shí)現(xiàn)更加復(fù)雜的分發(fā)機(jī)制,。

在每個消息處理服務(wù)器都部署有完全相同的應(yīng)用處理程序,它們讀取輸入隊(duì)列里的消息,,經(jīng)過處理后把結(jié)果寫入輸出隊(duì)列,。輸出隊(duì)列只定義在 MQ 網(wǎng)關(guān)機(jī)器上,任何消息處理服務(wù)器寫出的消息都回最終傳送到網(wǎng)關(guān)上,。前臺程序連接網(wǎng)關(guān),,讀取返回結(jié)果,。

為了獲得更高可用性,這個方案中有兩點(diǎn)需要注意:1. 可以看到 MQ 網(wǎng)關(guān)是個單點(diǎn)隱患,,為了更高可用性,,要使用 HACMP 等方案實(shí)現(xiàn)備份。2. 如果消息處理服務(wù)器上的應(yīng)用程序意外停止運(yùn)行,,數(shù)據(jù)會在隊(duì)列中堆積起來,,為了避免這種情況,需要自動腳本在應(yīng)用程序停止時自動把 MQ 停止,,這樣后來的消息會發(fā)給其他服務(wù)器處理,。

網(wǎng)絡(luò)層負(fù)載均衡器與 MQ

一些企業(yè)中,經(jīng)常使用 F5 之只類的網(wǎng)絡(luò)層負(fù)載均衡器來實(shí)現(xiàn)一種高可靠性 / 負(fù)載均衡解決方案,。很多應(yīng)用可以依靠 F5 實(shí)現(xiàn)的動態(tài) IP 地址功能,,在不改變應(yīng)用程序的情況下實(shí)現(xiàn)高可用性,這為無狀態(tài)的網(wǎng)絡(luò)應(yīng)用提供了方便的均衡手段,。但是 MQ 產(chǎn)品為實(shí)現(xiàn)消息到并且只到一次,,在收發(fā)雙方的發(fā)送通道和接收通道上要傳遞記數(shù)和確認(rèn)信息,這樣以來發(fā)送和接收方必須有固定的一對一關(guān)系,,如果在中間網(wǎng)絡(luò)上配置了網(wǎng)絡(luò)層的負(fù)載均衡器,,由于它不知道這種機(jī)制的存在,必然造成通信的錯亂,,所以在使用 MQ 的網(wǎng)絡(luò)環(huán)境中不能夠同時使用網(wǎng)絡(luò)層的負(fù)載均衡設(shè)備,。

主機(jī) MQ 特有高可用性技術(shù) -Queue Sharing Group 設(shè)計(jì)

Queue-Sharing Group 技術(shù)介紹

Shared Queue Group 是 MQ 依托 System z 主機(jī)的 Parallel Sysplex 技術(shù)而實(shí)現(xiàn)的高級特性。Shared queue 是一種本地隊(duì)列,,shared queue 里存儲的數(shù)據(jù)可以被同一個 Sysplex 里的若干個 QMGR 共同訪問,。能夠訪問同一個 shared queue 的所有 QMGR 稱為一個 queue-sharing group,它們可以訪問同一組 shared queues,。 Shared queue 的數(shù)據(jù)存儲在 Coupling Facility 的 list structures 里面,,一個 Group 里的所有隊(duì)列管理器都能夠從這個隊(duì)列里讀取數(shù)據(jù)和發(fā)送數(shù)據(jù)。

圖3MQ Queue Share Group
圖3MQ Queue Share Group

Shared queue 的定義被所有 QMGR 共享,,共享的隊(duì)列定義是存放在 DB2 的表里,,在一個群里,隊(duì)列只要定義一次,,就能被所有的 QMGR 共享,。Queue-sharing group 里的每個 QMGR 都有與一個 DB2 系統(tǒng)相連,這些 DB2 系統(tǒng)必須在一個 data-sharing group 里,,這樣 QMGR 才能夠訪問相同的共享隊(duì)列定義,。

在主機(jī)上使用 Queue Share Group 技術(shù),結(jié)合 Sysplex 提供的系統(tǒng)功能(如 SYSPLEX Distributor 和 VTAM generic resources),MQ 除了可以實(shí)現(xiàn)應(yīng)用處理上的高可用性,,還能夠提供網(wǎng)絡(luò)接入和送出的高可用性,,這是通過 MQ 的 Shared channel 來實(shí)現(xiàn)的。

圖4 MQ 共享通道
圖4 MQ 共享通道

共享的接入通道 : Queue-sharing group 里的每個 MQ Server 的 channel initiator 都在同一個 IP 端口監(jiān)聽消息,,這個端口通過 Sysplex 提供的網(wǎng)絡(luò)技術(shù)對外做成一個 generic port,。這樣分布式系統(tǒng) MQ Channel 的連接請求會被分發(fā)到任意一個 MQ Server 上,只要 Group 里還有一個 Server 能夠響應(yīng),,就能夠完成消息向 Shared Queue 里的發(fā)送,。

共享的外傳通道 :如果一個發(fā)送通道的 transmission queue 定義為共享的 Shared Queue,那么這個通道就是共享的外傳通道,。Group 里的任意一個 QueueManger 都可以從共享的 transmission queue 里取得數(shù)據(jù)向外傳輸,,這樣只要還有一個 QM 有響應(yīng),這個通道對外就是暢通的,。

Shared queue 技術(shù)使 MQ 在應(yīng)用上具有以下優(yōu)點(diǎn):

  • Scalability

應(yīng)用處理能力能夠很方便地進(jìn)行擴(kuò)展,,只要新增一個 QMGR,甚至新增一個 z/OS image 并在上面建立 QMGR 和應(yīng)用程序,,就能很好地?cái)U(kuò)大系統(tǒng)處理能力。

  • Availability

多個 QMGR 可以訪問同一個 Queue,,單個 QMGR 的故障不影響 Shared queue 的應(yīng)用,。MQ 通過 peer recovery 技術(shù),可以監(jiān)控 QMGR 的非正常中斷,,能夠自動回滾未完成的 ULW,。

  • Workload balance

利用 SYSPLEX 的負(fù)載均衡功能,可以在多個 QMGR 間平衡處理量,。

Queue Share Group 技術(shù)的優(yōu)勢

Cluster 技術(shù)和 Share Queue 技術(shù)為實(shí)現(xiàn)可靠性,、擴(kuò)展性和均衡,使用的基本手段是不同的:

  • Queue Manager Cluster

Queue Manager Cluster 使用的是同名隊(duì)列的多個實(shí)例,,就是在 Cluster 里的多個 QMGR 上建立相同的 Queue,。進(jìn)入這個隊(duì)列的數(shù)據(jù)會轉(zhuǎn)發(fā)給某個 QMGR,一旦數(shù)據(jù)進(jìn)入這個 QMGR,,就只能由這個 QMGR 訪問,。

  • Queue-Sharing Group

Queue-Sharing Group 使用的是一個共享的隊(duì)列,隊(duì)列的數(shù)據(jù)存儲只有一份,,可以由多個 QMGR 共同訪問,。

拋開 zSeries 對其他開放平臺的系統(tǒng)優(yōu)勢不談,由于這個基本手段本質(zhì)的不同,,使得兩種技術(shù)提供的服務(wù)水平有很大不同:

  • Cluster 只在消息進(jìn)入時實(shí)現(xiàn)高可用性,,一旦消息進(jìn)入某個 QMGR,它就只能由那個 QMGR 處理,如果在消息被處理完之前,,系統(tǒng)發(fā)生故障,,已經(jīng)進(jìn)入這個 QMGR 的數(shù)據(jù)將不能被處理。而使用 Shared queue 時,,一個 QMGR 失敗不會影響隊(duì)列里的數(shù)據(jù),。
  • Queue Manager Cluster 時一旦數(shù)據(jù)進(jìn)入某個 QMGR,就只能被這個 QMGR 訪問,,如果某個系統(tǒng)上的 QMGR 正常,,但處理 MQ 消息的應(yīng)用程序發(fā)生故障停止運(yùn)行,消息還會繼續(xù)發(fā)送到這個 QMGR 里去,,但這些消息就會積壓在這里不會得到處理,。在 Shared queue 時,由于 QMGR 使用的是同一個隊(duì)列,,如果某個 QMGR 后面的應(yīng)用程序停止工作,,消息會被其他 QMGR 后面的應(yīng)用程序處理,不會對整個應(yīng)用造成任何影響,。
  • Share Queue 是在 Work Load Manager 協(xié)調(diào)下完成負(fù)載均衡的,,其負(fù)載均衡能力比 Cluster 內(nèi)帶的邏輯要更加強(qiáng)大。Cluster 只能根據(jù)消息進(jìn)入集群時的負(fù)載情形轉(zhuǎn)發(fā)消息,,而 Share Queue 能在消息處理過程中動態(tài)地平衡負(fù)載,。
  • 考慮消息進(jìn)入時的情況,對于 Cluster,,發(fā)送方必須指定發(fā)送到 Cluster 里做 Gateway 的機(jī)器的 IP 地址上,,一旦這臺機(jī)器失效,雖然這個 Queue 的其他 QMGR 還在,,消息卻不能進(jìn)入 Cluster,,存在單點(diǎn)故障隱患;對于 Share Queue,,通過 SYSPLEX Distributor 等技術(shù),,發(fā)送到特定 IP 地址的數(shù)據(jù),可以被路由到任何一臺機(jī)器,,單個機(jī)器失效,,不會造成影響。

回頁首

結(jié)束語

本文是本系列的第 1 部分,,為大家介紹了異步通信與同步通信的特點(diǎn)與設(shè)計(jì)考慮以及 MQ 高可用性及負(fù)載均衡方案,,下面幾節(jié)將繼續(xù)為大家介紹 MQ 的安全性實(shí)現(xiàn) ,MQ 與傳統(tǒng) CICS 應(yīng)用的連接 , 使用 MQ 實(shí)現(xiàn) SOA 服務(wù) ,MQ 應(yīng)用監(jiān)控以及企業(yè)級應(yīng)用設(shè)計(jì)構(gòu)架技術(shù)方案。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多