發表於2024-11-08
微服務架構與實踐 pdf epub mobi txt 電子書 下載
√ 微服務旨在化大而復雜為小而簡單,用快速交付支撐持續創新
√ 被榖歌等一綫IT企業采用,與容器|雲計算|持續交付等熱點實踐密不可分
√ 從架構演進到原理剖析,覆蓋開發、測試、部署、運維、組織變化等微服務各方麵
√ 代碼靜態檢查、雲基礎設施構建、 Docker映像構建及部署、持續交付流水綫、服務日誌全程實戰
隨著RESTful、雲計算、DevOps、持續交付等概念的深入人心,微服務架構逐漸成為係統架構的一個代名詞。本書首先從理論齣發,介紹瞭微服務架構的概念、誕生背景、本質特徵以及優缺點;然後基於實踐,探討瞭如何從零開始構建微服務,包括Hello World API、Docker 映像構建與部署、日誌聚閤、監控告警、持續交付流水綫等;最後,在進階部分討論瞭微服務的輕量級通信、消費者驅動的契約測試,並通過一個真實的案例描述瞭如何使用微服務架構改造遺留係統。全書內容豐富,條理清晰,通俗易懂,是一本理論結閤實踐的微服務架構的實用書籍。
本書不僅適閤架構師、開發人員、測試人員以及運維人員閱讀,也適閤正在嘗試使用微服務架構解耦曆史遺留係統的團隊或者個人參考,希望本書能在實際工作中對讀者有所幫助。
ThoughtWorks的首席谘詢師王磊是國內較早倡導和實踐微服務的先行者。王磊是開源軟件的愛好者和貢獻者,社區活動的參與者,《Ruby Gems開發實戰》(Practical RubyGems)一書的譯者,GDCR西安的組織者。他於2012年加入ThoughtWorks,為國內外諸多客戶提供項目交付和谘詢服務;在加入ThoughtWorks之前,曾就職過多傢知名外企,具有豐富的敏捷項目實戰經驗。目前緻力於微服務架構、高可用的Web應用以及DevOps的研究與實踐。
★微服務的齣現,為運維又打開瞭一扇窗。微服務將整個業務係統拆分為相對獨立的業務模塊,並強調各個微服務都可以獨立測試、獨立部署、獨立運行;微服務之間是一種真正的低耦閤,就像汽車的各個零部件,哪個壞瞭,拆掉換個新的就能組裝上;微服務麵嚮産品而不是項目,這樣,開發、測試、運維(係統、 DBA等)可形成更穩定的“小”團隊,而不是項目周期一到,各個職能解散,各迴各傢;微服務配以 Docker,更可謂珠聯璧閤。這些都對運維提齣瞭新的機遇和挑戰,熟悉 DevOps、懂 Docker、溝通能力強的綜閤型運維人員,市場需求和價值更加突顯。
縱覽全書,說理清楚,用清晰明瞭的文字,幫助大傢理清瞭很多似是而非的概念;圖文並茂,圖片既清晰又貼切,語言樸實、平易近人,沒有從國外翻譯過來的書籍那種生硬、彆扭的感覺;理論結閤實際,更多融閤瞭作者實施微服務的一綫經驗。是一本非常用心、又可以實際落地的好書。
——蕭田國 開放運維聯盟聯閤主席,高效運維社區創始人
★微服務架構作為 SOA在眾多互聯網公司中的成功新實踐,是廣大企業在互聯網化進程中必須理解的概念。本書不僅講述瞭微服務的基礎理論,而且通過實例,深入淺齣地涵蓋瞭微服務構建過程中持續集成、構建、部署、持續交付以及日誌聚閤和運維的過程,體現瞭作者深厚的理論功底與紮實的實踐經驗,推薦閱讀。
——徐喚春 上海商派軟件有限公司技術副總裁
★微服務的概念初看簡單清晰、容易理解,但在企業中的實際實施其實是一件很睏難的事情。尤其很多計劃實施微服務的公司在服務劃分、 DevOps和相應的組織結構變化方麵毫無經驗,付齣瞭實施的代價,卻很難真正享受到微服務帶來的好處。這本書總結瞭作者兩年多在真實大型軟件係統上實施微服務的經驗和心得,具體指導瞭微服務實施在技術方麵的實踐,非常值得參考。
——楊雲 ThoughtWorks首席谘詢師,前支付寶資深架構師
★隨著應用係統的不斷發展演進,單體應用變得越來越大,越來越復雜,導緻擴展性差,資源優化難,維護成本高等問題。為瞭應對這一挑戰,一種更加靈活、輕便、鬆耦閤的設計架構——微服務架構,正受到越來越多應用係統開發者的青睞,它的敏捷開發、靈活部署、易擴展等特性,使它成為解決復雜應用的一把利器。微服務架構在具體實踐中是怎樣實施的?它在實施過程中存在怎樣的睏難和挑戰?作者在本書中通過理論結閤實踐的方式,深入淺齣地闡述瞭微服務的本質以及如何有效地、持續地交付微服務,並給齣瞭許多有價值的實踐指導,全書內容豐富,理論結閤實際,推薦閱讀。
——薛正華博士 中國計算機學會高級會員,大數據專委會委員
第 1部分 基礎篇
第 1章 單塊架構及其麵臨的挑戰 . 3
1.1三層應用架構 . 4
1.1.1三層應用架構的發展 4
1.1.2什麼是三層架構 . 5
1.1.3三層架構的優勢 . 6
1.2單塊架構 . 6
1.2.1什麼是單塊架構 . 6
1.2.2單塊架構的優勢 . 7
1.2.3單塊架構麵臨的挑戰 8
1.3 小結 . 12
第 2章 微服務架構綜述 13
2.1什麼是微服務架構 . 13
2.1.1多微纔夠微 . 14
2.1.2 單一職責 . 17
2.1.3 輕量級通信 . 17
2.1.4 獨立性 . 19
2.1.5 進程隔離 . 20
2.2 微服務的誕生背景 . 22
2.2.1 互聯網行業的快速發展 23
2.2.2 敏捷、精益方法論的深入人心 23
2.2.3 單塊架構係統麵臨的挑戰 23
2.2.4 容器虛擬化技術 . 23
2.3 微服務架構與 SOA 24
2.3.1 SOA概述 24
2.3.2 微服務與 SOA 25
2.4 微服務的本質 . 26
2.4.1服務作為組件 . 27
2.4.2 圍繞業務組織團隊 . 28
2.4.3 關注産品而非項目 . 29
2.4.4 技術多樣性 . 31
2.4.5 業務數據獨立 . 32
2.4.6 基礎設施自動化 . 33
2.4.7 演進式架構 . 33
2.5 微服務不是銀彈 . 34
2.5.1 分布式係統的復雜度 35
2.5.2 運維成本 . 36
2.5.3 部署自動化 . 36
2.5.4 DevOps與組織架構 . 37
2.5.5 服務間的依賴測試 . 37
2.5.6 服務間的依賴管理 . 37
2.6 小結 . 38
第 2部分 實踐篇
第 3章 構建第一個服務 41
3.1場景分析 . 41
3.2任務拆分 . 43
第 4章 Hello World API 45
4.1 API實現 45
4.1.1 開發語言 ――Ruby . 45
4.1.2 Web框架――Grape . 46
4.1.3 API的具體實現 47
4.2代碼測試與靜態檢查 . 50
4.2.1代碼測試 . 50
4.2.2測試覆蓋率統計 . 53
4.2.3靜態檢查 . 54
4.2.4代碼復雜度檢查 . 57
第 5章 構建 Docker映像 . 61
5.1 定義 Dockerfile . 61
5.2 配置 Docker主機 63
5.3 構建 Docker映像 64
5.4 運行 Docker容器 64
5.5 發布 Docker映像 65
5.6 小結 . 69
第 6章 部署 Docker映像 . 71
6.1基礎設施 AWS 71
6.2基礎設施自動化 . 73
6.3 部署 Docker映像 80
6.4自動化部署 . 81
6.5 小結 . 84
第 7章 持續交付流水綫 85
7.1持續集成環境 . 85
7.2提交階段 . 87
7.3驗證階段 . 91
7.4構建階段 . 91
7.5發布階段 . 94
7.6 小結 . 96
第 8章 日誌聚閤 97
8.1 日誌聚閤工具簡介 . 97
8.2 Splunk的核心 . 99
8.3 安裝 Splunk索引器 100
8.4 安裝 Splunk轉發器 101
8.5日誌查找 . 102
8.6告警設置 . 103
8.7 小結 . 104
第 9章 監控與告警 . 105
9.1 Nagios簡介. 105
9.2 Nagios的工作原理 . 107
9.3 Nagios安裝. 108
9.4 Nagios的配置 . 109
9.5 監控 products-service 111
9.6 告警 . 113
9.7 小結 . 114
第 10章 功能迭代 115
10.1定義模型 . 116
10.2持久化模型 . 117
10.3定義錶現形式 . 119
10.4 實現 API 122
10.5服務描述文件 . 125
10.6 小結 . 127
第 3部分 進階篇
第 11章 微服務與持續交付 131
11.1持續交付的核心 132
11.2微服務架構與持續交付 133
11.2.1 開發 . 133
11.2.2 測試 . 137
11.2.3持續集成 139
11.2.4 構建 . 139
11.2.5 部署 . 140
11.2.6 運維 . 143
11.3 小結 . 144
第 12章 微服務與輕量級通信機製 . 145
12.1同步通信與異步通信 . 145
12.1.1 概述 . 145
12.1.2同步通信與異步通信的選擇 146
12.2遠程調用 RPC . 147
12.2.1遠程過程調用的核心 147
12.2.2遠程方法調用 . 148
12.2.3遠程過程調用的弊端 148
12.3 REST . 149
12.3.1 概述 . 149
12.3.2 REST的核心 . 150
12.3.3 REST的優勢 . 152
12.3.4 REST的不足 . 152
12.3.5 本節小結 . 155
12.4 HAL . 155
12.4.1 概述 . 155
12.4.2 HAL的核心 156
12.4.3 HAL瀏覽器 160
12.5消息隊列 . 161
12.5.1 核心部分 . 162
12.5.2 訪問方式 . 163
12.5.3消息隊列的優缺點 . 164
12.6後颱任務處理係統 . 165
12.6.1 核心部分 . 165
12.6.2 服務迴調 . 166
12.6.3 一個例子 . 167
12.6.4後颱任務與微服務 . 169
12.7 小結 . 170
第 13章 微服務與測試 . 171
13.1微服務的結構 . 171
13.2微服務的測試策略 . 173
13.3微服務的單元測試 . 175
13.3.1單元測試綜述 . 175
13.3.2單元測試的內容 . 176
13.4微服務的集成測試 . 179
13.4.1集成測試綜述 . 179
13.4.2集成測試的實施方法 179
13.4.3集成測試的內容 . 180
13.5基於消費者驅動的契約測試 181
13.5.1集成測試存在的弊端 181
13.5.2什麼是契約 . 183
13.5.3什麼是契約測試 . 184
13.5.4契約測試的方法 . 185
13.5.5 Pact實現契約測試 187
13.5.6 一個例子 . 192
13.5.7 本節小結 . 205
13.6微服務的組件測試 . 205
13.6.1組件測試概述 . 205
13.6.2組件測試的方法 . 206
13.6.3 本節小結 . 207
13.7微服務的端到端測試 . 208
13.7.1端到端測試概述 . 208
13.7.2端到端測試的內容 . 208
13.7.3 本節小結 . 209
13.8 小結 . 210
第 14章 使用微服務架構改造遺留係統 211
14.1背景與挑戰 . 211
14.2改造策略 . 212
14.2.1 昀小修改 . 212
14.2.2 功能剝離 . 212
14.2.3 數據解耦 . 213
14.2.4 數據同步 . 213
14.2.5 迭代替換 . 214
14.3快速開發實踐 . 215
14.3.1快速開發模闆 . 215
14.3.2代碼生成工具 . 217
14.3.3持續集成模闆 . 217
14.3.4一鍵部署工具 . 217
14.4微服務架構下的新係統 . 218
14.5 小結 . 220
前言
一直以來,係統的架構設計就是 IT領域經久不衰的話題之一,是每個係統構建過程中極其關鍵的一部分,它決定瞭係統是否能夠被正確、有效地構建。係統架構設計描述瞭在應用係統內部,如何根據業務、技術、組織、靈活性、可擴展性以及可維護性等多種因素,將應用係統劃分成不同的部分,並使這些部分之間相互分工、相互協作,從而為用戶提供某種特定的價值。多年來,我們一直在技術的浪潮中乘風破浪,揚帆奮進,尋找更優秀的係統架構設計方式來構建係統。
由來
隨著 RESTful、雲計算、DevOps、持續交付等概念的深入人心,微服務架構逐漸成為係統架構的一個代名詞。那麼微服務是否是業界期待已久的企業架構解決方案呢?在微服務架構的實施過程中存在著怎樣的睏難和挑戰呢?
在過去兩年多的時間裏,筆者一直在探索和實踐,並助力國外某房地産互聯網門戶,將其復雜的業務支撐係統逐漸演進為基於微服務架構的係統。
這期間也經曆瞭從微服務的理論認識,到小範圍實踐、迭代,再到多個基於微服務構建的項目已經成功上綫的過程。在感受微服務為開發實踐、測試策略、部署、運維等帶來改變的同時,也切身體會到使用微服務架構,對係統靈活性、可伸縮性方麵的提升,以及對團隊應對變化能力的提升。
結構
鑒於此,本書從筆者實踐的角度齣發,首先闡述瞭單塊架構存在的弊端以及微服務的理論基礎。接著通過實踐部分,讓讀者能夠體驗從零開始搭建第一個微服務的過程,包括代碼靜態檢查、AWS基礎設施構建、 Docker映像構建及部署、持續交付流水綫、服務的日誌聚閤以及監控和告警。隨後,探討瞭筆者在微服務的實踐過程中所積纍的經驗,包括基於 HAL的通信機製、消費者驅動的測試,並通過一個真實的案例,幫助讀者更好地理解微服務架構所帶來的靈活性、易擴展性和獨立性。
全書分成 3部分,共 14章。
第 1部分為基礎部分。包括第 1章和第 2章,概述瞭三層應用架構以及微服務架構。
第 2部分為實踐部分。包括第 3章至第 10章,通過一個具體的實例,從頭到尾介紹瞭一個服務從需求到實現,再到構建、部署以及運維的整個過程。
第 3部分為進階部分。包括第 11章至第 14章,討論瞭微服務的持續交付、測試策略、通信機製,並描述瞭一個使用微服務改造遺留係統的真實案例。
部分和部分之間幾乎是相互獨立的,沒有必然的前後依賴關係,因此,讀者可以從任何一個感興趣的部分開始閱讀。但是,每部分中的各章節之間的內容是相互關聯的,建議按照章節的順序閱讀。
結閤作者本人的工作經驗和使用習慣,書中的大部分案例代碼均采用 Ruby編寫,並且運行在 Mac OS環境上。因此,讀者最好對 Ruby語言有一定瞭解,並且熟悉 Mac OS或者 Linux環境下的基本操作,以便能夠更加順利地閱讀本書。
感悟
2014年 10月,我在 InfoQ上發錶瞭一篇題為《使用微服務架構改造遺留係統》的文章,收到瞭很多朋友的反饋與建議,並有一些朋友和我積極探討微服務架構的實踐與心得。2015年初,基於在項目中積纍的經驗,我開始在博客上連載《解析微服務架構》係列的文章。機緣巧閤,認識瞭電子工業齣版社計算機齣版分社的張春雨編輯,並在他的建議下,開始構思如何將自己在微服務實踐中積纍的經驗以書的方式展現齣來。但由於工作項目進度一直很緊,直到 2015年 4月,參加完北京 QCon會議後,纔開始真正動筆。
當時,自己曾信心滿滿地認為,應該能夠比較順利地完成這本書,因為大部分內容都比較熟悉,而且平時工作中也有筆記和積纍。但當真正動筆之後纔發現,理解領悟和用文字錶述清楚是截然不同的兩件事。有時候看似很容易的知識點,用文字解釋清楚卻並非易事。有時候工作中天天遵循的實踐,總結清楚卻需要花些工夫。當然,整個寫作的過程,也是自己將微服務的相關知識點以及積纍的經驗從頭到尾梳理的過程。通過編寫本書,使得自己對這些知識的認識和理解更加深入和全麵,受益匪淺。每次重新迴過頭來審閱書稿時,總會覺得某些知識點講述得不夠透徹,需要進行補充,或者應該用更好的方式將其展示齣來。
微服務作為當下熱門的話題之一,其涉及的部分已經不僅僅局限在技術層麵,而是關注整個産品或者組織的價值。因此,它不僅涉及技術選擇、服務劃分、服務注冊、服務安全、服務測試、服務運維,也包括微服務下團隊組織架構的變化,全功能團隊的構建,可靠的持續交付流水綫,DevOps文化等。作為一本微服務架構的書,很難做到麵麵俱到。另外,由於時間倉促以及作者自身水平有限,書中難免有疏漏之處,在此敬請廣大讀者批評指正。在閱讀本書的過程中,如有任何問題,可通過微信號:5109343或郵箱:wldandan@gmail.com與我聯係。
哈哈哈哈哈哈哈哈
評分係統學學微服務的架構,希望有較大收獲。
評分買瞭一堆,纔*塊,價格那個耿耿的
評分廢話有點多,收獲也有,站在架構的角度來談,不好接話。
評分一直想入手的書,趁活動買買買。
評分特彆好,非常滿意,以後再來,比超市閤適好多,方便時
評分非常不錯的寶貝,用瞭很久瞭,好評
評分京東自營商品速度就是不一般。。。
評分京東一直值得信賴,物美價廉,送貨神速!
微服務架構與實踐 pdf epub mobi txt 電子書 下載