-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

Spring Cloud與Docker微服務架構實戰

( 簡體 字)
作者:周立類別:1. -> 程式設計 -> JAVA -> Spring
   2. -> 作業系統 -> Docker
譯者:
出版社:電子工業出版社Spring Cloud與Docker微服務架構實戰 3dWoo書號: 46742
詢問書籍請說出此書號!

缺書
NT售價: 345

出版日:5/1/2017
頁數:268
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121312717
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

序1
===
16年國慶假期之后,我所在的公司因為業務需要,想搭建一個API網關來綜合治理已有業務調用服務(我司之前采用的是當當的Dubbo擴展框架Dubbox)。前期,我和同事們在技術選型環節,討論了諸多目前比較紅火的技術框架和工具。最后達成一致,采用微服務,來重構和調整原先這些Dubbox服務,并決定使用Spring Cloud(以下簡稱sc)來實現API網關,爭取在17年能順利平滑地從Dubbox過度到sc。而具體的API網關demo研發工作就落實到我這里。
在開始研發工作之前,我參閱了包括官網在內很多sc研發資料,也去全球最大的同性技術交友網站GitHub上找了很多代碼來仔細研讀。但感覺老外的這些Guide(指南)總是講的不是很通透。也許是有些概念他們覺得太基礎了,就直接略過不表。因此我也感到很迷茫,老是問自己,到底應該如何去實現這個API網關,完成公司指派給我的研發任務呢?
幸好,某一天我看到《Spring Cloud與Docker實戰微服務》這本開源書。根據書中例子,我幾乎沒有費什么大工夫就搭建了一個API網關的demo。甚至其中某些講解點,看了之后能讓我一下子恍然大悟,回頭再看那些老外的Guide,我終于明白了其中的“奧秘”。我真的非常感激這位開源書作者,他深入淺出地將sc所涉及的各種知識點和工具的使用做了完整和詳細的敘述。從此,我也記住了此書作者的網名itmuch。
幾天后,我將demo做了細化和擴展,并在oschina的碼云網站上開源分享了出去(具體網址見<http://git.oschina.net/darkranger/spring-cloud-books>)。而無巧不巧,itmuch居然在我項目下的評論區留言了。經過加QQ,加微信一系列同性技術交友過程(你們懂的)取得了聯系,也終于知道了這位itmuch的真名,那就是此書作者周立同學。在閑聊過程中,他透露了自己正在以那本《Spring Cloud與Docker實戰微服務》開源書為基礎,繼續擴展和具體深入sc這套微服務開發體系所包含的所有技術點,準備出版成冊,讓更多的朋友和企業能學習和借鑒sc這套東西開發符合自己業務場景的微服務框架。并邀請我為新書做校對和修正工作。正巧,我也越來越喜歡鉆研sc,也希望對自己碰到的一些問題向他指教,所以就答應了下來。這其中的過程真的一言難敘,總算最后我也不辱使命地完成了這本書的校對工作。
我可以很負責的說,本書是周立同學本人在工作和學習sc后總結出的精華,書中每段代碼,每個字都是他自己寫的,絕無任何抄襲之舉。完全可以說是一個努力勤奮、能獨立思考、認真做事的同學的良心之作。這樣的“業界良心”在如今這個充滿浮躁的社會中已不多見。希望有更多的讀者能珍惜此書,感謝周立同學給我們的幫助。除此之外,我也希望讀者能在閱讀完此書后,可以自己寫點代碼,親身去實踐一把,感受sc的精妙之處。
最后,在草促完成本文之前,值此新春佳節之際,我也祝大家新年快樂,家庭安康,財源滾滾,愛情事業雙豐收。
2017年1月25日
農歷丙申年臘月二十八
吳峻申 青客機器人有限公司架構師

序2
===
2013年,我在EMC聽了一個關于Docker與測試的分享,才第一次近距離認識Docker。在2014年底時,在項目上開始接觸Docker。2015年上半年,我讀了兩本書:*The Phoenix Project*和*Migrating to Cloud-Native Application Architectures*。這兩本書讓我對DevOps、微服務和云原生架構有了初步的認識。
2015年9月,我以首席架構師的身份加入麻袋理財,當時第一件事情就是就借助DaoCloud在公司內部推行基于Docker的基礎落地的方案。花了三個月,一個簡易的方案就已經可以正常運作。但是在這個過程中,卻發現和應用的契合度不是太高,需要對應用的架構做改造。
2016年年初,當時正好有一個項目要做2.0,之前是一個典型的單體應用(使用Spring MVC),這次準備做微服務改造,以滿足業務對技術快速迭代、橫向擴展的要求。我當時對Spring Boot和Spring Cloud已經有所耳聞,但是還停留于Demo的地步。正好借著這個機會,準備推廣Spring Boot。之后有個全新的項目,我們完全按照微服務架構,使用Spring Boot和Cloud進行開發,并采用CI/CD自動化流程和容器化部署。
2016年10月份時,一次偶然的計劃,Spring Cloud中國社區的許進找到了我,讓我把團隊在實踐過程中的經驗總結在社區做了分享,從而認識了本書的作者周立。當時周立正好在寫一本書,他希望我能夠幫他進行review,我就欣然答應了。
看到了書的標題《Spring Cloud與Docker微服務實戰》,這不就是我一直在做的工作嗎?于是我連夜把這本書讀了一遍,感覺相見恨晚,如果一年前有這本書,那我就可以少走很多彎路了。
本書用一個例子貫穿始終,講解了Spring Cloud的經典組件、微服務架構,以及與Docker的集成。書中提供了詳細的代碼,可以讓讀者在了解基礎概念的同時,可以馬上腳踏實地的擼起袖子寫代碼。
王天青 DaoCloud 首席架構師
2017年3月

序 3
====
最近幾年,微服務的概念非常火爆,由于它確實能解決傳統單體應用所帶來的種種問題(比如代碼可維護性低、部署不靈活、不夠穩定、不易擴展,等等),所以大家對“如何成功實施微服務架構”越來越感興趣。在Java技術棧中,SpringCloud獨樹一幟,提供了一整套微服務解決方案,它基于SpringBoot而構建,延續了Spring體系一貫的“簡單可依賴”,但是由于微服務本身涉及到的技術或概念比較廣,所以在正式“入坑”之前,最好能有一本實戰性強的書籍作為參考。但是很遺憾,SpringCloud太新了,國內幾乎沒有一本完整講解其用法的新書。
今年年初,我偶然得知周立兄在編寫SpringCloud相關的書籍,感到非常驚喜,在和他交流的過程中,我能感覺到他對技術的把控力以及對知識分享的熱情! 閱讀這本書的過程是非常愉悅的,不僅僅是因為它結構之清晰,文風之流暢,更重要的是實戰型極強,相信大家能在本書的指導下,順利地基于SpringCloud&Docker打造出自己的微服務應用。
杜云飛 上海小蟲數據技術合伙人,風控大數據負責人

序4
===
在Spring尚未出現的“蠻荒”時代,Java程序員們還在迷茫地創造著各種“語法糖”來試圖提高生產效率。然而無論怎么努力,Java語言仍被許多人冠以“裹腳布”的名號——畢竟你一不小心就會把它寫的又臭又長。
隨著Spring體系的出現與逐步完善,似乎有一種經歷著Java工業革命的感覺。的確,任何事物都各有利弊,但我仍然想說,Spring團隊給Java程序員們帶來了春天(就像它的名字一樣),它神奇地把“裹腳布”變成了“絲綢”,因為它最大的特質可以用兩個字來形容——優雅。相信你如果使用過Spring Framework、Spring MVC、Spring Data、Spring Boot或Spring Cloud等一系列框架,并研讀過它們的源代碼,就一定能夠體會到“優雅”二字的含義。
盡管Spring家族擁有如此多而美好的大塊“語法糖”,但它們過去在國內的傳播似乎都不怎么順利。我經常說,國內對新技術的廣泛應用一般比國外要晚三到五年,無論后端、前端還是架構理念。這是許多因素導致的,比如信息閉塞、語言不通、甚至固步自封。我相信隨著國內互聯網人才越來越多,新技術應用的延時一定會越來越短。或許很多人為了舊系統的穩定而不愿升級,這可以理解,但我希望人們可以擁抱新的事物,而不是排斥。現如今微服務架構理念興起,人們急需一個快捷、穩定、一站式的分布式微服務解決方案,Spring Cloud正是為此而誕生。可國內熟知Spring Cloud的人目前仍寥寥無幾,大部分人從未聽說過,想要學習的人不知從何開始,對官方的英文文檔也一知半解。人們需要一本能把他們領進Spring Cloud這扇門的“紅寶書”,這便是本書的目的,也是本書作者周立的初衷——希望能夠為減少國內新技術的延時而出一份力。
我與周立在2016年相識,在短暫的交流后我們都產生了相見恨晚的感覺。遇見志同道合的人并不容易,我們的技術理念很相似。他有著對技術的熱忱、靈活的頭腦、以及開源分享技術的無私精神,正是這股精神促使他做了許多分享技術的事情,并且編寫了這本書(相信我,寫書并不賺錢)。我十分欣賞周立身上的這些特質,因此當他跟我提到想出書并找我幫忙時,我毫不猶豫地答應了他。我相信他未來一定能夠成為某一技術領域的專家,這是他的目標,他也具備這樣的潛質。
本書的切入點非常好,它并不糾結于冗長的源碼解讀或原理解釋,而是更多地注重實戰,這在如今互聯網爆炸式發展的時代相當重要。現在人們更傾向于使用敏捷開發盡快做出產品來進行試錯,并在后續版本中快速迭代。因此本書的實戰經驗在軟件工程層面上會給予閱讀者很大提升,它可以讓你更快地搭建分布式微服務架構,然后把精力留在編寫業務邏輯上,提高你的生產力,并最終做出更好的產品——這也是Spring團隊一直希望達到的效果。
現在,讓我們隨本書進入Spring Cloud的世界,一起感受它的優雅吧!

張英磊 云賬房CTO
2017年3月29日

前言

隨著業務的發展,筆者當時所在公司的項目越來越臃腫。隨著代碼的堆砌,項目變得越來越復雜、開發效率越來越低、越來越難以維護,小伙伴們苦不堪言,毫無幸福感可言。
我們迫切需要能夠解放生產力、放飛小伙伴的“良藥”,于是,微服務進入視野。然而,微服務究竟是什么,眾說紛紜,沒有人能說清楚什么是微服務。不僅如此,大家對微服務的態度也是涇渭分明,吹捧者、貶低者比比皆是,在筆者的QQ群、微信群中硝煙四起。筆者參加了不少交流會,感覺許多分享常常停留在理論階段。一場會下來,覺得似乎懂了,卻苦于沒有對應的技術棧去實現這些理論。
Docker、Jenkins等工具筆者均有涉獵,然而使用什么技術棧去實踐微服務架構,在很長時間內都是筆者心中的疑問。
2015年中,筆者偶然在GitHub上看到一個名為Spring Cloud的框架,它基于Spring Boot,配置簡單、設計優雅,并且大多組件經過了生產環境的考驗。筆者花1個月左右的時間詳細研究了Spring Cloud的相關組件后,體會更深。然而,技術選型必須要進行客觀、多維度、全方位的分析,而不應由我個人的主觀意見作為決定因素。**文檔豐富程度、社區活躍度、技術棧生態、開發效率、運行效率、成功案例**等,都是我們選型的重要因素。經過調研,其他幾點都很OK,只缺成功案例——在當時,國內幾乎沒什么成功案例,甚至連中文的博客、相關資料都沒有。
這讓筆者陷入兩難,在這一過程中,公司一邊繼續使用阿里巴巴開源的Dubbo(Dubbo雖然在國內非常流行,但畢竟有段時間沒有維護了,開源生態也不是很好),一邊在筆者的組織下進行一些Spring Cloud相關的技術分享。一方面是希望借此開拓小伙伴們的視野,另一方面也希望能將兩者相互印證,看能否在現有平臺上借鑒Spring Cloud的設計或使用其部分組件。
2016年8月,筆者有幸代表公司參加了全球微服務架構高峰論壇。會上,Josh Long對Spring Cloud的講解在現場引起了不小的轟動,也讓筆者眼前一亮。會后筆者咨詢Josh,Spring Cloud能否用于生產、是否大規模使用、國內是否已有成功案例,對方一一給出了肯定的回答。這一回答消除了筆者最后的一點疑慮,開始考慮從Dubbo逐步遷移至Spring Cloud的規劃與方案。會后,筆者心想,不妨將Spring Cloud相關知識總結成一個“系列博客”,一來是加深自己的理解,二來也算是豐富Spring Cloud的中文資料。于是,筆者創建了自己的博客<(http://www.itmuch.com>),并開始了系列博客的編寫。寫了兩篇后,筆者將博客鏈接分享到微信群中,沒成想,恰好被Josh Long看到,并引用到Spring官方博客中去了。這讓筆者感到無比榮幸的同時,也讓自己貢獻開源社區的欲望空前強烈,于是乎,一口氣又寫了兩篇。
再后來,筆者成立了微服務/Spring Cloud/Docker相關的QQ群(157525002),在QQ群小伙伴的鼓勵下,筆者決定寫一本Spring Cloud開源書(<https://github.com/eacdy/spring-cloud-book)>,沒想到竟然獲得開源中國的推薦。再然后,筆者在許進的邀請下,聯合創辦了Spring Cloud中國社區。最后,在群管理員馮靖的引薦下,認識了網紅級的大牛張開濤,開濤幫忙引薦了電子工業出版社編輯俠少。從此,筆者正式撰寫實體書。
本以為,有了開源書的撰寫經驗,實體書應該是較為輕松的一件事。然而,樣稿發出后,卻被俠少鄙視……主要是語文是體育老師教的,病句滿天飛,況且,理論不是我的專長。期間一度想要放棄,多虧了俠少的鼓勵,總算堅持寫了下去……
倉促完稿之際,感慨萬千,激動與感激交織,于是,本段不可免俗,進入老生常談的“鳴謝”環節——感謝我的家人,寫書是個費時費力的活兒,在近半年的時間,我的父母和妻子給予了我極大的支持;感謝電子工業出版社小伙伴們的辛苦工作,沒有劉佳禾、孫奇俏、俠少等可愛的朋友們,我的書不可能面世;衷心感謝丁露、馮靖、張英磊、王天青、吳峻申(N本書的作者)在百忙之中幫忙校對;衷心感謝QQ群、微信群的朋友們,你們給了筆者最大的幫助和支持!注:排名不分先后。
特別鳴謝:感謝吳峻申給筆者提出很多中肯實用的建議和意見;感謝張英磊幫忙重繪、美化書中絕大部分架構圖。
謹以此書獻給想要學習微服務、Spring Cloud、Docker又不知從何開始的讀者朋友們。**希望本書能切切實實地幫助你使用特定技術棧實現微服務架構的落地**,也希望本書不會令你失望。本書很多理論性的內容并未展開,例如Cloud Native、12-factor App、DDD等,但筆者都在文中以TIPS、拓展閱讀或WARNING的形式進行了標記,這部分內容希望讀者能夠自行拓展閱讀。
周立 千米網
內容簡介:

√ Spring Cloud的崛起將取代Dubbo在微服務領域大行其道√ 作者標簽:Spring Cloud社區發起人|布道者|微服務專家√ Spring Cloud可謂實現Java企業級微服務應用之終極武器√ Spring Cloud是Spring Boot之上更完整、全能的解決方案

目錄:

1 微服務架構概述. . . . . . 1
1.1 單體應用架構存在的問題. . . . . . . 1
1.2 如何解決單體應用架構存在的問題. . . . . . 3
1.3 什么是微服務. . . . . . . 3
1.4 微服務架構的優點與挑戰. . . . . . . 4
1.4.1 微服務架構的優點. . . . . . 5
1.4.2 微服務架構面臨的挑戰. . . . . . 5
1.5 微服務設計原則. . . . . . . . 6
1.6 如何實現微服務架構. . . . . . 7
1.6.1 技術選型. . . . . . . . 7
1.6.2 架構圖及常用組件. . . . . . 8
2 微服務開發框架——Spring Cloud . . . . . 9
2.1 Spring Cloud 簡介. . . . . . . 9
2.2 Spring Cloud 特點. . . . . . . 10
2.3 Spring Cloud 版本. . . . . . . 10
2.3.1 版本簡介. . . . . . . . 10
2.3.2 子項目一覽. . . . . . . 11
2.3.3 Spring Cloud/Spring Boot 版本兼容性. . . . . 12
3 開始使用Spring Cloud 實戰微服務. . . . 13
3.1 Spring Cloud 實戰前提. . . . . . 13
3.1.1 技術儲備. . . . . . . . 13
3.1.2 工具及軟件版本. . . . . . . 14
3.2 服務提供者與服務消費者. . . . . . . 15
3.3 編寫服務提供者. . . . . . . . 15
3.3.1 手動編寫項目. . . . . . . 15
3.3.2 使用Spring Initializr 快速創建Spring Boot 項目. . . 20
3.4 編寫服務消費者. . . . . . . . 22
3.5 為項目整合Spring Boot Actuator . . . . . 23
3.6 硬編碼有哪些問題. . . . . . 26
4 微服務注冊與發現. . . . . . 27
4.1 服務發現簡介. . . . . . . 27
4.2 Eureka 簡介. . . . . . . 29
4.3 Eureka 原理. . . . . . . 29
4.4 編寫Eureka Server . . . . . . 31
4.5 將微服務注冊到Eureka Server 上. . . . . . 33
4.6 Eureka Server 的高可用. . . . . . 34
4.7 為Eureka Server 添加用戶認證. . . . . . 37
4.8 Eureka 的元數據. . . . . . . . 39
4.8.1 改造用戶微服務. . . . . . . 39
4.8.2 改造電影微服務. . . . . . . 39
4.9 Eureka Server 的REST 端點. . . . . . 41
4.10 Eureka 的自我保護模式. . . . . . . 49
4.11 多網卡環境下的IP 選擇. . . . . . . 50
4.12 Eureka 的健康檢查. . . . . . 51
5 使用Ribbon 實現客戶端側負載均衡. . . . . 53
5.1 Ribbon 簡介. . . . . . . . 53
5.2 為服務消費者整合Ribbon. . . . . . . 54
5.3 使用Java 代碼自定義Ribbon 配置. . . . . 57
5.4 使用屬性自定義Ribbon 配置. . . . . . 60
5.5 脫離Eureka 使用Ribbon . . . . . . 61
6 使用Feign 實現聲明式REST 調用. . . . . 63
6.1 Feign 簡介. . . . . . . . 64
6.2 為服務消費者整合Feign . . . . . . 64
6.3 自定義Feign 配置. . . . . . . 66
6.4 手動創建Feign. . . . . . . . 69
6.4.1 修改用戶微服務. . . . . . . 70
6.4.2 修改電影微服務. . . . . . . 73
6.5 Feign 對繼承的支持. . . . . . . 75
6.6 Feign 對壓縮的支持. . . . . . . 76
6.7 Feign 的日志. . . . . . . . 77
6.8 使用Feign 構造多參數請求. . . . . . 79
6.8.1 GET 請求多參數的URL . . . . . 79
6.8.2 POST 請求包含多個參數. . . . . . 81
7 使用Hystrix 實現微服務的容錯處理. . . . . 82
7.1 實現容錯的手段. . . . . . . . 82
7.1.1 雪崩效應. . . . . . . . 83
7.1.2 如何容錯. . . . . . . . 83
7.2 使用Hystrix 實現容錯. . . . . . . 85
7.2.1 Hystrix 簡介. . . . . . . 85
7.2.2 通用方式整合Hystrix. . . . . . 86
7.2.3 Hystrix 斷路器的狀態監控與深入理解. . . . 89
7.2.4 Hystrix 線程隔離策略與傳播上下文. . . . 90
7.2.5 Feign 使用Hystrix . . . . . . . 93
7.3 Hystrix 的監控. . . . . . . . 98
7.4 使用Hystrix Dashboard 可視化監控數據. . . . . 100
7.5 使用Turbine 聚合監控數據. . . . . . 102
7.5.1 Turbine 簡介. . . . . . 102
7.5.2 使用Turbine 監控多個微服務. . . . 103
7.5.3 使用消息中間件收集數據. . . . . . 105
8 使用Zuul 構建微服務網關. . . . . . 110
8.1 為什么要使用微服務網關. . . . . . . 110
8.2 Zuul 簡介. . . . . . . 112
8.3 編寫Zuul 微服務網關. . . . . . . 112
8.4 Zuul 的路由端點. . . . . . . . 115
8.5 路由配置詳解. . . . . . . 116
8.6 Zuul 的安全與Header . . . . . . . 119
8.6.1 敏感Header 的設置. . . . . 119
8.6.2 忽略Header . . . . . . . 120
8.7 使用Zuul 上傳文件. . . . . . . 121
8.8 Zuul 的過濾器. . . . . . . . 124
8.8.1 過濾器類型與請求生命周期. . . . . 124
8.8.2 編寫Zuul 過濾器. . . . . . 125
8.8.3 禁用Zuul 過濾器. . . . . . 127
8.9 Zuul 的容錯與回退. . . . . . 127
8.10 Zuul 的高可用. . . . . . . . 130
8.10.1 Zuul 客戶端也注冊到了Eureka Server 上. . . 130
8.10.2 Zuul 客戶端未注冊到Eureka Server 上. . . . 131
8.11 使用Sidecar 整合非JVM 微服務. . . . . 132
8.11.1 編寫Node.js 微服務. . . . . 133
8.11.2 編寫Sidecar . . . . . . . 134
8.11.3 Sidecar 的端點. . . . . . . 136
8.11.4 Sidecar 與Node.js 微服務分離部署. . . . . 136
8.11.5 Sidecar 原理分析. . . . . . 137
8.12 使用Zuul 聚合微服務. . . . . . . 139
9 使用Spring Cloud Config 統一管理微服務配置. . . 144
9.1 為什么要統一管理微服務配置. . . . . 144
9.2 Spring Cloud Config 簡介. . . . . . 145
9.3 編寫Config Server. . . . . . . 146
9.4 編寫Config Client . . . . . . . 149
9.5 Config Server 的Git 倉庫配置詳解. . . . . 151
9.6 Config Server 的健康狀況指示器. . . . . 154
9.7 配置內容的加解密. . . . . . 155
9.7.1 安裝JCE . . . . . . . . 155
9.7.2 Config Server 的加解密端點. . . . . . 155
9.7.3 對稱加密. . . . . . . . 155
9.7.4 存儲加密的內容. . . . . . . 156
9.7.5 非對稱加密. . . . . . . 157
9.8 使用/refresh 端點手動刷新配置. . . . . . 158
9.9 使用Spring Cloud Bus 自動刷新配置. . . . . 159
9.9.1 Spring Cloud Bus 簡介. . . . . . 159
9.9.2 實現自動刷新. . . . . . . 160
9.9.3 局部刷新. . . . . . . . 161
9.9.4 架構改進. . . . . . . . 162
9.9.5 跟蹤總線事件. . . . . . . 163
9.10 Spring Cloud Config 與Eureka 配合使用. . . . 163
9.11 Spring Cloud Config 的用戶認證. . . . . 164
9.12 Config Server 的高可用. . . . . . 166
9.12.1 Git 倉庫的高可用. . . . . . 166
9.12.2 RabbitMQ 的高可用. . . . . 167
9.12.3 Config Server 自身的高可用. . . . . . 167
10 使用Spring Cloud Sleuth 實現微服務跟蹤. . . . 169
10.1 為什么要實現微服務跟蹤. . . . . . . 169
10.2 Spring Cloud Sleuth 簡介. . . . . . . 170
10.3 整合Spring Cloud Sleuth. . . . . . . 171
10.4 Spring Cloud Sleuth 與ELK 配合使用. . . . . 174
10.5 Spring Cloud Sleuth 與Zipkin 配合使用. . . . . 178
10.5.1 Zipkin 簡介. . . . . . . 178
10.5.2 編寫Zipkin Server . . . . . . . 178
10.5.3 微服務整合Zipkin. . . . . . . 179
10.5.4 使用消息中間件收集數據. . . . . . 183
10.5.5 存儲跟蹤數據. . . . . . . 185
11 Spring Cloud 常見問題與總結. . . . . 188
11.1 Eureka 常見問題. . . . . . . . 188
11.1.1 Eureka 注冊服務慢. . . . . . 188
11.1.2 已停止的微服務節點注銷慢或不注銷. . . . 189
11.1.3 如何自定義微服務的Instance ID . . . . . 190
11.1.4 Eureka 的UNKNOWN 問題總結與解決. . . . 192
11.2 Hystrix/Feign 整合Hystrix 后首次請求失敗. . . . . 193
11.2.1 原因分析. . . . . . . . 193
11.2.2 解決方案. . . . . . . . 193
11.3 Turbine 聚合的數據不完整. . . . . . 193
11.4 Spring Cloud 各組件配置屬性. . . . . . 195
11.4.1 Spring Cloud 的配置. . . . . 195
11.4.2 原生配置. . . . . . . . 196
11.5 Spring Cloud 定位問題思路總結. . . . . 196
12 Docker 入門. . . . . . . . 199
12.1 Docker 簡介. . . . . . . . 199
12.2 Docker 的架構. . . . . . . . 199
12.3 安裝Docker . . . . . . . . 201
12.3.1 系統要求. . . . . . . . 201
12.3.2 移除非官方軟件包. . . . . . 201
12.3.3 設置Yum 源. . . . . . 201
12.3.4 安裝Dokcer . . . . . . . 202
12.3.5 卸載Docker . . . . . . . 203
12.4 配置鏡像加速器. . . . . . . . 204
12.5 Docker 常用命令. . . . . . . . 204
12.5.1 Docker 鏡像常用命令. . . . . . 205
12.5.2 Docker 容器常用命令. . . . . . 206
13 將微服務運行在Docker 上. . . . . . 211
13.1 使用Dockerfile 構建Docker 鏡像. . . . . . 211
13.1.1 Dockerfile 常用指令. . . . . 212
13.1.2 使用Dockerfile 構建鏡像. . . . . . 216
13.2 使用Docker Registry 管理Docker 鏡像. . . . . 218
13.2.1 使用Docker Hub 管理鏡像. . . . . 218
13.2.2 使用私有倉庫管理鏡像. . . . . . 220
13.3 使用Maven 插件構建Docker 鏡像. . . . . 222
13.3.1 快速入門. . . . . . . . 222
13.3.2 插件讀取Dockerfile 進行構建. . . . 224
13.3.3 將插件綁定在某個phase 執行. . . . 225
13.3.4 推送鏡像. . . . . . . . 226
13.4 常見問題與總結. . . . . . . . 228
14 使用Docker Compose 編排微服務. . . . . 229
14.1 Docker Compose 簡介. . . . . . . 229
14.2 安裝Docker Compose . . . . . . . 230
14.2.1 安裝Compose . . . . . . . 230
14.2.2 安裝Compose 命令補全工具. . . . . 230
14.3 Docker Compose 快速入門. . . . . . . 231
14.3.1 基本步驟. . . . . . . . 231
14.3.2 入門示例. . . . . . . . 231
14.3.3 工程、服務、容器. . . . . . 232
14.4 docker-compose.yml 常用命令. . . . . 232
14.5 docker-compose 常用命令. . . . . . . 236
14.6 Docker Compose 網絡設置. . . . . . . 238
14.6.1 基本概念. . . . . . . . 238
14.6.2 更新容器. . . . . . . . 239
14.6.3 links . . . . . . . . 239
14.6.4 指定自定義網絡. . . . . . . 239
14.6.5 配置默認網絡. . . . . . . 240
14.6.6 使用已存在的網絡. . . . . . 241
14.7 綜合實戰:使用Docker Comose 編排Spring Cloud 微服務. . 241
14.7.1 編排Spring Cloud 微服務. . . . . . 241
14.7.2 編排高可用的Eureka Server. . . . . . 245
14.7.3 編排高可用Spring Cloud 微服務集群及動態伸縮. . . 246
14.8 常見問題與總結. . . . . . . . 249
后記. . . . . . . . 250
序: