新聞中心
云計算設計模式之基于隊列的負載均衡模式
作者:Qianyu-OS 2015-09-28 13:48:55
云計算 許多解決方案在云中涉及運行調(diào)用服務的任務。在這種環(huán)境下,如果一個服務進行間歇重構(gòu),它可能會導致性能或可靠性問題。

成都創(chuàng)新互聯(lián)服務項目包括綏江網(wǎng)站建設、綏江網(wǎng)站制作、綏江網(wǎng)頁制作以及綏江網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,綏江網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到綏江省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
使用隊列,作為一項任務,它調(diào)用才能順利間歇重物,可能會以其他方式導致失敗的服務或任務超時服務之間的緩沖區(qū)。這個模式可以幫助最小化峰中的可用性和響應需求為任務和服務的影響。
背景和問題
許多解決方案在云中涉及運行調(diào)用服務的任務。在這種環(huán)境下,如果一個服務進行間歇重構(gòu),它可能會導致性能或可靠性問題。
一個服務可以是一個組件,它是相同的溶液作為利用它的任務的一部分,或者它可以是第三方服務提供訪問經(jīng)常使用的資源,如高速緩存或存儲服務。如果相同的服務是由多個同時運行的任務的使用,它可以是難以預料到的服務可能在任何給定時間點來進行請求的數(shù)量。
它可能是一個服務可能會遇到在需求高峰,導致它變得過載和不能對及時響應請求。有大量的并發(fā)請求驅(qū)服務也可能會導致服務失敗,如果它不能處理的論點,即這些請求可能導致。
解決方案
重構(gòu)的解決方案和介紹的任務和服務之間的隊列。任務和服務異步運行。任務帖含有由服務于一個隊列所需要的數(shù)據(jù)的消息。隊列作為緩沖,存儲該消息,直到它被檢 索到的服務。該服務從隊列中檢索消息并進行處理。從多個任務,它可以在一個高度可變的速率產(chǎn)生的請求,可以通過同一個消息隊列被傳遞給服務。圖1示出了這 種結(jié)構(gòu)。
圖1 - 使用隊列水平上的服務的負載
隊列有效地從服務解耦的任務,并且該服務可以按自己的速度處理從并行任務的請求量的信息無關。此外,不存在延遲到一個任務,如果該服務是不可用的時候它投遞一個消息到隊列中。
這種模式提供了以下好處:
?它可以幫助***限度地提高可用性,因為服務而產(chǎn)生的延遲將不會對應用程序,它可以繼續(xù)發(fā)布消息隊列,即使該服務不可用或不正在處理消息的即時和直接的影響。
?它可以有助于***化可擴展性,因為隊列的數(shù)目和服務的數(shù)量可以變化,以滿足需求。
?它可以有助于控制成本,因為服務實例的數(shù)量部署僅需要足以滿足平均負荷,而不是峰值負荷。
注意:
有些服務可以實現(xiàn)節(jié)流,如果需求達到閾值,超過該系統(tǒng)可能會失敗。節(jié)流可能會降低功能可用。你也許可以實現(xiàn)與這些服務負載均衡,以確保這一閾值沒有達到。
問題和注意事項
在決定如何實現(xiàn)這個模式時,請考慮以下幾點:
?來實現(xiàn)控制的速率服務處理消息,以避免急劇的目標資源的應用程序邏輯是必要的。避免將尖峰需求到該系統(tǒng)的下一個階段。測試系統(tǒng)在負載下,以確保它提供所需的流平,并調(diào)整隊列的數(shù)目和處理消息來實現(xiàn)該服務實例的數(shù)量。
?消息隊列是一個單向的溝通機制。如果一個任務期望的服務的答復,可能有必要執(zhí)行該服務可用于發(fā)送的響應的機制。欲了解更多信息,請參閱異步消息底漆。
?您一定要小心,如果你申請自動縮放到被監(jiān)聽的隊列中的請求服務,因為這可能會導致更多的爭奪任何資源,這些服務的份額,并減少使用隊列級負載的有效性。
何時使用這個模式
此圖案是非常適合于使用可能會受到重載服務的任何類型的應用程序。
這種模式可能不是合適的,如果該應用程序期望以最小延遲的服務的響應。
例子
微軟的Azure Web角色存儲數(shù)據(jù)使用單獨的存儲服務。如果大量的Web角色實例同時運行,則可能是存儲服務可以是不堪重負,無法向請求的速度不夠快,以防止超時或沒有響應這些請求。圖2列出了這個問題。
圖2 - 服務從一個Web角色實例大量并發(fā)請求正在被壓垮
要 解決此問題,可以使用一個隊列地級Web角色實例和存儲服務之間的負載。但是,存儲服務被設計為接受同步請求,并且不能很容易地修改,以讀取信息以及管理 的吞吐量。因此,可以引入一個輔助角色作為接收從該隊列中的請求,并將其轉(zhuǎn)發(fā)到所述存儲服務的代理服務。在輔助角色的應用程序邏輯可以控制在它傳遞請求到 存儲服務,以防止存儲服務從被壓垮的速率。圖3示出了這種解決方案。
圖3 - 使用隊列和輔助角色成水平的幅作用和服務實例之間的負載
本文翻譯自MSDN:http://msdn.microsoft.com/en-us/library/dn589783.aspx
博文出處:http://blog.csdn.net/bluecloudmatrix/article/details/48677483
文章名稱:云計算設計模式之基于隊列的負載均衡模式
網(wǎng)頁URL:http://m.5511xx.com/article/dpedpdo.html


咨詢
建站咨詢
