TOP
0
0
魅麗。花火原創小說66折起
微服務架構與實踐(第2版)(簡體書)
滿額折

微服務架構與實踐(第2版)(簡體書)

人民幣定價:108 元
定  價:NT$ 648 元
優惠價:87564
領券後再享88折
無庫存,下單後進貨(採購期約45個工作天)
可得紅利積點:16 點
相關商品
商品簡介
名人/編輯推薦
目次
書摘/試閱

商品簡介

微服務架構不僅延續了分布式系統與SOA 的特徵,也汲取了DevOps、持續集成、持續交付等工程實踐的成功經驗,並正在借著雲計算和容器化的春風開始其馳騁之旅。但是,微服務的落地並不像其概念描述的那樣舉重若輕,它不僅包括架構解耦,還涉及開發測試、部署運維、工程實踐、團隊合作與康威定律等多方面的因素,這些因素相輔相成,共同影響著如何高質量、快速地交付業務價值。本書是在第1 版的基礎之上,基於作者近年來對服務化改造的實戰經驗和思考,並結合業界的技術趨勢進行的一次體系化的精進。全書共分為3 部分,首先闡述了微服務架構的理論基礎。其次介紹了微服務生態系統、實施參考模型以及最佳實踐,並基於真實案例分析了遺留系統的服務化改造策略與應用場景。最後基於Apache 開源社區的微服務框架ServiceComb,設計並實現了案例SockShop 系統,從端到端交付的角度,指導讀者完成服務的設計、開發、測試、流水線,以及自動化部署和運維體系的建立。本書不僅適合架構師、開發人員以及技術管理者閱讀,也適合正在嘗試向微服務架構遷移的團隊或者個人。希望本書能夠在微服務落地的工作中對讀者有所幫助。

名人/編輯推薦

√ 微服務業界首著重裝上陣,篇幅增倍,內容全面重寫重構。
√ 打通微服務落地最後1公里,全力打造微服務實施參考模型。
√ 微服務演進實戰:架構解耦→工程實踐→部署運維→團隊協作。
√ 累積Thoughtworks深厚技術底蘊,代表華為微服務領跑技術。

推薦序
10 多年前,對雲計算提出的口號是“能夠像水電一樣,通過網絡為全社會提供公共計算服務”。現在,計算服務化已經不再是口號,而是成為了現實。整個IT 行業的商業模式從賣產品轉向賣服務,這也就意味著,傳統的面向產品的應用服務架構,也需要向面向服務的應用架構轉型。
雲計算技術的基本思路是將IT 資源集中起來,利用虛擬化技術,讓更多的用戶能夠共享資源,從而提高資源的利用率,降低服務成本。但用這種做法的同時也隨之帶來了一些新的技術挑戰,比如如何設計新架構以適應海量併發用戶和多樣性的用戶需求等,這導致雲計算及其應用日益複雜。
軟件工程師解決複雜性的核心思路的方法一直就是將架構功能模塊化。雲計算讓軟件服務化,微服務就是在雲服務的基礎上,讓軟件進一步模塊化,以服務的方式提供更好的靈活性。
從微服務概念的提出,到近幾年大家談雲必談微服務,及CloudNative 將微服務作為應用架構的事實標準可以看出,微服務架構正在成為應用架構設計的主流模式。
但是,通過業界幾年的案例和實踐來看,微服務架構的落地也與其他技術的落地類似,是個循序漸進的演進過程。它不僅包括架構解耦,還涉及測試機制、部署運維、工程實踐、團隊協作等多方面,這些因素相輔相成,共同影響著如何高質量、快速地交付業務。
本書的幾位作者王磊、馬博文、張琦,是國內較早接觸微服務、DevOps 以及實現微服務框架的架構師、實踐者,可以說本書是集方法論、指南與實踐經驗為一體的指導書籍。
本書的第一部分以理論基礎為主,主要介紹了應用軟件架構的發展歷史,闡述了微服務架構的本質,並剖析了微服務架構未來的演進趨勢,即Serverless 和Service Mesh;第二部分介紹了微服務生態系統、微服務架構的關鍵技術、微服務實施參考模型以及重要的落地實踐。所謂“光說不練假把式”,對於一本技術書來說,“show me the code”是重要的環節;在第三部分中,本書基於Apache 的微服務開源框架ServiceComb 以及華為雲ServiceStage,完整地搭建了案例系統,並詳細地闡述了從服務的分析、設計、開發,到測試、部署及運維端到端的內容。
感謝本書的幾位作者將寶貴的經驗分享出來,祝本書的讀者們能夠享受微服務架構的帶來的種種樂趣。
中國信息通信研究院雲大所所長 何寶宏博士
2018 年11 月23 日

通過這幾年在項目中實踐微服務,為客戶提供微服務諮詢,我越來越肯定所謂“微服務(Micro Service)”其實一點都不“微”!這非Martin Fowler 定義之過。他所定義的概念,突出了設計每個獨立服務時要分解的粒度,但對於整個架構風格而言,實踐微服務並不如概念所表現的那樣舉重若輕,然後“輕而易舉”。一個微服務從誕生到最後完成使命,經歷了設計、開發、測試、上線運行到下線,其貫穿了整個生命週期。每個環節都有方方面面的因素需要考量,如設計原則的遵守、通信機制的選擇、數據一致性的保障、健康狀態的監控與跟蹤,乃至於服務的配置、測試與運維,還有對企業的組織結構進行改革,使之與微服務架構風格相匹配,等等。
我們還能說微服務是小而美嗎?
為什麼還有這麼多企業對其趨之若鶩呢?個人認為,微服務是結構與規模的權衡。當兩者不可兼得時,選擇降低規模以應對業務複雜度的增長,犧牲結構來換取對複雜系統的控制。觀察前面提及的諸多考量要素,是否都屬￿技術實現的範疇呢?對於軟件系統的實現者而言,我們無法決定業務複雜度的增長,但卻可以將技術複雜度掌控在自己手中。因此,微服務利用“分而治之”的思想減小了系統的規模,使得每個微服務的開發者不用面對複雜的業務邏輯,即使業務發生了變化,在如此小規模的“微”服務中,我們也能輕鬆面對――最壞的情況也就是重寫一個微服務!
這種分解帶來規模減小的同時,引入的卻是分布式系統固有的技術複雜度。這種複雜度依舊挑戰著編程的極限。但我們對於未來卻不再是茫然不可知了,微服務將業務實現的難題轉向了基礎設施的難題,進而成為整個軟件行業面對微服務的共同“焦慮點”。終於,我們能夠拋開具體業務的束縛了!面對這共同的“焦慮點”,一些技術先行者開發了公共的微服務平臺與框架,以圖解決基礎設施的問題,於是就有了Netflix OSS、Spring Cloud、Service Fabric、ServiceComb、Istio 等微服務框架。而雲端的PaaS 與容器化技術又解決了服務部署、服務編排、服務監控等基礎問題。面向業務的微服務開發者們,就可以面對真正的小而美的“微”服務了。
分解業務複雜度、控制技術複雜度為業界“擁抱”微服務的根本原因。
分解業務複雜度,是服務設計要解決的問題;控制技術複雜度,則提升到系統工程的高度,需要考慮團隊組織、框架選型、部署運維等微服務全生命週期的每個環節。幸運的是,王磊、馬博文和張琦的這本書全面地回答了這兩方面的問題。我極為認同書中提到的“微服務生態系統”這一概念。以“生態系統”為名,就能夠讓大家在看到微服務之“微”
的同時,還能重視微服務“不微”的另一面。面對微服務的應用開發人員,我們希望隱藏它“不微”的一面。然後將這背後的苦活兒、累活兒、髒活兒交給架構的設計者,微服務平臺的實現者,讓他們去構造和打磨內部精巧細微的零部件與支撐平臺。
從“不微”進入到“微”,是從宏觀世界進入微觀世界,整個過程其實是一個艱巨的架構設計過程。無論是在新項目中“擁抱”微服務架構,還是將遺留的單塊架構遷移到微服務架構,都需要慎重,在微服務的優勢與不足中取得良好的平衡。“To be or not to be”,這是個問題。而王磊兄結合自己這數年來實踐微服務架構的心得體會,總結了“微服務實施
參考模型”,通過適用性評估、成熟度參考與度量指標,讓選擇的難題迎刃而解。這是本書的一大創見!
從計算機的發展歷史來看,微服務是一個新生產物,但它不是從石頭縫裡突然蹦出來的,它的設計思想其實是分布式系統與SOA 的延續,同時又汲取了DevOps、持續集成、持續交付等工程實踐,並借著雲計算和容器化的春風開始了它的馳騁之旅。因此,要做好微服務架構,既需要在業務和技術方面鑽研得夠深,又需要具有涵蓋整個生命週期的廣博知識,但兩者很難兼得,但本書的內容恰恰在這兩方面都得到了很好的體現。我想,這一方面得益於本書已是第2 版,在前一版全面介紹微服務架構的基礎之上,是一次體系化的精進,內容臻於成熟。同時又依賴于王磊兄在ThoughtWorks、華為親身經歷的眾多大型項目,收穫了大量實踐微服務架構的經驗。
微服務是與時俱進的。從Martin Fowler 提出“微服務”概念至今,不過三、四年時間,這其中已經誕生了許多能“呼風喚雨”的平臺和框架。在軟件設計領域,實現技術瞬息萬變,唯有設計思想方能歷久彌新。幸運的是,本書既通過實戰案例為你提供了微服務落地的參考。同時又高屋建瓴地對微服務架構思想進行了全方位的梳理。本書通過合理巧妙的章節分佈與匠心獨運的內容編排,同時兼顧了“微”與“不微”,專與博,變與不變,真可以說是一本“貪心”之作,但對於讀者而言,不正是一壺可以貪杯的佳釀嗎?
架構編碼實踐者 張逸
2018 年11 月12 日于成都

我和王磊老師是在 ThoughtWorks 的同事。2014 年,我們一起在幫助當時的客戶實施微服務改造,我們在不同的項目上實踐著微服務。那個時候的“微服務”對我來說僅僅是“把應用中的一部分用Restful API 調用,並且通過持續部署的方式部署到生產環境上”。
當我還對微服務的落地懵懵懂懂時,王磊老師已經帶領一個團隊開始規模化地實踐微服務了。他把所遇到的問題和技術實踐系統地總結下來,這就是《微服務架構與實踐》(第1 版)一書。作為當時國內較早的微服務領域的書籍,它揭開了微服務的帷幕,將完整的微服務技術和實踐展現在我面前,使我知道原來我所瞭解的僅僅是微服務的冰山一角。
在接下來的幾年裡,我將自己所在項目的經驗推廣到了其他項目上,開始了我的“DevOps 和微服諮詢”生涯,這段時間也正是微服務在中國開始流行起來的時候。在微服務的理論和實踐在國內不斷深入的同時,新的技術和挑戰也在不斷出現。在我們最早實現微服務時,還不存在 Spring Cloud“全家桶”,也沒有 Kubernetes 這樣的容器編排工具。當時能夠獲取的資源可能就是Netflix 提供的開源項目(當然,現在其中一部分已經不存在了,比如Asgard)。然而,國外的微服務實踐經驗對於國內而言,可借鑒的部分十分有限。而國內的微服務實踐,往往側重於工具技術的應用,卻缺乏了方法論層面的指導。
作為微服務在國內的先驅者和探索者,王磊老師在微服務領域中不斷地總結和探索,繼續完善著微服務的理論和實踐,在近幾年指導並參與了更多的微服務改造項目,獲得了更多的實踐經驗,並總結出了系統的微服務實踐方法論。這些內容就融合在了這本《微服務架構與實踐》(第2 版)中。
瞭解第1 版的朋友,可能會發現第2 版比第1 版“增容”不少,不光更新了第1 版中相關的內容,使得體系更加清晰,而且還介紹了微服務的業界發展,如 Serverless 和Service Mesh。不過,我認為最重要的內容是本書中對“微服務實施參考模型”的梳理。微服務的實施就像在探險,“當你沒有方向的時候,貿然行動可能是最危險的”。就像王磊老師在書中描述的那樣,微服務的實施“不僅僅是架構的拆分,還涉及團隊協作、工程實踐、基礎設施、部署運維等多個方面,這些因素相輔相成,互相依賴,共同影響著如何高質量、快速的交付業務。”
對此我深有體會。架構的演進,不光是技術的升級,還有隨之帶來的組織結構和工程實踐等多方面問題,這些都是決定微服務實施成敗的關鍵因素。如果忽略了其他因素的相互作用,就很容易在微服務的實踐中被多方莫名的阻力困住,難以前行。書中提出的“微服務實施參考模型”就像一張地圖,將微服務實施的全貌展現了出來。它彙聚了眾多微服務實踐者和應用

目次

第1 部分 基礎篇
第1 章 微服務架構綜述 ................................................................................................. 2
1.1 軟件架構發展歷史 .......................................................................................................... 2
1.2 微服務的誕生背景 .......................................................................................................... 8
1.3 什麼是微服務架構 ........................................................................................................ 15
1.4 微服務架構的本質 ........................................................................................................ 23
1.5 微服務架構的特徵 ........................................................................................................ 28
1.6 微服務架構不是“銀彈” ............................................................................................ 34
1.7 微服務架構與SOA ....................................................................................................... 39
1.8 微服務與Serverless ....................................................................................................... 40
1.9 微服務與Service Mesh ................................................................................................. 46
1.10 小結 .............................................................................................................................. 53
第2 部分 策略篇
第2 章 微服務生態系統 ............................................................................................... 57
2.1 為什麼定義生態系統 .................................................................................................... 57
2.2 微服務生態系統的核心內容 ........................................................................................ 59
2.3 生態系統的工程實踐 .................................................................................................... 66
2.4 小結 ............................................................................................................................... 73
第3 章 微服務關鍵技術 ............................................................................................... 74
3.1 服務設計 ........................................................................................................................ 74
3.2 服務治理 ...................................................................................................................... 116
3.3 服務運維 ...................................................................................................................... 131
3.4 小結 .............................................................................................................................. 142
第4 章 微服務參考模型 ............................................................................................. 143
4.1 為什麼需要參考模型 .................................................................................................. 143
4.2 參考模型的核心內容 .................................................................................................. 144
4.3 如何使用參考模型 ...................................................................................................... 172
4.4 小結 .............................................................................................................................. 183
第5 章 基於參考模型的實踐 ...................................................................................... 184
5.1 微服務團隊 .................................................................................................................. 184
5.2 核心敏捷實踐 .............................................................................................................. 192
5.3 服務設計與實現 .......................................................................................................... 198
5.4 運維管理 ...................................................................................................................... 212
5.5 測試管理 ...................................................................................................................... 235
5.6 交付流水線 .................................................................................................................. 269
5.7 部署管理實踐 ....

書摘/試閱

自序
2014 年,微服務架構的概念在國外剛興起,國內提及並付諸實踐的人還並不多。我基於在ThoughtWorks 工作期間對海外某大型房產平臺的微服務改造的經驗,撰寫了本書的第1 版,介紹了微服務架構的概念、背景以及優缺點,並通過一個遺留系統微服務改造的案例,闡述了微服務的理論和相關實踐。
技術的發展日新月異,微服務現在已經從一個“流行語”落地到了諸多互聯網公司及傳統企業。在技術大會上,討論的議題不再是微服務的概念、優缺點,而是落地的場景、相關實踐以及如何應對大規模服務化帶來的挑戰等。另外,隨著持續交付、DevOps 理念被廣泛地接受,Kubernetes、雲基礎設施的成熟,以及Service Mesh 等概念的興起,實現微服務的方式正在發生快速的變化。
近幾年,在幫助數個團隊將其產品遷移到微服務架構後,我深切地感受到:微服務的落地不僅僅只是架構解耦,還涉及工程實踐、部署運維、團隊協作等多個方面,這些因素相輔相成,共同影響著如何高質量、快速地交付業務價值。同時,我也發現:有些朋友對微服務的期望過高,將其視為解決現有架構痛點、消除技術債務、提升團隊能力的“銀彈”。加上社區對微服務的熱捧,導致他們過於迫切地希望大刀闊斧地進行改造,而忽略了演進的過程。實際上,由於存在業務模式、技術積累、組織結構等差異性,微服務改造,尤其對於存量系統龐大的組織而言,很難一蹴而就。另外,市面上出版了諸多與微服務架構相關的書籍,但對實施和演進過程做系統化梳理的並不多。隨著微服務架構在更多企業的落地,我認為如何系統化地演進和落地微服務將成為一大挑戰。
因此,我萌發了更新原書的想法。首先是與讀者分享在過去幾年中我在數個團隊中落地微服務的心得――書中的設計模式以及工程實踐,大多數是來自我對親歷實踐的梳理,其中的參考模型幫助我指導了多個團隊有效地推進遺留系統的改造。其次,基於熱心讀者的反饋,也對本書的開發語言以及技術框架(使用Java 作為開發語言,基於微服務開源框架ServiceComb 構建樣例)進行了更新。另外,還介紹了微服務架構在業界的最新發展,包括微服務與Serverless 以及Service Mesh 等的關係。
最後,感謝我的妻子曉麗和兒子錦熙,沒有你們的支持和鼓勵,我不可能完成這項工作。感謝摯友馬博文、張桐、趙國慶一直以來的支持和幫助,你們對本書的服務化測試、部署運維提供了諸多思路。感謝華為的同事,你們積極參與審校並提出了寶貴建議。這些同事(排名不分先後)包括:饒爭光、張琦、姜甯、陳弘、劉珊珊、吳繼敏、崔毅華、張龍春、田曉亮、周天、閆敏之。感謝電子工業出版社的張春雨和負責本書審校工作的編輯們,本書能夠出版,離不開你們一絲不苟的工作態度和敬業精神。
由於時間倉促及作者水平有限,書中難免有疏漏之處,在此敬請廣大讀者批評指正。在閱讀本書的過程中,也可通過微信5109343 或郵箱wldandan@gmail.com 與我聯繫。祝讀者們享受微服務的實踐之旅!
王磊
2018 年7 月1 日于西安

2011 年入職ThoughtWorks 後,我一直在澳洲一家房地產在線廣告公司工作,負責交付項目,配合客戶逐步實施敏捷開發、持續集成、自動化測試、藍綠部署、持續交付、微服務化、雲化、容器化、Serverless,我所在企業的組織結構也從職能型組織結構演進為類似Spotify 的敏捷性組織結構。
在這個過程中,首先完成了將系統從瀑布式開發改進為敏捷式開發,將持續集成、TDD、自動化測試等推廣到整個組織中。現在我依然記得當年實現Cucumber 測試做數據準備以及在CI 上修復環境的痛苦。這些痛苦換來的好處是,每個迭代(兩周)的產出都可以部署到生產環境中。隨後,服務可以通過“藍綠部署”的方式實現“零宕機時間”部署,這樣自動化部署的任務可以很容易地集成到交付流水線中。
這些工程實踐的應用,就像是鋪就了一條高速公路,讓後面的微服務改造變得異常順利。同時,由於部署已經自動化,基礎設施管理權限和能力也下放到了全功能團隊中,對運維管理的監控、日誌聚合也都採取比較合理的方案,微服務數量增加而帶來的維護成本,由全功能團隊承擔,分攤在每個人身上的on-call 時間很少。
維護成本低帶來的好處是,微服務拆分的粒度可以非常小,小到只有一個接口。這些微服務設計和實現的經驗,也讓客戶後來可以自如地採用Serverless 部署微服務。
基於這些實際的微服務演進經歷,在開始構想本書時,我們對應地為微服務參考模型的每個維度添加了自身曾經經歷過的,或者一些業界的工程實踐的案例,為讀者在實施微服務時,提高每個維度下的成熟度提供參考。
在參與本書撰寫期間,大概半年多都幾乎每天淩晨1 點左右休息。特別感激我的愛人王嘉能一直支持我,她雖然擔心我的身體健康,但更能理解本書對我的重要意義。
借此機會,感謝曾經在剛開始工作時給予我無限幫助的文靜、聰明姐、吳少、黃拓和薑鵬。感謝現在團隊的同事王磊、桐桐、國慶對我的幫助。同時,也感謝曾經一起工作過的朋友們,沒有他們的幫助和影響,我無法對本書做出這些貢獻,書中的很多實踐案例也是來自他們的智慧和啟發。
I feel so grateful to work with all of you: JP who coached me in coding and swearing, Trent who led me into the DevOps world, Cos who gave me comprehensive guidance to become a qualified DevOps, Jeol who set an example of an outstanding tech leader, and Clayton who inspired me to think big in the data pipeline spike. My heartfelt thanks also go to Collins, Mike Williams, and other REA personnel who helped me and gave me enlightening ideas without any reservation. I’m an introvert and not good at rhetoric, but right here is the best opportunity for me to deliver my greatest gratitude with all my readers as witnesses.
最後,祝願各位讀者能在閱讀本書的過程中有所收益,既可以形成自己的微服務理論體系,也能將實踐應用在具體項目中。
馬博文
2018 年7 月5 日于西安

隨著互聯網對各個行業的深度滲透,它對行業的改變除了使行業有了新的業務形式,還有對業務更新節奏的提速。近兩年在與處於各種不同行業的朋友的交流中,感受最深的一點就是“這世界變化太快了”。如果前兩年這種“快”的影響還只在互聯網領域,那麼現在幾乎所有的行業都已經被裹挾到這個浪潮中來了。而“微服務”便是在這樣的大勢之下應運而生,由前兩年互聯網公司的“玩具”轉變為被更多企業級IT 系統所接受和嘗試東西。
IT 領域的技術更新節奏是十分迅速的,自本書第1 版出版以來,隨著容器技術、DevOps技術的蓬勃發展,“適應業務高速變化的系統架構”已經成長了很多。Kubernetes 的火爆,將容器技術帶入了複雜的企業級系統中,對有狀態的服務的支持,對複雜應用的編排能力,讓更多的人們認識到,不是所有的應用都可以簡單到無狀態,“農場散養模式”也不一定適合所有類型的應用。Service Mesh 的微服務實現形式的發展,讓大家認識到,終於有人開始認為傳統的微服務實現方式還是不夠快;而單一語言開發、單一協議通信也並不能滿足很多實際的需求。在“簡單為王”的另一面,人們終於認識到這個世界本就不是那麼簡單的。互聯網褪去了前期的浮華,終於讓整個行業和技術的發展進入到“不落兩邊”的境界。而正是這種技術發展的趨勢,讓越來越多的企業級應用開始選擇和使用微服務架構。本書的前兩篇建立在我們對企業級應用的微服務實踐上,著重講解在這個過程中使用到的種種技術。
然而任何一個曾經嘗試過在自己的項目中使用過“微服務”的讀者都應該有所感受,“微服務”總是看上去很美,做起來卻又“冷暖自知”了。在我參與過的幾個微服務項目中,業務架構師在一開始的期望總是想讓我一下就告訴他,他的系統怎麼做就可以一下就變成微服務架構,可以享受微服務帶來的種種好處,但是實際情況卻是,不存在這種“速成”的方法。其實從開發流程、組織形式、工具選用、架構方式、實現技術等各個階段,無不屬￿微服務的範疇。即便是微服務拆分,也在種種理論之下要充分結合本業務、本系統的實際情況逐步進行。所以本書在“實踐篇”中花大篇幅向讀者展示了一個以微服務架構構建的系統的始末。從理論的實踐到工具的選用,再到各個環節的實施,這是希望讀者在此基礎上可以引發對實踐的思考,並能夠進一步以此為啟發,自己可以對微服務架構和技術有所領悟。
我衷心地希望本書的讀者可以從中獲益,瞭解微服務架構,掌握微服務架構,自己實踐微服務架構。這便是作為IT 從業人員在“搬磚”之外能得到的最大慰藉了。
張琦
2018 年9 月1 日於北京

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 564
無庫存,下單後進貨
(採購期約45個工作天)

暢銷榜

客服中心

收藏

會員專區