微服務設計模式和最佳實踐( 簡體 字) | |
作者:[美]維尼休斯·弗多薩·帕切科 著 | 類別:1. -> 程式設計 -> 綜合 |
譯者:程曉磊 譯 | |
出版社:清華大學出版社 | 3dWoo書號: 51098 詢問書籍請說出此書號! 有庫存 NT售價: 495 元 |
出版日:3/1/2019 | |
頁數:285 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302520412 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1章微服務概念1
1.1理解應用程序2 1.1.1領域驅動設計2 1.1.2單一職責原則4 1.1.3顯式發布的接口5 1.2獨立部署、更新、擴展以及替換7 1.2.1獨立部署7 1.2.2更新7 1.2.3可擴展性8 1.3輕量級通信12 1.3.1同步13 1.3.2異步13 1.4異質/多語言14 1.5通信的文檔化14 1.6Web應用程序端點15 1.7移動應用程序端點15 1.8緩存客戶端16 1.9調節客戶端17 1.10確定貧血域17 1.11確定fat域18 1.12針對業務確定微服務域18 1.13從域到實體19 1.14本章小結20 第2章微服務工具21 2.1編程語言21 2.1.1熟練程度22 2.1.2性能22 2.1.3實踐開發23 2.1.4生態圈23 2.1.5擴展性的開銷24 2.1.6選取編程語言24 2.2微服務框架27 2.2.1Python語言27 2.2.2Go語言29 2.3二進制通信—服務間的直接通信31 2.3.1理解通信方式31 2.3.2直接通信間的警示信息35 2.4消息代理—服務間的異步通信37 2.4.1ActiveMQ38 2.4.2RabbitMQ39 2.4.3Kafka40 2.5緩存工具40 2.5.1Memcached42 2.5.2Redis42 2.6故障警示工具44 2.6.1性能44 2.6.2構建45 2.6.3組件46 2.6.4實現鴻溝47 2.7數據庫47 2.8本地性能度量48 2.8.1ApacheBenchmark49 2.8.2WRK50 2.8.3Locust51 2.9本章小結53 第3章內部模式55 3.1開發結構55 3.1.1數據庫55 3.1.2編程語言和工具56 3.1.3項目結構56 3.2緩存策略71 3.2.1緩存機制的應用72 3.2.2緩存優先78 3.2.3隊列任務79 3.2.4異步機制和worker81 3.3CQRS—查詢策略87 3.3.1CQRS的概念87 3.3.2理解CQRS88 3.3.3CQRS的優點和缺陷90 3.4事件源—數據完整性91 3.5本章小結92 第4章微服務生態環境93 4.1容器中的分離機制93 4.1.1分層服務架構95 4.1.2分離UsersService96 4.2存儲分布103 4.2.1折舊數據103 4.2.2區域化數據103 4.3隔離—使用生態系統防止故障的出現104 4.3.1冗余設計104 4.3.2臨界分區109 4.3.3隔離設計110 4.3.4快速故障111 4.4斷路器112 4.5本章小結113 第5章共享數據微服務設計模式115 5.1理解模式115 5.2將單體應用程序劃分為微服務116 5.2.1定義優先級117 5.2.2設置期限117 5.2.3定義應用程序域117 5.2.4試驗操作117 5.2.5制定標準118 5.2.6構建原型118 5.2.7發送產品118 5.2.8開發新的微服務118 5.3數據編排130 5.4響應整合132 5.5微服務通信132 5.6存儲共享反模式133 5.7最佳實踐133 5.8測試機制133 5.9共享數據模式的利弊135 5.10本章小結136 第6章聚合器微服務設計模式137 6.1理解聚合器設計模式137 6.2使用CQRS和事件源139 6.2.1分離數據庫139 6.2.2重構微服務140 6.3微服務通信153 6.3.1創建編排器154 6.3.2使用消息代理159 6.4模式擴展163 6.5瓶頸反模式164 6.6最佳實踐166 6.7測試167 6.7.1功能測試167 6.7.2集成測試168 6.8聚合器設計模式的優缺點170 6.8.1聚合器設計模式的優點170 6.8.2聚合器設計模式的缺點170 6.9本章小結170 第7章代理微服務設計模式171 7.1代理方案171 7.1.1啞代理172 7.1.2智能代理172 7.1.3理解當前代理173 7.2編排器的代理策略175 7.3微服務通信176 7.4模式擴展性176 7.5最佳實踐177 7.5.1純粹的模式177 7.5.2瓶頸問題178 7.5.3代理制的緩存機制178 7.5.4簡單的響應178 7.6代理設計模式的優缺點179 7.7本章小結179 第8章鏈式微服務設計模式181 8.1理解模式181 8.2數據編排和響應整合184 8.3微服務通信185 8.4模式擴展性185 8.5“大泥球”反模式186 8.6最佳實踐方案188 8.6.1純微服務188 8.6.2請求一致性數據188 8.6.3深入理解鏈式設計模式189 8.6.4關注通信層189 8.7鏈式設計模式的優缺點189 8.8本章小結190 第9章分支微服務設計模式191 9.1理解模式191 9.2數據編排和響應整合194 9.3微服務通信195 9.4模式擴展197 9.5最佳實踐方案198 9.5.1域定義198 9.5.2遵守規則198 9.5.3關注物理組件198 9.5.4簡化行為199 9.6分支設計模式的優缺點199 9.7本章小結199 第10章異步消息微服務201 10.1理解當前模式201 10.2域定義—RecommendationService203 10.3域定義—RecommendationService204 10.4微服務編碼204 10.5微服務通信211 10.5.1使用消息代理和隊列211 10.5.2準備pub/sub結構212 10.6模式的可擴展性214 10.7進程序列反模式214 10.8最佳實踐方案215 10.8.1應用程序定義215 10.8.2不要嘗試創建響應216 10.8.3保持簡單性216 10.9異步消息傳遞設計模式的優缺點216 10.10本章小結217 第11章微服務間的協同工作219 11.1理解當前應用程序狀態219 11.1.1公共飾面層220 11.1.2內部層222 11.1.3理解通用工具223 11.2通信層和服務間的委托224 11.2.1理解服務間的數據合約225 11.2.2使用二進制通信228 11.3模式分布235 11.4故障策略236 11.5API集成237 11.6本章小結239 第12章微服務測試241 12.1單元測試241 12.2針對集成測試配置容器249 12.3集成測試251 12.4端到端測試253 12.5發布管線259 12.6簽名測試259 12.7Monkey測試260 12.8ChaosMonkey260 12.9本章小結262 第13章安全監測和部署方案263 13.1監測微服務263 13.1.1監測單一服務264 13.1.2監測多項服務266 13.1.3查看日志267 13.1.4應用程序中的錯誤268 13.1.5度量方法271 13.2安全問題272 13.2.1理解JWT272 13.2.2單點登錄275 13.2.3數據安全276 13.2.4預防惡意攻擊—識別攻擊行為277 13.2.5攔截器277 13.2.6容器278 13.2.7API網關279 13.3部署279 13.3.1持續集成和持續交付/持續部署280 13.3.2藍/綠部署模式和Canary發布281 13.3.3每臺主機包含多個服務實例282 13.3.4每臺主機的服務實例283 13.4本章小結285 本書詳細闡述了與微服務相關的基本解決方案,主要包括微服務概念、微服務工具、內部模式、微服務生態環境、共享數據微服務設計模式、聚合器微服務設計模式、代理微服務設計模式、鏈式微服務設計模式、分支微服務設計模式、異步消息微服務、微服務間的協同工作、微服務測試以及安全監測和部署方案等內容。此外,本書還提供了相應的示例、代碼,以幫助讀者進一步理解相關方案的實現過程。
本書適合作為高等院校計算機及相關專業的教材和教學參考書,也可作為相關開發人員的自學教材和參考手冊。 微服務是一種軟件體系結構策略,多年來一直在使用,其目標是提高服務的可伸縮性。由于當今的業務呈現快速、動態增長之勢,單體應用程序與面向服務相比已不占優勢。通過設計這種新的體系結構模型,面向對象的原則、標準、解耦和職責已經構成了超越自動化測試的基礎內容。
微服務可使讀者能夠創建可維護、可伸縮的應用程序。在閱讀本書后,讀者將能夠創建可互操作的微服務,同時兼具可測試性和高性能的特征。 適用讀者 本書面向于具有Web開發經驗,但想要改進其開發技術以創建可維護和可伸縮應用程序的讀者,讀者不需要具備微服務方面的經驗。本書中演示的概念和標準,使讀者能夠開發易于理解和支持大量訪問的應用程序。 本書內容 第1章整體介紹微服務的概念,以幫助讀者理解體系結構背后的相關理念,例如客戶優先方案以及域定義。 第2章討論微服務應用中的常見工具。一旦了解了客戶以及如何定義應用程序域,即可制定技術決策方案,包括所使用的語言、框架,以及如何驗證微服務框架的功能。 第3章將探討內部微服務的應用模式,如緩存策略、worker、隊列以及異步機制。 第4章考察如何從單體應用程序中創建一組具有彈性和可伸縮的微服務。本章還將重點討論如何在各自的容器中正確地分離微服務,并解釋存儲層的分布。 第5章涉及一些較為特殊的用例。通常,微服務在業務、測試、通信、連接和存儲方面是完全獨立的;而共享模式則是遷移概念的一種特殊模式(從單體到微服務);總的來說,這是一種過渡模式。 第6章主要討論了一些簡單而常見的模式,主要包括對微服務的數據編排。 第7章闡述了代理模式,它與聚合器模式非常相似。對于該結構,當不需要連接數據并將其發送給終端用戶時,可以對其加以使用。本章的目標是了解代理模式和聚合器模式之間的差異,以及針對微服務的正確的請求重定向操作。 第8章將學習鏈式模式。其中,發送至客戶端的信息將整合至鏈中。本章的主要目標是解釋信息整合問題。 第9章介紹分支模式,該模式可視作聚合器模式和鏈式模式的混合體,通常用于以下場合:在后端中,微服務未包含所有數據以完成某項任務;或者應直接通知另一個微服務。本章解釋了該模式的應用時機,以及對業務的作用方式。 第10章解釋了一種較為復雜的模式:在微服務級別使用異步機制。本章將討論如何利用消息工具實現微服務的異步通信方式。 第 11 章對相關模式進行總結。在介紹了所有的微服務模式后,將考察如何將微服務進行整合,以使其可有效地協同工作。 第12章將討論最為合理的測試機制及其簡化方式。 第13章介紹了生產過程中維護微服務的必要條件以及最佳實踐。 背景知識 如果讀者了解一些Go語言 (golang)中的OOP和包結構,那么,閱讀本書將變得更加輕松、有趣。 資源下載 讀者通過個人賬戶下載示例代碼文件。另外,注冊成功后,我們將以電子郵件的方式將相關文件發與讀者。 讀者可根據下列步驟下載代碼文件。 (1)登錄并注冊我們的網站。 (2)選擇SUPPORT選項卡。 (3)單擊Code Downloads & Errata。 (4)在Search文本框中輸入書名并執行后續命令。 當文件下載完畢后,確保使用下列最新版本軟件解壓文件夾。 ? Windows系統下的WinRAR/7-Zip。 ? Mac系統下的Zipeg/iZip/UnRarX。 ? Linux系統下的7-Zip/PeaZip。 另外,讀者還可訪問GitHub獲取本書的代碼包。此外,讀者還可訪問以了解豐富的代碼和視頻資源。 讀者可下載本書的彩色圖像,以方便讀者對比某些輸出結果。 本書約定 代碼塊則通過下列方式設置: class TestDevelopmentConfig(TestCase): def create_app(self): app.config.from_object(config.DevelopmentConfig) return app def test_app_is_development(self): self.assertTrue(app.config[DEBUG] is True) 代碼中的重點內容則采用黑體表示: def test_sucess(self, rpc_command_mock): """Test to insert a News.""" 命令行輸入或輸出如下所示: $ docker-compose -f docker-compose.yml up --build –d 圖標表示較為重要的說明事項。 圖標則表示提示信息和操作技巧。 讀者反饋和客戶支持 歡迎讀者對本書的建議或意見予以反饋。 對此,讀者可發送郵件,并以書名作為郵件標題。若讀者對本書有任何疑問,均可發送郵件,我們將竭誠為您服務。 勘誤表 盡管我們在最大程度上做到盡善盡美,但錯誤依然在所難免。如果讀者發現謬誤之處,無論是文字錯誤抑或是代碼錯誤,還望不吝賜教。對此,讀者可訪問,選取對應書籍,單擊Errata Submission Form超鏈接,并輸入相關問題的詳細內容。 版權須知 一直以來,互聯網上的版權問題從未間斷,Packt出版社對此類問題異常重視。若讀者在互聯網上發現本書任意形式的副本,請告知網絡地址或網站名稱,我們將對此予以處理。關于盜版問題,讀者可發送郵件。 若讀者針對某項技術具有專家級的見解,抑或計劃撰寫書籍或完善某部著作的出版工作。 問題解答 若讀者對本書有任何疑問,均可發送郵件,我們將竭誠為您服務。 |