關(guān)于我們
書單推薦
新書推薦
|
云計算架構(gòu)設(shè)計模式
本書主要介紹了云計算時代、zui經(jīng)典的24種架構(gòu)設(shè)計模式,包含基于云平臺設(shè)計架構(gòu)面臨的問題以及典型的解決方案,另外還有10個架構(gòu)設(shè)計指南。
24種經(jīng)典的設(shè)計模式包括高并發(fā)、健康健康、消息編排、架構(gòu)伸縮、緩存、消息推送、大數(shù)據(jù)存儲和優(yōu)化、安全令牌等架構(gòu)設(shè)計的關(guān)鍵問題,是一本zui近幾年難得的架構(gòu)與設(shè)計模式圖書。
本書內(nèi)容不受編程語言限制,可以根據(jù)需要使用.NET、Java、PHP、Node.js、Go等。云計算平臺可以是Azure、AWS、阿里云等共有云,也可以是私有云平臺。
推薦本書給高級工程師、運維工程師、架構(gòu)師、技術(shù)經(jīng)理、技術(shù)總監(jiān)、CTO學(xué)習(xí)使用。
架構(gòu)即未來
移動互聯(lián)網(wǎng)、云計算、大數(shù)據(jù)時代,面臨更多的技術(shù)挑戰(zhàn)問題,設(shè)計模式已經(jīng)從單一的OO問題領(lǐng)域向外擴(kuò)張延伸,設(shè)計模式的范疇不會局限于語言本身,更多擴(kuò)展到架構(gòu)設(shè)計領(lǐng)域 我個人對編程語言沒有偏見,它們各有所長,大家互相學(xué)習(xí)。有實力的程序員不需要通過編程語言來找優(yōu)越感,都在踏實地研究技術(shù)。我接觸的優(yōu)秀程序員無論是對C++、Java,還是對C#等都沒有編程語言的歧視。況且底層的算法、數(shù)據(jù)結(jié)構(gòu)和設(shè)計模式都沒有編程語言限制。 架構(gòu)師和技術(shù)專家 程序員中的精英群體,技術(shù)領(lǐng)袖,也是公司中受人尊敬的群體。 十年磨一劍 精華知識 本書介紹了云計算時代、zui經(jīng)典的24種架構(gòu)設(shè)計模式,包含基于云平臺設(shè)計架構(gòu)面臨的問題以及典型的解決方案,另外還有10個架構(gòu)設(shè)計指南。 24種經(jīng)典的設(shè)計模式包括:高并發(fā)、健康健康、消息編排、架構(gòu)伸縮、緩存、消息推送、大數(shù)據(jù)存儲和優(yōu)化、安全令牌等架構(gòu)設(shè)計的關(guān)鍵問題,是一本zui近幾年難得的架構(gòu)與設(shè)計模式圖書。 本書內(nèi)容不受編程語言限制,可以根據(jù)需要使用.NET、Java、PHP、Node.js、Go等。云計算平臺可以是Azure、AWS、阿里云等共有云,也可以是私有云平臺。 推薦本書給高級工程師、運維工程師、架構(gòu)師、技術(shù)經(jīng)理、技術(shù)總監(jiān)、CTO學(xué)習(xí)使用。
序言
Preface 本書由微軟模式與實踐小組(微軟P&P小組)親自打造,得到了許多社區(qū)開發(fā)者的支持,為開發(fā)基于云計算架構(gòu)的應(yīng)用程序常見問題提供了解決方案。 本書指南 ? 介紹實現(xiàn)云計算應(yīng)用時,尤其是托管在Azure云平臺時使用這些設(shè)計模式的好處。 ? 討論云計算設(shè)計模式的經(jīng)典問題和解決方案,以及它們?nèi)绾闻cAzure關(guān)聯(lián)到一起。 ? 展示如何使用Azure功能實現(xiàn)這些模式,強調(diào)其優(yōu)點與顧慮。 ? 通過描述如何把這些設(shè)計模式應(yīng)用到云計算應(yīng)用架構(gòu)中以及它們之間的關(guān)系來描繪知識體系的宏偉藍(lán)圖。 本書介紹的主題適用于所有的分布式系統(tǒng),無論是托管在Azure中還是其他云計算平臺中。 我們的目的并非提供設(shè)計模式的詳盡集合,而是選擇了對云計算應(yīng)用zui有用處的設(shè)計模式——尤其考慮到在用戶中的流行度。本書不是詳細(xì)介紹Azure平臺功能的指南。要學(xué)習(xí)Azure可以參考http://azure.com。 本書內(nèi)容 結(jié)合開發(fā)社區(qū)的代表性反饋,我們把云計算應(yīng)用開發(fā)領(lǐng)域zui常見的問題歸納為8類。 類別 描述 可用性 可用性定義為系統(tǒng)正常工作的時間比例。它受系統(tǒng)錯誤、基礎(chǔ)架構(gòu)問題、各種工具以及系統(tǒng)負(fù)載的影響。通常根據(jù)系統(tǒng)正常運行的時間來衡量。云計算應(yīng)用為用戶提供了服務(wù)級別協(xié)議(SLA),它指的是應(yīng)用程序必須以zui大化可用性的方式設(shè)計和實現(xiàn) 數(shù)據(jù)管理 數(shù)據(jù)管理是云應(yīng)用的關(guān)鍵部分,并且影響質(zhì)量特性。由于諸如性能、伸縮性或者可用性等原因,數(shù)據(jù)通常存儲在不同服務(wù)器的不同位置上,這些也會帶來新的挑戰(zhàn)。例如,數(shù)據(jù)一致性必須是可維護(hù)的,并且數(shù)據(jù)需要進(jìn)行跨區(qū)域同步 續(xù)表 類別 描述 設(shè)計和實現(xiàn) 良好的設(shè)計會在組件設(shè)計和部署里包含諸如一致性和內(nèi)聚性、簡化管理和部署的可維護(hù)性,以及允許組件和子系統(tǒng)被其他應(yīng)用使用的重用性。設(shè)計和實現(xiàn)階段的決策對于云計算應(yīng)用和服務(wù)的總體質(zhì)量及成本有重大影響 消息 云計算應(yīng)用的分布式特性需要一個連接組件和服務(wù)的消息基礎(chǔ)架構(gòu),理想情況下是松耦合方式,便于zui大化伸縮性。異步消息被廣泛使用,而且提供了許多好處,同時也帶來了許多挑戰(zhàn),比如消息順序、毒消息管理、冪等性等 管理和監(jiān)控 云計算應(yīng)用運行在遠(yuǎn)程數(shù)據(jù)中心中,我們無法完全控制基礎(chǔ)架構(gòu)或者操作系統(tǒng)。相比私有云,這種情況使得管理工作更加困難。只有應(yīng)用暴露運行時的信息,管理員和運營人員才可以管理和監(jiān)控系統(tǒng);只有支持修改業(yè)務(wù)需求和自定義,才不需要應(yīng)用停止和創(chuàng)新部署 性能和伸縮性 性能是系統(tǒng)執(zhí)行特性操作的響應(yīng)性指標(biāo),而伸縮性是系統(tǒng)處理新增壓力但不會影響性能與可用性的能力。云計算應(yīng)用通常會遇到變化的工作負(fù)載和峰值,這種情況通過不可預(yù)測,特別是在多租戶場景下。相反,應(yīng)用應(yīng)該能夠通過伸縮來滿足峰值的需要,而且當(dāng)需要下降時回退。伸縮性不只是關(guān)注計算實例,還關(guān)注其他要素,比如數(shù)據(jù)存儲、消息基礎(chǔ)架構(gòu)等 彈性 彈性是系統(tǒng)優(yōu)雅地處理錯誤和恢復(fù)系統(tǒng)的能力。云計算主機的基本特性為:應(yīng)用通常是多租戶的,使用共享平臺服務(wù),競爭資源和帶寬,通過互聯(lián)網(wǎng)通信,運行在商用硬件上。這意味著將會出現(xiàn)更多短暫和永久的錯誤。探測錯誤,并快速和高效地恢復(fù)對于維護(hù)彈性來說必不可少 安全 安全是系統(tǒng)阻止設(shè)計使用范圍外的惡意和意外操作的能力,是阻止泄露和丟失數(shù)據(jù)的能力。云計算應(yīng)用暴露在互聯(lián)網(wǎng)上,跨越信任的私有云環(huán)境邊界,通常對外開放,因此可能會出現(xiàn)不信任的用戶。應(yīng)用必須以安全的方式設(shè)計和部署,避免惡意攻擊,限制只有支持的用戶可以訪問,并且保護(hù)敏感數(shù)據(jù) 對于每個類別,我們都創(chuàng)建了關(guān)聯(lián)的指南和文檔,以幫助開發(fā)者解決常見的共同問題。這些包括以下3方面內(nèi)容。 ? 24種設(shè)計模式。這是云托管應(yīng)用非常有用的24種設(shè)計模式。每個設(shè)計模式提供了描述上下文及其問題,解決方案及其問題,使用模式的公共格式,以及基于Azure平臺的例子。每種模式也包含連接到其他相關(guān)模式的鏈接。 ? 10個指南主題。提供了開發(fā)云計算應(yīng)用所需的基本知識、實踐經(jīng)驗與技巧。每個主題都詳實地介紹了這些知識。 ? 例子程序。演示了設(shè)計模式的使用過程。我們可以使用這些代碼參考設(shè)計自己特定的需求代碼。 設(shè)計模式 設(shè)計模式被分配到一個或者多個類別中。完整的設(shè)計模式列表如下所示。 模式 描述 緩存駐留模式 根據(jù)需要從數(shù)據(jù)存儲器加載數(shù)據(jù)。此模式可以用來改進(jìn)性能,還可以用于維護(hù)緩存和后臺數(shù)據(jù)庫之間的數(shù)據(jù)一致性 斷路器模式 當(dāng)連接遠(yuǎn)程服務(wù)或資源時,可能導(dǎo)致不定時間恢復(fù)系統(tǒng)的錯誤。此模式可以用于改進(jìn)系統(tǒng)的穩(wěn)定性和彈性 事務(wù)補償模式 如果一個或者多個操作失敗,就會取消執(zhí)行的一系列工作,它定義了一組zui終一致性模型的操作。遵從zui終一致性模型的操作在云托管應(yīng)用中非常常見,通常都會實現(xiàn)復(fù)雜的業(yè)務(wù)過程和工作流 競爭消費者模式 允許多個并發(fā)的消費者在相同的消息通道上處理接收的消息。此模式允許系統(tǒng)并發(fā)處理多個消息以優(yōu)化系統(tǒng)的吞吐量,改進(jìn)系統(tǒng)的伸縮性和可用性,平衡工作負(fù)載 計算資源合并模式 合并多個任務(wù)或者操作到單個計算單元里。此模式可以增加計算資源的使用率,降低云計算應(yīng)用中計算處理的成本和管理開銷 命令和職責(zé)分離(CQRS)模式 通過隔離接口來分離更新和讀操作。此模式可以zui大化性能、伸縮性和安全性,通過高度的靈活性支持系統(tǒng)的進(jìn)化,在領(lǐng)域級別阻止引起合并沖突的更新命令 事件源模式 使用只能追加的存儲庫來記錄領(lǐng)域里發(fā)生在數(shù)據(jù)庫方面的完整操作事件序列,而不是僅僅保存當(dāng)前狀態(tài),讓存儲庫可以用來創(chuàng)建特定的對象狀態(tài)。此模式可以通過避免同步數(shù)據(jù)模型和業(yè)務(wù)模型的需求來簡化復(fù)雜領(lǐng)域里的任務(wù),改進(jìn)性能、伸縮性和響應(yīng)性,提供事務(wù)性數(shù)據(jù)的一致性,維護(hù)可以支持補償操作的完整審計追蹤和歷史信息 外部配置存儲模式 把配置信息從應(yīng)用部署包移動到一個中心位置。此模式可以提供更簡單的管理和配置數(shù)據(jù)控制、跨應(yīng)用和應(yīng)用實例共享配置的機會 聯(lián)合身份模式 把驗證委托給一個外部身份標(biāo)識提供器。此模式可以簡化部署,zui小化用戶管理的需求,并且改進(jìn)應(yīng)用的用戶體驗 門衛(wèi)模式 通過在客戶端和應(yīng)用與服務(wù)之間使用特定的作為代理的宿主實例來保護(hù)應(yīng)用和服務(wù),驗證并保護(hù)請求,且在它們之間傳遞請求消息。此模式可以提供額外的安全層,并且降低系統(tǒng)受攻擊的層面 健康終結(jié)點監(jiān)控模式 在應(yīng)用中實現(xiàn)功能檢查,可以通過暴露的終結(jié)點定時訪問監(jiān)控數(shù)據(jù)。此模式可以幫助檢驗應(yīng)用和服務(wù)是否正確執(zhí)行 索引表模式 在頻繁訪問的數(shù)據(jù)存儲庫特定字段上出aung時就索引。此模式可以通過允許應(yīng)用更快速地從數(shù)據(jù)存儲庫查詢數(shù)據(jù)改進(jìn)查詢性能 續(xù)表 模式 描述 領(lǐng)導(dǎo)選舉模式 選舉一個實例作為領(lǐng)導(dǎo)來承擔(dān)管理其他實例的職責(zé),讓其協(xié)調(diào)分布式節(jié)點的任務(wù)執(zhí)行。此模式可以幫助確保任務(wù)不會與其他任務(wù)沖突,避免資源爭用,或者被其他執(zhí)行的任務(wù)干擾 物化視圖模型 當(dāng)數(shù)據(jù)格式并非查詢操作期望的格式時,提前為一個或者多個數(shù)據(jù)存儲器中的數(shù)據(jù)生成視圖。此模式可以幫助實現(xiàn)高效查詢和數(shù)據(jù)提取,改進(jìn)應(yīng)用程序的性能 管道和過濾器模式 把一個復(fù)雜的任務(wù)分解為一系列可以單獨執(zhí)行的可重用的任務(wù)元素。此模式可以通過獨立部署和伸縮任務(wù)元素來改進(jìn)性能、伸縮性和可重用性 優(yōu)先級隊列模式 為發(fā)送給服務(wù)的請求消息設(shè)置優(yōu)先級,這樣高優(yōu)先級的請求可以被更快地處理。此模式在給獨立類型的客戶端提供不同服務(wù)級別擔(dān)保時非常有用 基于隊列的負(fù)載均衡模式 在任務(wù)和調(diào)用的服務(wù)之間使用隊列作為緩沖區(qū)來平滑斷斷續(xù)續(xù)的可能導(dǎo)致服務(wù)失敗或者任務(wù)超時的超量負(fù)載。此模式可以幫助zui小化峰值壓力對于任務(wù)和服務(wù)的可用性和響應(yīng)能力的影響 重試模式 當(dāng)連接服務(wù)或者網(wǎng)絡(luò)資源時,通過允許短暫錯誤重試操作來允許應(yīng)用程序處理臨時的失敗。此模式可以用來改進(jìn)應(yīng)用的穩(wěn)定性 運行時重配置模式 設(shè)計應(yīng)用程序使其可以無需重新部署,或者重新啟動應(yīng)用來重新配置。這可以用于維護(hù)可用性和zui小化宕機時間 調(diào)度器代理監(jiān)控模式 協(xié)調(diào)跨分布式服務(wù)和其他資源的集合。如果某個操作失敗,則嘗試透明地處理錯誤;或者如果系統(tǒng)無法從錯誤中恢復(fù),則取消執(zhí)行工作產(chǎn)生的影響。此模式可以通過對短暫異常、長期錯誤和處理錯誤啟用恢復(fù)和重試操作增加系統(tǒng)的彈性 分片模式 把數(shù)據(jù)庫水平分割為不同的區(qū)片進(jìn)行存儲。當(dāng)存儲和訪問海量數(shù)據(jù)時,此模式可以改進(jìn)伸縮性 靜態(tài)內(nèi)容托管模式 部署靜態(tài)內(nèi)容到可以直接發(fā)送給客戶端的云端存儲服務(wù)上。此模式可以減少對于昂貴計算實例的需求 限流模式 控制單個應(yīng)用實例、單個租戶或者整個服務(wù)消耗的資源數(shù)量。此模式可以允許系統(tǒng)繼續(xù)工作,并且滿足服務(wù)級別協(xié)議,甚至對資源增加極限負(fù)載時也可以正常工作 令牌模式 為了在應(yīng)用程序代碼里支持卸載數(shù)據(jù)傳輸操作,使用令牌或者秘鑰來限制對特定資源或服務(wù)的訪問。此模式在使用云托管存儲系統(tǒng)或者隊列時特別有用,并且可以zui小化成本,zui大化伸縮性和性能 主題 這些主題與特定的應(yīng)用程序開發(fā)相關(guān),如下圖所示。 這個指南包含下面的主題。 主題 描述 異步消息通信指南 消息通信是許多分布式系統(tǒng)采用的關(guān)鍵策略,比如云計算。它允許應(yīng)用和服務(wù)彼此通信并協(xié)同工作,且可以幫助構(gòu)建可伸縮的和彈性的解決方案。消息通信支持異步操作,允許我們解耦服務(wù)調(diào)用和宿主進(jìn)程 自動化伸縮指南 持續(xù)監(jiān)控性能和伸縮系統(tǒng)以適應(yīng)波動的工作負(fù)載、滿足目標(biāo)需求并且優(yōu)化運營成本,這個過程可能需要大量的人力成本。這些工作可能無法人工完成。這也是自動化伸縮的用武之地 緩存指南 緩存是一種常見的改進(jìn)系統(tǒng)性能和伸縮性的技術(shù),它通過把高頻率訪問的數(shù)據(jù)拷貝到接近應(yīng)用的數(shù)據(jù)存儲區(qū)中來實現(xiàn)加速。緩存當(dāng)應(yīng)用程序重復(fù)讀取相同的數(shù)據(jù)時zui高效,特別是原始數(shù)據(jù)存儲區(qū)的速度相對緩存較慢的時候,它受制于高級別的爭用,或者說它不會導(dǎo)致網(wǎng)絡(luò)延遲 計算分區(qū)指南 當(dāng)部署應(yīng)用程序到云端時,很可能采用把服務(wù)和組件根據(jù)使用情況分別部署的方式,以便在維護(hù)伸縮性、性能、可用性和應(yīng)用安全時zui小化運行成本 數(shù)據(jù)一致性指南 云應(yīng)用通常使用的數(shù)據(jù)分散存儲在不同的存儲區(qū)里。管理和維護(hù)數(shù)據(jù)一致性變得尤為重要,尤其是出現(xiàn)并發(fā)性和可用性問題時。我們通常需要在并發(fā)性和一致性之間取舍。這意味著我們在設(shè)計解決方案時會考慮zui終一致性,而不會追求應(yīng)用程序所有時刻都處于完全一致性狀態(tài) 數(shù)據(jù)分區(qū)指南 在許多大型伸縮解決方案中,數(shù)據(jù)被分割到不同的可以單獨管理和訪問的分區(qū)中。必須仔細(xì)選擇這些分區(qū)策略以便zui小化壞處zui大化好處。分區(qū)可以幫助我們改進(jìn)伸縮性,降低爭用,并且優(yōu)化性能 續(xù)表 主題 描述 復(fù)制和同步數(shù)據(jù)指南 當(dāng)部署應(yīng)用到多個數(shù)據(jù)中心,比如云和私有云中時,為了zui大化可用性和性能、確保一致性、zui小化數(shù)據(jù)傳輸成本,就必須考慮如何在多個節(jié)點同步數(shù)據(jù) 遠(yuǎn)程監(jiān)控指南 絕大多數(shù)應(yīng)用都會包含診斷功能特性,這些特性可以生成自定義監(jiān)控和調(diào)試信息,尤其是當(dāng)錯誤發(fā)生的時候。這通常稱為監(jiān)控儀表盤,是通過添加事件和錯誤處理代碼到應(yīng)用程序中來實現(xiàn)的。收集遠(yuǎn)程信息的過程通常稱為遙感監(jiān)測 多數(shù)據(jù)中心部署指南 在多個數(shù)據(jù)中心部署應(yīng)用有許多好處,比如增加可用性、更好的跨地區(qū)用戶體驗。然而,還有一些挑戰(zhàn)要解決,比如數(shù)據(jù)同步和監(jiān)管限制 服務(wù)調(diào)用統(tǒng)計指南 我們可能需要統(tǒng)計應(yīng)用或者服務(wù)的調(diào)用信息以便計劃、調(diào)整未來的需求策略,了解用戶如何使用系統(tǒng),或者對用戶、組織部門或者客戶計費。這些都是常見的需求,對大公司和獨立軟件供應(yīng)商及服務(wù)商尤其如此 例子應(yīng)用 10個例子程序演示了本書中介紹的一些模式實現(xiàn)過程,大家可以下載到本地運行,或者部署到Azure訂閱賬號里測試。要獲取并運行這些程序代碼: (1) 可以到微軟下載中心http://aka.ms/cloud-design-patterns-sample “Cloud Design Patterns - Sample Code”頁面下載 “Cloud Design Patterns Examples.zip”壓縮文件。 (2) 在Windows資源瀏覽器里打開壓縮文件的屬性,選擇解壓。 (3) 把代碼復(fù)制到磁盤根目錄,比如C:\PatternsGuide。不要在用戶配置文件夾里解壓(比如Documents 或者 Downloads) ,否則可能導(dǎo)致文件名過長。 (4) 在瀏覽器里打開Readme.htm。它包含系統(tǒng)和例子的配置信息,在本地Azure模擬器運行例子或者部署到Azure平臺上,掌握例子展示的知識點。 本指南與例子的對應(yīng)關(guān)系如下表所示。 主題 描述 競爭消費者 這個例子包含2個組件:Sender worker role負(fù)責(zé)發(fā)送消息到Service Bus隊列,Receiver worker role負(fù)責(zé)從隊列接收消息并處理消息。Receiver worker role啟動兩個實例來模擬消費者競爭 計算資源合并 這個例子展示了如何統(tǒng)一多個獨立的任務(wù)到單個的worker role中。運行這個例子沒有其他需求 續(xù)表 主題 描述 外部配置存儲 這個例子展示了在外部存儲區(qū)保存配置文件而不是使用本地配置文件。在這個例子中,配置保存到Azure Blob Storage存儲區(qū)。Blob包含的配置信息是通過ExternalConfigurationManager類的實例監(jiān)控的。當(dāng)ExternalConfigurationManager對象探測到配置已修改時,它就會提醒應(yīng)用程序 健康終結(jié)點監(jiān)控 這個例子展示了如何設(shè)置檢查獨立服務(wù)健康狀態(tài)的Web終結(jié)點,它可以返回不同的狀態(tài)碼來表示狀態(tài)。設(shè)計終結(jié)點的目的是讓看門狗監(jiān)控服務(wù)監(jiān)控的,比如Azure終結(jié)點健康監(jiān)控服務(wù),但是我們也可以在瀏覽器里打開和調(diào)用終結(jié)點,查看狀態(tài)結(jié)果。我們還可以部署和配置自己的終結(jié)點健康工具來發(fā)送請求給服務(wù)操作并分析接收到的應(yīng)答消息 領(lǐng)導(dǎo)選舉 這個例子展示了工作角色實例如何變成領(lǐng)導(dǎo)。領(lǐng)導(dǎo)可以協(xié)調(diào)和控制其他實例的任務(wù),這些任務(wù)應(yīng)該通過某個工作角色實例執(zhí)行。領(lǐng)導(dǎo)選舉通過獲取租賃權(quán)來實現(xiàn) 管道和過濾器 這個例子包含兩個可以執(zhí)行整體處理部分操作的過濾器。這兩個過濾器組合在一個管道中,一個過濾器的輸出結(jié)果作為另一個過濾器的輸入數(shù)據(jù)。過濾器作為單獨的工作角色實現(xiàn),Azure Service Bus總線隊列提供了管道的基礎(chǔ)架構(gòu) 優(yōu)先級隊列 這個例子展示了如何通過Service Bus主題和訂閱實現(xiàn)優(yōu)先級隊列。工作角色負(fù)責(zé)發(fā)送消息給主題,分配優(yōu)先級給每個消息。接受工作角色從對應(yīng)優(yōu)先級訂閱者中讀取消息。在這個例子中,PriorityQueue.High工作角色運行兩個實例,PriorityQueue.Low只運行一個實例。這樣就能確保高優(yōu)先級消息可以更快速地被讀取 運行時重配置 這個例子展示了如何修改云服務(wù)的配置而不需要重新啟動Web和worker role 靜態(tài)內(nèi)容托管 這個例子展示了如何從公共存儲服務(wù)中快速獲取靜態(tài)內(nèi)容。這個例子包含了一個Azure Web Role,它托管了包含Javascript文件和圖片的網(wǎng)站,部署到Azure存儲區(qū)中。這些內(nèi)容通常部署到存儲賬號中,作為應(yīng)用部署的一部分。但是,為了簡化例子,啟動程序時這些文件會被部署到存儲賬號中 令牌模式 這個例子展示了客戶端程序如何在獲取一個帶有權(quán)限的共享訪問前直接向大對象存儲區(qū)寫入數(shù)據(jù)。為了簡單明了,這個例子關(guān)注獲取和消費令牌秘鑰的機制,不會展示如何實現(xiàn)驗證或者安全通行 這些例子關(guān)注演示每個模式的關(guān)鍵功能特性,并不可以直接使用到生產(chǎn)環(huán)境。 更多信息 所有的章節(jié)都包含對于其他資源的參考,比如圖書、博客文章以及論文。如果需要,大家可以閱讀更詳細(xì)的內(nèi)容。為了方便大家,這里有一個網(wǎng)頁包含所有連接的文章,直接點擊http://aka.ms/cdpbibliography,大家可以閱讀、查詢資源。 反饋和支持 問題?評論?建議?任何關(guān)于本書的反饋或者要獲取任何問題的幫助,請訪問http://wag.codeplex.com。這個社區(qū)網(wǎng)站的論壇是我們推薦的反饋和支持渠道,因為它允許我們大家分享想法、問題和整個社區(qū)的解決方案。 圖書團(tuán)隊 創(chuàng)意與項目管理: Masashi Narumoto 作者: Alex Homer、John Sharp、Larry Brader、Masashi Narumoto和Trent Swanson 開發(fā): Julian Dominguez、Trent Swanson (Full Scale 180)、Alejandro Jezierski (Southworks) 測試: Larry Brader、Federico Boerr和Mariano Grande (Digit Factory) 性能測試: Carlos Farre、Naveen Pitipornvivat (Adecco) 文檔: Alex Homer、John Sharp (Content Master Ltd) 圖片藝術(shù)家: Chris Burns (Linda Werner & Associates Inc)、Kieran Phelan (Allovus Design Inc) 編輯: RoAnn Corbisier 生產(chǎn): Nelly Delgado 技術(shù)審閱: Bill Wilder (Author, Cloud Architecture Patterns)、Michael Wood (Cerebrata) 貢獻(xiàn)者: Hatay Tuna、Chris Clayton、Amit Srivastava、Jason Wescott、Clemens Vasters、Abhishek Lal、Vittorio Bertocci、Boris Scholl、Conor Cunningham、Stuart Ozer、Paolo Salvatori、Shirley Wang、Saurabh Pant、Ben Ridgway、Rahul Rai、Jeremiah Talkar、Simon Gurevich、Haishi Bai、Larry Franks、Grigori Melnik、Mani Subramanian、Rohit Sharma、Christopher Bennage、Andrew Oakley、Jane Sinyagina和Julian Dominguez、Fernando Simonazzi (Clarius Consulting)和Valery Mizonov (Full Scale 180) 微軟開發(fā)者指南顧問委員會 參與審核成員名單:Carlos dos Santos、CDS Informatica Ltda; Catalin Gheorghiu、I Computer Solutions; Neil Mackenzie、Satory Global; Christopher Maneu、Deezer.com; Paulo Morgado; Bill Wagner、Bill Wagner Software LLC;和Roger Whitehead、ProSource.It 感謝為本書的順利出版付出心血的每個參與者!
Alex Homer是微軟PP小組的技術(shù)作者。在加入微軟之前,他做了多年的軟件設(shè)計和培訓(xùn)工作。他在小組的主要精力花費在設(shè)計模式和架構(gòu)方面,還編寫指南和例子代碼。他的博客地址是http://blogs.msdn.com/alexhomer/。
John Sharp 是Content Master (www.contentmaster.com)的首席技術(shù)專家。專注于使用.NET框架和Azure平臺開發(fā)應(yīng)用系統(tǒng)。John寫過《Microsoft Visual C# Step By Step》 和 《Microsoft WCF Step By Step》。John講授過許多培訓(xùn)課程,也寫過許多覆蓋諸多領(lǐng)域,比如C和C++編程、SQL Server數(shù)據(jù)庫管理以及面向服務(wù)架構(gòu)的技術(shù)文章。他獲得了倫敦大學(xué)帝國理工學(xué)院的計算機科學(xué)學(xué)位。 Larry Brader是微軟模式與實踐小組的高級測試工程師,負(fù)責(zé)PP小組不同項目的測試工作,專注于客戶端和服務(wù)器端。此外他對于基于ALM生成測試指南也有濃厚的興趣。 Masashi Narumoto熱衷于將互聯(lián)網(wǎng)作為知識庫的想法;ヂ(lián)網(wǎng)已經(jīng)顯著改變了我們的生活,毫無疑問還會帶來巨大的變化。他的目標(biāo)是匯聚大家的智慧以更有意義的形式提供出來,方便更多的人學(xué)習(xí)。在就職于模式與實踐小組期間,他作為程序經(jīng)理負(fù)責(zé)并完成了多個Azure指南的系列文檔的編寫工作,現(xiàn)在關(guān)注于大數(shù)據(jù)領(lǐng)域。之前,他花費了20多年時間來開發(fā)和咨詢各種不同的解決方案,尤其是零售和制造業(yè)。Masashi的博客地址是http://blogs.msdn.com/masashi_narumoto,推特賬號是@dragon119。 Trent Swanson是Full Scale 180的軟件架構(gòu)師,也是創(chuàng)始人之一,主要使用云計算技術(shù)。他一開始就使用Azure技術(shù),幫助全球各地的客戶來構(gòu)建、部署和管理Azure上的云計算解決方案。無論是遷移現(xiàn)有應(yīng)用到云計算平臺還是構(gòu)建全新應(yīng)用,他都享受整個交付伸縮的、可靠的和可管理的云計算解決方案。
目錄
Table of Contents 第1章 緩存駐留模式 1 背景和問題 1 解決方案 1 相關(guān)模式與指南 5 更多信息 5 第2章 斷路器模式 6 背景和問題 6 解決方案 6 問題與思考 8 何時使用此模式 10 相關(guān)模式和指南 14 第3章 補償事務(wù)模式 15 背景和問題 15 解決方案 16 問題與思考 16 何時使用此模式 17 相關(guān)模式和指南 18 第4章 競爭消費者模式 19 背景和問題 19 解決方案 19 問題與思考 20 何時使用此模式 21 第5章 計算資源合并模式 25 背景和問題 25 解決方案 26 問題與思考 26 應(yīng)用場景 28 相關(guān)模式和指南 32 擴(kuò)展閱讀 32 第6章 命令和查詢職責(zé)分離(CQRS)模式 33 背景和問題 33 解決方案 34 問題與思考 35 何時使用此模式 36 第7章 事件溯源模式 41 背景和問題 41 解決方案 41 問題與思考 43 何時使用此模式 44 相關(guān)模式和指南 47 第8章 外部配置存儲模式 48 背景和問題 48 解決方案 48 問題與思考 49 何時使用此模式 50 關(guān)聯(lián)模式和指南 56 第9章 聯(lián)合身份模式 57 背景和問題 57 解決方案 57 問題與思考 59 何時使用此模式 59 相關(guān)模式和指南 61 更多信息 61 第10章 門衛(wèi)模式 62 背景和問題 62 解決方案 62 問題與思考 63 何時使用此模式 63 相關(guān)模式和指南 64 第11章 健康終端監(jiān)控模式 65 背景和問題 65 解決方案 65 問題與思考 67 何時使用此模式 68 相關(guān)模式和指南 71 更多信息 71 第12章 索引表模式 72 背景和問題 72 解決方案 73 問題與思考 75 何時使用此模式 76 相關(guān)模式與指南 77 第13章 領(lǐng)導(dǎo)者選舉模式 79 背景和問題 79 解決方案 79 問題與思考 80 何時使用此模式 80 相關(guān)模式與指南 85 更多信息 85 第14章 實體化視圖模式 86 背景和問題 86 解決方案 86 問題與思考 87 何時使用此模式 88 相關(guān)模式與指南 89 第15章 管道過濾器模式 90 背景和問題 90 解決方案 91 問題與思考 92 何時使用此模式 93 相關(guān)模式與指南 97 第16章 優(yōu)先隊列模式 98 背景和問題 98 解決方案 98 問題與思考 100 何時使用此模式 101 相關(guān)模式與指南 103 第17章 基于隊列的負(fù)載均衡模式 105 背景和問題 105 解決方案 105 問題與思考 106 何時使用此模式 107 相關(guān)模式和指南 108 第18章 重試模式 109 背景和問題 109 解決方案 109 問題與思考 111 何時使用此模式 112 相關(guān)模式與指南 114 更多信息 114 第19章 運行時重配模式 115 背景和問題 115 解決方案 115 問題與思考 116 何時使用此模式 117 相關(guān)的模式和指南 120 更多的信息 121 第20章 調(diào)度器代理管理者模式 122 背景和問題 122 解決方案 122 問題與思考 125 何時使用此模式 125 相關(guān)模式與指南 128 更多信息 129 第21章 分片模式 130 背景和問題 130 解決方案 130 分片策略 131 問題與思考 135 何時使用此模式 136 相關(guān)模式與指南 138 第22章 靜態(tài)內(nèi)容托管模式 139 背景和問題 139 解決方案 139 問題與思考 139 何時使用此模式 140 相關(guān)模式與指南 143 更多信息 143 第23章 限流模式 144 背景和問題 144 解決方案 144 問題與思考 146 何時使用此模式 147 相關(guān)模式與指南 148 第24章 令牌秘鑰模式 149 背景和問題 149 解決方案 149 問題與思考 150 何時使用此模式 152 相關(guān)模式和指南 154 更多信息 154 第25章 異步消息傳輸指南 155 消息隊列本質(zhì) 155 異步消息傳遞的場景 158 實現(xiàn)異步消息傳遞的注意事項 159 相關(guān)模式和指南 161 更多信息 162 第26章 自動伸縮指南 163 什么是自動伸縮 163 實施自動伸縮的場景 164 實施自動伸縮的注意事項 164 Azure解決方案中的自動伸縮 165 相關(guān)模式和指南 167 更多信息 167 第27章 緩存指南 168 云應(yīng)用程序中的緩存 168 使用緩存的注意事項 170 管理緩存并發(fā) 172 相關(guān)模式和指南 173 更多信息 173 第28章 計算分區(qū)指南 174 Azure計算選項概述 174 計算界限設(shè)計指南 174 組件分離計算實例 176 相關(guān)模式與指南 177 更多信息 178 第29章 數(shù)據(jù)一致性指南 179 管理數(shù)據(jù)一致性 179 最終一致性實現(xiàn)的注意事項 182 相關(guān)模式與指南 185 第30章 數(shù)據(jù)分區(qū)指南 186 為什么需要數(shù)據(jù)分區(qū) 186 分區(qū)策略 187 設(shè)計可擴(kuò)展性的數(shù)據(jù)分區(qū) 190 設(shè)計分區(qū)以提升查詢性能 191 分區(qū)可用性設(shè)計 192 問題與思考 192 相關(guān)模式與指南 194 更多信息 194 第31章 數(shù)據(jù)復(fù)制與同步指南 195 為什么要數(shù)據(jù)復(fù)制及同步 195 復(fù)制和同步數(shù)據(jù) 195 數(shù)據(jù)復(fù)制和同步的注意事項 198 實現(xiàn)同步 200 相關(guān)模式與指南 201 更多信息 201 第32章 遠(yuǎn)程監(jiān)控指南 202 為什么遠(yuǎn)程監(jiān)控很重要 202 監(jiān)控 202 語義日志記錄 204 遙測 205 遠(yuǎn)程監(jiān)控的注意事項 205 相關(guān)模式與指南 207 更多信息 208 第33章 多數(shù)據(jù)中心部署指南 209 為什么部署到多個數(shù)據(jù)中心 209 多數(shù)據(jù)中心部署的思考 213 相關(guān)模式及指南 217 第34章 服務(wù)調(diào)用統(tǒng)計指南 218 為什么服務(wù)調(diào)用統(tǒng)計很重要 218 服務(wù)調(diào)用統(tǒng)計的場景 218 服務(wù)調(diào)用統(tǒng)計的注意事項 220 示例 221 相關(guān)模式及指南 222 更多信息 222
架構(gòu)即未來
移動互聯(lián)網(wǎng)、云計算、大數(shù)據(jù)時代,面臨更多的技術(shù)挑戰(zhàn)問題,設(shè)計模式已經(jīng)從單一的OO問題領(lǐng)域向外擴(kuò)張延伸,設(shè)計模式的范疇不會局限于語言本身,更多擴(kuò)展到架構(gòu)設(shè)計領(lǐng)域 我個人對編程語言沒有偏見,它們各有所長,大家互相學(xué)習(xí)。有實力的程序員不需要通過編程語言來找優(yōu)越感,都在踏實地研究技術(shù)。我接觸的優(yōu)秀程序員無論是對C++、Java,還是對C#等都沒有編程語言的歧視。況且底層的算法、數(shù)據(jù)結(jié)構(gòu)和設(shè)計模式都沒有編程語言限制。 架構(gòu)師和技術(shù)專家 程序員中的精英群體,技術(shù)領(lǐng)袖,也是公司中受人尊敬的群體。 十年磨一劍 精華知識 本書介紹了云計算時代、zui經(jīng)典的24種架構(gòu)設(shè)計模式,包含基于云平臺設(shè)計架構(gòu)面臨的問題以及典型的解決方案,另外還有10個架構(gòu)設(shè)計指南。 24種經(jīng)典的設(shè)計模式包括:高并發(fā)、健康健康、消息編排、架構(gòu)伸縮、緩存、消息推送、大數(shù)據(jù)存儲和優(yōu)化、安全令牌等架構(gòu)設(shè)計的關(guān)鍵問題,是一本zui近幾年難得的架構(gòu)與設(shè)計模式圖書。 本書內(nèi)容不受編程語言限制,可以根據(jù)需要使用.NET、Java、PHP、Node.js、Go等。云計算平臺可以是Azure、AWS、阿里云等共有云,也可以是私有云平臺。 推薦本書給高級工程師、運維工程師、架構(gòu)師、技術(shù)經(jīng)理、技術(shù)總監(jiān)、CTO學(xué)習(xí)使用。
你還可能感興趣
我要評論
|