雲計算模型 - 1. 概述

讀了微軟 Azure 總結的雲計算設計模式系列文章,以爲很受啓發,遂將這個系列翻譯出來以下。前端

雲計算模型

這些設計模式對於在雲上構建高可用性,伸縮性,安全的應用程序頗有用。
每一個模式都描述了該模式試圖解決的問題,在使用該模式時應考慮的問題,以及一個基於微軟 Azure 雲的例子。大多數的模式中包含了代碼實例或代碼片斷來展現如何在 Azure 上部署使用這種模式。然而,大多數的模式一樣適用於 Azure 之外的任何分佈式系統。git

在雲端部署的挑戰

指標 描述
可用性 可用性指的是系統正常工做的時間,一般經過測量服務正常工做的時間百分比來獲得。它受系統故障,基礎設施問題,惡意攻擊,系統負載等方面的影響。雲端應用一般爲用戶提供「服務等級協議」(SLA),所以應用必須儘量高地保證其可用性。
數據管理 數據管理時雲端應用的關鍵,它影響着應用的大多數質量屬性。出於性能,伸縮性,可用性等多方面的考慮,數據一般會被存到多個區域的多臺服務器上。而這帶來一系列的挑戰,諸如須要維護數據一致性,以及須要在多個不一樣區域間同步數據。
設計和實現 好的設計包含諸如組件設計和部署的一致性與內聚性,運維與開發的可維護性,組件與子系統的重用性。在設計和實現階段的決策對整個應用的質量和雲計算服務提供方的總花費有巨大的影響。
消息傳遞 雲端應用的自然的分佈屬性使之須要一個消息傳遞設施來鏈接各個組件和服務。異步消息模式被普遍應用,它提供了不少好處,但也帶來了不少挑戰:消息到達順序,缺失消息管理,冪等性等等。
管理與監控 雲端應用運行在遠程的數據中心,應用擁有者沒有管理基礎設施和操做系統的所有權限。這使得它比本地部署的應用更難管理和監控。應用必須暴露給管理員和運維人員足夠的運行時信息來使其可以管理和監控系統,同時也應該支持在不中斷或從新部署服務的狀況下,改變商業需求和定製化服務。
性能和伸縮性 性能是在給定的時間範圍內執行任何命令的響應能力的指標;伸縮性是指系統在不影響其性能的前提下,可以處理增長的負載,隨時增長可用資源。在實際應用中,雲端應用常常遇到變化很是大的負載和負載峯值。提早去預測這些,尤爲是在多租戶的場景下,幾乎是不可能的。取而代之,咱們應該讓咱們的應用具有無限按需伸縮的能力。伸縮性不該單單關注於計算實例(虛擬機),也包括數據存儲,消息傳遞等不少方面。
故障恢復能力 故障恢復能力指的是系統優雅地從故障中恢復的能力。在雲端部署的應用,一般是以多租戶的模式,使用共享平臺的服務,與其餘租戶競爭帶寬和資源,經過互聯網通訊。而且他們運行在聯合的多種硬件層之上。這意味着持續性的和偶發性的異常發生的可能性都會增長。檢測到故障,而且高效地從故障中恢復,對於提升系統的故障恢復能力來講,是必須的。
安全 安全性指的是系統阻止惡意攻擊或將應用使用於產品設計之外的場景,同時阻止信息泄露的能力。雲端應用一般會接入互聯網,暴露給大衆,而且可能會爲非受信任的用戶提供服務。應用必須以一種可靠的方式來設計和部署,來防止惡意攻擊,並對用戶進行權限控制,保護隱私數據。

目錄

模式 概述
信使 建立輔助服務來發送有關消費者服務或應用信息的網絡請求
反墮落層 在現代應用和既存系統之間實現一個適配層。
前端的後端 爲特定的前端應用或接口建立單獨的後端服務供其消費。
隔離艙 將應用中的全部元素隔離開放到池中,即使其中某個元素失敗了,其餘的可以繼續正常工做。
緩存 按需將數據從數據倉庫載入到緩存。
斷路器 處理遠程服務或資源致使的不能當即修復的故障。
讀寫分離(CQRS) 經過使讀數據的操做和更新數據的操做使用不一樣的接口達到讀寫分離。
補償性事物 撤銷一系列任務構成的工做,來實現一個最終一致性的操做。
競爭消費者 激活多個併發的消費者來處理從同一頻道接收的消息。
計算資源合併 將多個任務或操做合併到一個計算單元。
事件溯源 使用一個只增的數據倉庫來記錄某一域中對數據進行的全部操做。
外部配置存儲 將配置信息從應用的部署包中抽離出來放到一個統一的中心化管理的存儲中心。
聯合認證 將認證服務託管給外部認證服務提供方。
看門者模式 經過使用一個專用的主機實例做爲客戶端和應用間的代理來保護應用和服務。經過該代理來檢驗,淨化請求,並傳遞請求來達到此目的。
網管合併 使用網管來將多個獨立的請求合併成一個請求。
網關壓力卸載模式 將一個共享的或專有的服務交給網關執行。
基於網關的路由 經過一個網管將請求路由到多個不一樣的服務。
健康端點監控 爲應用實現功能性檢查服務,使外部攻擊可以經過這個暴露給外部的服務進行按期檢查。
索引表 爲數據倉庫中被頻繁查詢的字段創建索引。
指揮者選舉 爲一系列分佈式部署的相互合做的任務實例選舉一個指揮者來負責管理其餘實例。
物化視圖 當數據格式不符合查詢所需的格式時,爲一個或幾個數據倉庫中的數據生成預處理的視圖。
P管道與過濾器模式 將一個處理複雜流程的任務分解成一系列可以重用的獨立的元素。
帶優先級的隊列 爲發給服務的請求標示出優先級,從而使高優先級的請求可以在接受到後比低優先級的任務更快的處理。
基於隊列的負載均衡 使用隊列來充當任務和它所調用的服務之間的緩衝區,來平滑地處理突發的高負載。
重試 當應用在鏈接服務或網絡資源過程當中遇到錯誤時,經過顯式地重試以前失敗的操做來使它具有處理預期的,臨時性的錯誤的能力。
調度代理監管模式 在一系列分佈的服務和遠程資源間調度一些操做。
分片 將數據存儲水平分割存到多個分區或分片中。
挎鬥模式 將應用的部分組件部署到單獨的進程或容器中來進行隔離和封裝。
靜態內容託管 將靜態內容部署到雲端的存儲服務將內容直接提供給客戶端。
扼殺者模式 漸進式地將既存系統中的部分功能一步步用新應用或服務替換。
限流 控制某一應用實例,租戶或整個服務對資源的消耗量。
代客密鑰 使用一個標識或密鑰來爲客戶端提供指定資源或服務的受限制的直接鏈接。

原文連接在 這裏
翻譯好累啊github

相關文章
相關標籤/搜索