TOP
0
0
【簡體曬書區】 單本79折,5本7折,活動好評延長至5/31,趕緊把握這一波!
Spring Cloud與Docker微服務架構實戰(第2版)(簡體書)
滿額折

Spring Cloud與Docker微服務架構實戰(第2版)(簡體書)

人民幣定價:79 元
定  價:NT$ 474 元
優惠價:87412
領券後再享88折
海外經銷商無庫存,到貨日平均30天至45天
可得紅利積點:12 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

作為一部幫助大家實現微服務架構落地的作品,《Spring Cloud與Docker微服務架構實戰(第2版)》覆蓋了微服務理論、微服務開發框架(Spring Cloud)以及運行平臺(Docker)三大主題。全書可分為三部分,第1章對微服務架構進行了系統的介紹;第2-11章使用Spring Cloud開發框架編寫了一個"電影售票系統”;第12-14章則講解了如何將微服務應用運行在Docker之上。全書Demo驅動學習,以連貫的場景、具體的代碼示例來引導讀者學習相關知識,最終使用特定的技術棧實現微服務架構的落地。

作者簡介

周立,Spring Cloud中國社區聯合發起人。擁有近7年的軟件系統開發經驗,多年系統架構經驗。對Spring Cloud、微服務、持續集成、持續交付有一定見地。
熱愛技術交流,曾代表公司參加全球微服務架構高峰論壇、QCon等技術沙龍。擁抱開源,在GitHub與Git@OSC上開源多個項目,並獲得了開源中國的推薦,例如開源電子書《使用Spring Cloud與Docker實戰微服務》等。
筆者博客:http://itmuch.com,定期分享Spring Cloud相關博客。讀者可掃碼關注Spring Cloud 中國社區公眾號以及作者公眾號。

名人/編輯推薦

√ Spring Cloud 快速崛起後已成為微服務領域無可爭議的標準
√ 來自Spring Cloud社區發起人|佈道者|微服務專家的真知灼見
√ 這一Java企業級微服務極限武器已在所有互聯網公司實現部署
√ 高速發展中的Spring Cloud須要你快速跟上新版本瞭解新實踐

序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群、微信群中硝煙四起。筆者參加了不少交流會,感

目次

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 子項目一覽 12
2.3.3 Spring Cloud/Spring Boot 版本兼容性 13
3 開始使用Spring Cloud 實戰微服務.14
3.1 Spring Cloud 實戰前提 14
3.1.1 技術儲備14
3.1.2 工具及軟件版本 15
3.2 服務提供者與服務消費者 16
3.3 編寫服務提供者16
3.3.1 手動編寫項目 . 17
3.3.2 使用Spring Initializr 快速創建Spring Boot 項目. 21
3.4 編寫服務消費者23
3.5 為項目整合Spring Boot Actuator 25
3.6 硬編碼有哪些問題 28
4 微服務註冊與發現
4.1 服務發現簡介. 30
4.2 Eureka 簡介 . 32
4.3 Eureka 原理 . 32
4.4 編寫Eureka Server 34
4.5 將微服務註冊到Eureka Server 上 . 36
4.6 Eureka Server 的高可用 38
4.6.1 編寫高可用Eureka Server . 38
4.6.2 將應用註冊到Eureka Server 集群上 41
4.7 用戶認證 . 41
4.7.1 為Eureka Server 添加用戶認證 41
4.7.2 將微服務註冊到需認證的Eureka Server 43
4.8 Eureka 的元數據43
4.8.1 改造用戶微服務 43
4.8.2 改造電影微服務 44
4.9 Eureka Server 的REST 端點 46
4.9.1 示例 47
4.9.2 注銷微服務實例 52
4.10 Eureka 的自我保護模式 53
4.11 多網卡環境下的IP 選擇 54
4.12 Eureka 的健康檢查 56
4.13 排除Jersey 依賴. 57
5 使用Ribbon 實現客戶端側負載均衡 59
5.1 Ribbon 簡介 59
5.2 為服務消費者整合Ribbon 60
5.3 Ribbon 配置自定義 63
5.3.1 使用Java 代碼自定義Ribbon 配置63
5.3.2 使用屬性自定義Ribbon 配置 67
5.4 脫離Eureka 使用Ribbon . 68
5.5 饑餓加載 . 70
6 使用Feign 實現聲明式REST 調用 72
6.1 Feign 簡介 73
6.2 為服務消費者整合Feign . 73
6.3 自定義Feign 配置 . 75
6.3.1 使用Java 代碼自定義Feign 配置75
6.3.2 使用屬性自定義Feign 配置 79
6.4 手動創建Feign80
6.4.1 修改用戶微服務 80
6.4.2 修改電影微服務 84
6.5 Feign 對繼承的支持 86
6.6 Feign 對壓縮的支持 87
6.7 Feign 的日誌 87
6.7.1 編碼方式設置日誌級別 88
6.7.2 使用屬性配置日誌級別 89
6.8 使用Feign 構造多參數請求 90
6.8.1 GET 請求多參數的URL 90
6.8.2 POST 請求包含多個參數 .91
6.9 使用Feign 上傳文件 92
7 使用Hystrix 實現微服務的容錯處理 94
7.1 實現容錯的手段 94
7.1.1 雪崩效應95
7.1.2 如何容錯95
7.2 使用Hystrix 實現容錯 . 97
7.2.1 Hystrix 簡介 97
目錄xv
7.2.2 通用方式整合Hystrix. 98
7.2.3 Hystrix 斷路器的狀態監控與深入理解 102
7.2.4 Hystrix 線程隔離策略與傳播上下文 103
7.2.5 Feign 使用Hystrix . 106
7.3 Hystrix 的監控112
7.4 使用Hystrix Dashboard 可視化監控數據. 113
7.5 使用Turbine 聚合監控數據 116
7.5.1 Turbine 簡介 116
7.5.2 使用Turbine 監控多個微服務. 117
7.5.3 使用消息中間件收集數據. 119
8 使用Zuul 構建微服務網關 124
8.1 為什麼要使用微服務網關 124
8.2 Zuul 簡介 . 126
8.3 編寫Zuul 微服務網關 . 126
8.4 管理端點 . 129
8.4.1 routes 端點 129
8.4.2 filters 端點 131
8.5 路由配置詳解. 132
8.6 Zuul 的安全與Header . 136
8.6.1 敏感Header 的設置 136
8.6.2 忽略Header 136
8.7 使用Zuul 上傳文件 137
8.8 Zuul 的過濾器140
8.8.1 過濾器類型與請求生命週期 . 140
8.8.2 內置過濾器詳解 141
8.8.3 編寫Zuul 過濾器 . 144
8.8.4 禁用Zuul 過濾器 . 146
8.9 Zuul 的容錯與回退 146
8.10 饑餓加載 . 149
8.11 Query String 編碼 . 150
8.12 Hystrix 隔離策略與線程池 150
8.12.1 隔離策略150
8.12.2 線程池配置 151
8.13 Zuul 的高可用152
8.13.1 Zuul 客戶端也註冊到了Eureka Server 上 152
8.13.2 Zuul 客戶端未註冊到Eureka Server 上. 152
8.14 使用Sidecar 整合非JVM 微服務 154
8.14.1 編寫Node.js 微服務 154
8.14.2 編寫Sidecar 155
8.14.3 Sidecar 的端點 . 157
8.14.4 Sidecar 與Node.js 微服務分離部署. 158
8.14.5 Sidecar 原理分析 . 158
8.15 使用Zuul 聚合微服務 . 160
9 使用Spring Cloud Config 統一管理微服務配置. 166
9.1 為什麼要統一管理微服務配置 166
9.2 Spring Cloud Config 簡介 . 167
9.3 編寫Config Server . 168
9.4 編寫Config Client . 171
9.5 Config Server 的Git 倉庫配置詳解 173
9.5.1 占位符支持 173
9.5.2 模式匹配174
9.5.3 搜索目錄174
9.5.4 啟動時加載配置文件. 175
9.6 Config Server 的健康狀況指示器 176
9.7 配置內容的加解密 177
9.7.1 安裝JCE 177
9.7.2 Config Server 的加解密端點 177
9.7.3 對稱加密177
9.7.4 存儲加密的內容 178
9.7.5 非對稱加密 179
目錄xvii
9.8 使用/refresh 端點手動刷新配置 180
9.9 使用Spring Cloud Bus 自動刷新配置 . 181
9.9.1 Spring Cloud Bus 簡介. 181
9.9.2 實現自動刷新 . 182
9.9.3 局部刷新183
9.9.4 架構改進184
9.9.5 跟蹤總線事件 . 184
9.10 Spring Cloud Config 與Eureka 配合使用. 186
9.11 Spring Cloud Config 的用戶認證 187
9.12 Config Server 的高可用 188
9.12.1 Git 倉庫的高可用 . 188
9.12.2 RabbitMQ 的高可用 189
9.12.3 Config Server 自身的高可用 189
10 使用Spring Cloud Sleuth 實現微服務跟蹤 191
10.1 為什麼要實現微服務跟蹤 191
10.2 Spring Cloud Sleuth 簡介 192
10.3 整合Spring Cloud Sleuth 194
10.4 Spring Cloud Sleuth 與ELK 配合使用 . 196
10.5 Spring Cloud Sleuth 與Zipkin 配合使用 200
10.5.1 Zipkin 簡介 200
10.5.2 編寫Zipkin Server 200
10.5.3 微服務整合Zipkin 202
10.5.4 Zipkin 與Eureka 配合使用 205
10.5.5 使用消息中間件收集數據 . 206
10.5.6 使用Elasticsearch 存儲跟蹤數據. 209
10.5.7 依賴關係圖 211
11 Spring Cloud 常見問題與總結 213
11.1 Eureka 常見問題213
11.1.1 Eureka 註冊服務慢 213
11.1.2 已停止的微服務節點注銷慢或不注銷 . 214
xviii 目錄
11.1.3 如何自定義微服務的Ins

您曾經瀏覽過的商品

購物須知

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

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

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

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

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

優惠價:87 412
海外經銷商無庫存,到貨日平均30天至45天

暢銷榜

客服中心

收藏

會員專區