官术网_书友最值得收藏!

前言

寫(xiě)作初衷

在這里,筆者想和大家聊聊筆者與這本書(shū)的緣分。一個(gè)偶然的機(jī)會(huì),編輯老師問(wèn)筆者,是否有意愿寫(xiě)一本面向初學(xué)者的微服務(wù)與容器化的實(shí)戰(zhàn)圖書(shū)。編輯老師話(huà)雖短,但包含的信息量著實(shí)不小,既要介紹微服務(wù)和容器化的實(shí)用技術(shù),又要讓初學(xué)者能夠讀懂,還要緊扣實(shí)戰(zhàn)。一番思索之后,筆者欣然應(yīng)允。

微服務(wù)架構(gòu)的概念在2012年由Fred George提出以來(lái),至今已經(jīng)過(guò)了近十個(gè)年頭。在這期間,隨著互聯(lián)網(wǎng)和云服務(wù)技術(shù)的蓬勃發(fā)展,微服務(wù)架構(gòu)也逐漸從“陽(yáng)春白雪”走入了“尋常百姓家”。Spring Cloud作為微服務(wù)領(lǐng)域的弄潮兒,利用Spring Boot提供的“開(kāi)箱即用”的特性,極大地簡(jiǎn)化了分布式系統(tǒng)基礎(chǔ)設(shè)施的構(gòu)建。借助Docker容器化技術(shù)和Kubernetes容器編排技術(shù),我們可以輕松地實(shí)現(xiàn)微服務(wù)應(yīng)用的跨平臺(tái)快速部署和彈性伸縮。Spring Cloud+Docker+Kubernetes的組合已經(jīng)逐漸成為各大公司落地微服務(wù)架構(gòu)的首選方案。

本書(shū)特色

新版本:針對(duì)Spring Cloud Hoxton.SR5版本+Spring Boot 2.2.x.RELEASE版本。

專(zhuān)注實(shí)踐:全書(shū)風(fēng)格緊貼實(shí)戰(zhàn),學(xué)練結(jié)合。通過(guò)一個(gè)優(yōu)惠券實(shí)戰(zhàn)項(xiàng)目貫穿全書(shū)章節(jié),帶讀者體驗(yàn)將單體應(yīng)用逐步改造為微服務(wù)應(yīng)用的全過(guò)程。

技術(shù)全面:實(shí)戰(zhàn)案例涵蓋了Spring Boot、Spring Cloud核心組件庫(kù)和容器化技術(shù)的知識(shí)點(diǎn),介紹了Spring Boot的核心功能和服務(wù)治理組件Eureka及Nacos,講解了Spring Cloud的第二代網(wǎng)關(guān)組件Spring Cloud Gateway、負(fù)載均衡組件Ribbon、服務(wù)間調(diào)用組件OpenFeign、配置中心組件Spring Cloud Config、批量消息推送組件Bus、服務(wù)容錯(cuò)組件Hystrix+Turbine+Dashboard、防流量哨兵組件Sentinel、鏈路追蹤組件Sleuth+Zipkin+ELK、消息驅(qū)動(dòng)組件Stream,分析了分布式事務(wù)框架Seata和用于DevOps實(shí)踐的Docker容器化技術(shù)、Kubernetes容器編排技術(shù)及下一代微服務(wù)技術(shù)Service Mesh。

低門(mén)檻:本書(shū)為初學(xué)者構(gòu)建了非常友好的學(xué)習(xí)曲線(xiàn),通過(guò)實(shí)戰(zhàn)項(xiàng)目手把手帶讀者從Spring Boot應(yīng)用的核心功能模塊入手,逐漸過(guò)渡到微服務(wù)和容器化部分。

深入剖析:對(duì)于書(shū)中的知識(shí)點(diǎn),通過(guò)實(shí)戰(zhàn)案例向讀者展示業(yè)界主流的微服務(wù)架構(gòu)最佳實(shí)踐。

適用讀者

本書(shū)適合具備一定Java基礎(chǔ)的開(kāi)發(fā)人員及對(duì)微服務(wù)架構(gòu)和Spring Cloud技術(shù)、容器編排技術(shù)感興趣的讀者。對(duì)處在微服務(wù)架構(gòu)轉(zhuǎn)型期的團(tuán)隊(duì)來(lái)說(shuō),本書(shū)具有很大的實(shí)踐指導(dǎo)價(jià)值。

本書(shū)內(nèi)容

本書(shū)共22章,每章的具體內(nèi)容如下:

第1章:熱身運(yùn)動(dòng)。

這一章主要介紹了在進(jìn)行Spring Boot開(kāi)發(fā)之前所需的準(zhǔn)備工作,例如相關(guān)常識(shí)的介紹、常規(guī)軟件的安裝和開(kāi)發(fā)環(huán)境的搭建等,此后再通過(guò)幾個(gè)例子介紹了Java Web應(yīng)用開(kāi)發(fā)的進(jìn)化史。

第2章:Spring Boot介紹。

這一章首先簡(jiǎn)單介紹了Spring框架的歷史并穿插了一些業(yè)界趣聞,然后講解了Spring框架的基石技術(shù)IoC、AOP及Spring主要組件,接著解釋了Spring Boot出現(xiàn)的契機(jī)及原因,最后重點(diǎn)介紹了Spring Boot的工作原理、組件及如何利用Spring Boot進(jìn)行應(yīng)用開(kāi)發(fā)。

第3章:Spring Boot實(shí)戰(zhàn)。

這一章主要通過(guò)優(yōu)惠券項(xiàng)目細(xì)致地講解了如何基于Spring Boot進(jìn)行項(xiàng)目實(shí)戰(zhàn)開(kāi)發(fā),先用Spring Boot構(gòu)建應(yīng)用的核心功能,再循序漸進(jìn)地引入更多主流開(kāi)源軟件與項(xiàng)目集成,以實(shí)現(xiàn)更豐富的應(yīng)用功能來(lái)應(yīng)對(duì)各種各樣的開(kāi)發(fā)場(chǎng)景。

第4章:微服務(wù)與Spring Cloud。

這一章首先介紹微服務(wù)架構(gòu)的理念及服務(wù)拆分規(guī)范,然后介紹目前一線(xiàn)大廠(chǎng)的服務(wù)治理方案,接著介紹Spring Cloud及Netflix組件庫(kù)和Alibaba組件庫(kù),最后介紹實(shí)戰(zhàn)項(xiàng)目中采用的微服務(wù)技術(shù)選型方案。

第5章:使用Eureka實(shí)現(xiàn)服務(wù)治理。

這一章首先向讀者介紹服務(wù)治理的概念和Spring Cloud中常用的服務(wù)注冊(cè)中心,然后著重介紹Eureka的核心概念和微服務(wù)生命周期的管理流程,最后通過(guò)實(shí)戰(zhàn)項(xiàng)目落地一套高可用化的注冊(cè)中心方案。

第6章:使用Nacos實(shí)現(xiàn)服務(wù)治理。

這一章首先介紹如何安裝Nacos,并對(duì)Eureka和Nacos做了簡(jiǎn)單比較,最后演示了如何使用Nacos實(shí)現(xiàn)服務(wù)治理。

第7章:使用Ribbon實(shí)現(xiàn)負(fù)載均衡。

這一章介紹了負(fù)載均衡的基本概念,并針對(duì)Ribbon內(nèi)置的負(fù)載均衡策略及各個(gè)負(fù)載均衡策略適用的業(yè)務(wù)場(chǎng)景,探討了Ribbon的IPing機(jī)制,最后通過(guò)將Ribbon集成到實(shí)戰(zhàn)案例來(lái)鞏固學(xué)習(xí)效果。

第8章:使用OpenFeign實(shí)現(xiàn)服務(wù)間調(diào)用。

在這一章中,為了避免煩瑣的REST API調(diào)用流程,我們通過(guò)Feign組件實(shí)現(xiàn)了一種類(lèi)似于“本體方法調(diào)用”的簡(jiǎn)易步驟,我們只需要定義一個(gè)Feign接口,就可以將該接口注入Java類(lèi)中實(shí)現(xiàn)遠(yuǎn)程REST API調(diào)用。我們還深入介紹了Feign組件的工作原理,以及Feign的超時(shí)配置和數(shù)據(jù)壓縮配置。

第9章:使用Hystrix實(shí)現(xiàn)服務(wù)間容錯(cuò)。

這一章通過(guò)一個(gè)“服務(wù)雪崩”的例子來(lái)理解服務(wù)容錯(cuò)的幾種常規(guī)手段,進(jìn)而學(xué)習(xí)Hystrix如何通過(guò)服務(wù)降級(jí)、服務(wù)熔斷和線(xiàn)程隔離的方式實(shí)現(xiàn)服務(wù)容錯(cuò)。在這個(gè)過(guò)程中,我們還介紹了Hystrix的兩個(gè)好搭檔,即分別用來(lái)聚合服務(wù)調(diào)用數(shù)據(jù)的Turbine和服務(wù)大盤(pán)監(jiān)控組件的Hystrix Dashboard。

第10章:使用Sentinel實(shí)現(xiàn)限流控制。

這一章首先介紹了如何安裝Sentinel,再介紹了Hystrix和Sentinel之間的異同,最后演示了如何使用Sentinel在不同場(chǎng)景下對(duì)服務(wù)進(jìn)行限流控制。

第11章:使用Spring Cloud Config和Bus搭建配置中心。

這一章首先介紹了分布式配置中心在微服務(wù)架構(gòu)中的用途,然后落地了一套Spring Cloud Config+GitHub的遠(yuǎn)程配置中心,最后通過(guò)集成Bus組件實(shí)現(xiàn)了配置項(xiàng)的動(dòng)態(tài)推送。在這個(gè)過(guò)程中,我們還介紹了如何對(duì)配置中心進(jìn)行高可用化改造,以及如何使用對(duì)稱(chēng)密鑰和非對(duì)稱(chēng)密鑰將敏感信息進(jìn)行加密存儲(chǔ)。

第12章:使用Spring Cloud Gateway搭建服務(wù)網(wǎng)關(guān)。

這一章介紹了Spring Cloud的第二代網(wǎng)關(guān)組件Spring Cloud Gateway,它與Nginx這類(lèi)外部網(wǎng)關(guān)不同,Spring Cloud Gateway主要用來(lái)承接經(jīng)由外部網(wǎng)關(guān)導(dǎo)向微服務(wù)集群的服務(wù)請(qǐng)求,并基于這些服務(wù)請(qǐng)求的路徑及參數(shù)等信息做服務(wù)轉(zhuǎn)發(fā)。除了介紹如何設(shè)置請(qǐng)求轉(zhuǎn)發(fā)規(guī)則,我們還介紹了如何在網(wǎng)關(guān)層添加過(guò)濾器和限流規(guī)則(底層采用Redis+Lua實(shí)現(xiàn)限流)。

第13章:使用Sleuth進(jìn)行調(diào)用鏈路追蹤。

在一個(gè)大型微服務(wù)系統(tǒng)中完成一個(gè)復(fù)雜的業(yè)務(wù)流程可能需要調(diào)用數(shù)十個(gè)微服務(wù)模塊,從調(diào)用鏈分析及線(xiàn)上故障排查的角度來(lái)看,我們需要將每一次服務(wù)請(qǐng)求中的所有調(diào)用鏈路通過(guò)某種標(biāo)記串聯(lián)起來(lái)。這一章介紹了一款調(diào)用鏈路“打標(biāo)工具”Sleuth,通過(guò)對(duì)Sleuth底層數(shù)據(jù)結(jié)構(gòu)的介紹使讀者了解它的工作原理,并將打標(biāo)后的日志信息傳輸?shù)絑ipkin和ELK組件中,實(shí)現(xiàn)調(diào)用鏈路分析和日志檢索功能。

第14章:使用Stream集成消息隊(duì)列。

這一章介紹了如何通過(guò)Stream組件簡(jiǎn)化微服務(wù)應(yīng)用與消息隊(duì)列組件的對(duì)接,我們首先介紹了發(fā)布訂閱、消費(fèi)組和消費(fèi)分區(qū)三個(gè)重要場(chǎng)景,然后通過(guò)實(shí)際案例介紹了消息的異常處理手段,比如本機(jī)重試、消息重新入隊(duì)、降級(jí)流程和死信隊(duì)列,最后介紹了消息隊(duì)列的一個(gè)特殊場(chǎng)景“延遲消息”。

第15章:使用Seata實(shí)現(xiàn)分布式事務(wù)。

這一章首先介紹分布式事務(wù)的基本概念,再通過(guò)傳統(tǒng)的XA事務(wù)模式了解分布式事務(wù)所要解決的問(wèn)題,了解XA模式在高并發(fā)場(chǎng)景下的性能瓶頸。然后,我們引出阿里開(kāi)源的Seata分布式事務(wù)框架,了解Seata內(nèi)置的多種分布式事務(wù)解決方案。在這個(gè)過(guò)程中,我們重點(diǎn)學(xué)習(xí)Seata官方推薦的AT方案,深入學(xué)習(xí)AT方案的原理及讀寫(xiě)隔離策略。最后,我們將AT方案集成到實(shí)戰(zhàn)項(xiàng)目中。

第16章:走進(jìn)容器化的世界。

這一章是容器部分的起始章節(jié),重點(diǎn)介紹了微服務(wù)落地的難點(diǎn):高內(nèi)聚和低耦合需求、異構(gòu)部署需求、云原生12因素、康威定律等,以及如何通過(guò)容器化技術(shù)來(lái)攻克難點(diǎn)。這一章縱向分析了容器技術(shù)的前世今生和未來(lái)展望,橫向比對(duì)了不同容器技術(shù)的差異和選擇。

第17章:Docker容器技術(shù)。

這一章從HelloWorld起步,介紹了Docker的安裝和容器的部署;講述了Docker的整體架構(gòu)和核心概念,包括鏡像、容器、存儲(chǔ)、網(wǎng)絡(luò)、倉(cāng)庫(kù)等;并以貫穿全書(shū)的優(yōu)惠券項(xiàng)目為例,講解了微服務(wù)Docker容器化改造的實(shí)戰(zhàn)細(xì)節(jié)。

第18章:Kubernetes基礎(chǔ)。

這一章是容器部分的核心章節(jié),從容器編排的概念到Kubernetes的整體框架,從Kubernetes的集群搭建到Pod、Controller、Namespace的控制管理,完整地闡述了Kubernetes容器編排的基礎(chǔ)。本章針對(duì)優(yōu)惠券項(xiàng)目,講解了應(yīng)該如何采用無(wú)狀態(tài)部署的方式進(jìn)行應(yīng)用容器的編排管理。

第19章:Kubernetes網(wǎng)絡(luò)互聯(lián)。

這一章介紹了Kubernetes的網(wǎng)絡(luò)互聯(lián)模型和主流的服務(wù)發(fā)現(xiàn)、負(fù)載均衡方式。本章針對(duì)優(yōu)惠券項(xiàng)目,實(shí)戰(zhàn)了不同類(lèi)型的應(yīng)用部署和服務(wù)發(fā)現(xiàn)手段。

第20章:Kubernetes數(shù)據(jù)存儲(chǔ)。

這一章介紹了Kubernetes的數(shù)據(jù)存儲(chǔ)模型,以及Volume卷、ConfigMap和Secret的管理。本章針對(duì)優(yōu)惠券項(xiàng)目講解了環(huán)境變量加載和應(yīng)用磁盤(pán)掛載的實(shí)戰(zhàn)細(xì)節(jié)。

第21章:Kubernetes高級(jí)功能。

這一章從安全性、可用性、擴(kuò)展性、易用性、可觀察性等多個(gè)角度描述了容器化部署的非功能性需求,并以?xún)?yōu)惠券項(xiàng)目為示范,實(shí)現(xiàn)了整套應(yīng)用的高可用、彈性擴(kuò)展和監(jiān)控告警。

第22章:Service Mesh。

這一章的核心是微服務(wù)的非侵入式治理。本章重點(diǎn)描述了Service Mesh的興起和優(yōu)勢(shì)、Istio框架的原理和架構(gòu),以及如何實(shí)現(xiàn)服務(wù)流量治理、服務(wù)安全增強(qiáng)、自動(dòng)化監(jiān)控追蹤。最后,以?xún)?yōu)惠券項(xiàng)目的全透明授權(quán)驗(yàn)證和拓?fù)浔O(jiān)控收尾。

第1章~第3章,第6章,第10章,作者卿睿;第4章,第5章,第7章~第9章,第11章~第15章,作者姚秋辰;第16章~第22章,作者張昕。

相關(guān)資源:

本書(shū)提供了一個(gè)GitHub項(xiàng)目供讀者學(xué)習(xí)和實(shí)踐,其中包括優(yōu)惠券項(xiàng)目的所有源碼。若讀者在啟動(dòng)項(xiàng)目的過(guò)程中遇到異常報(bào)錯(cuò),可以參考GitHub根目錄下的README文檔中的解決方案。具體下載方式可以參考下方(或封底)的讀者服務(wù)。

作者
2021年9月1日

主站蜘蛛池模板: 金溪县| 通河县| 榆树市| 天津市| 扬州市| 南投县| 万安县| 大田县| 资源县| 奈曼旗| 和龙市| 响水县| 乌审旗| 秦皇岛市| 牡丹江市| 四平市| 楚雄市| 汉寿县| 岱山县| 尼勒克县| 五家渠市| 玉门市| 江孜县| 夹江县| 桐乡市| 会宁县| 疏勒县| 蓬莱市| 平定县| 吴川市| 金华市| 霍州市| 寿光市| 娄烦县| 都昌县| 江华| 合山市| 乌苏市| 库伦旗| 济源市| 嵩明县|