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