百人牛牛棋牌
高可用可伸縮微服務架構:基于Dubbo、Spring Cloud和Service Mesh
  • 推薦0
  • 收藏4
  • 瀏覽998

高可用可伸縮微服務架構:基于Dubbo、Spring Cloud和Service Mesh

程超 (作者) 

  • 書  號:978-7-121-36213-2
  • 出版日期:2019-05-01
  • 頁  數:528
  • 開  本:16(185*235)
  • 出版狀態:上市銷售
紙質版 ¥108.00

相關圖書

微服務架構實戰

張鋒 (作者)

本書從大型網站的架構設計模式以及技術造型著手,以Spring Cloud和Docker為構建框架,實現橫向可擴展的高可用架構。項目分層清晰,包括完備的質量和監控...

¥89.00

架構探險:輕量級微服務架構(下冊)

黃勇 (作者)

本書將重點關注微服務基礎設施方面,其中大部分內容涉及微服務運維相關技術。全書以實踐的角度進行編寫,讀者首先將學習到輕量級微服務架構的全景視圖,隨后的各個章節將圍...

¥79.00

Spring Cloud微服務實戰

翟永超 (作者)

本書從時下流行的微服務架構概念出發,詳細介紹了Spring Cloud針對微服務架構中幾大核心要素的解決方案和基礎組件。對于各個組件的介紹,本書主要以示例與源碼...

¥59.00

Node.js微服務

David Gonzalez (作者) 趙震一 (譯者)

本書對如何采用Node.js及其生態工具進行微服務開發的最佳實踐做了全面的介紹,內容包括對微服務架構基本概念及設計原則的講解,以及如何采用Node.js搭配Se...

¥45.00

Java微服務

盧濤 (作者) 盧濤 盧濤 (譯者)

微服務是利用云平臺開發企業應用程序的最新技術,它是小型、輕量和過程驅動的組件。微服務適合設計可擴展、易于維護的應用程序。它可以使開發更容易,還能使資源得到最佳利...

¥69.00

輕量級微服務架構(上冊)

黃勇 (作者)

本書從開發與運維兩方面分別對微服務架構的實踐過程進行描述,全書分為上下兩冊,上冊偏重于開發,下冊偏重于運維。在上冊中讀者會學習到微服務架構所需的開發技能,使用 ...

¥65.00
近年來微服務架構已經成為大規模分布式架構的主流技術,越來越多的公司已經或開始轉型為微服務架構。本書不以某一種微服務框架的使用為主題,而是對整個微服務生態進行系統性的講解,并結合工作中的大量實戰案例為讀者呈現一本讀完即可實際上手應用的工具書。
書中的理論部分介紹了微服務架構的發展歷程,通俗地講解了領域驅動設計,幫助讀者更好地利用DDD來建模和劃分服務;微服務穩定性保證的常用手段和微服務下如何保證事務的一致性這兩章凝聚了作者多年的積累和思考,相信讀者看完后會有不一樣的感觸和收獲;書中實戰部分的內容非常豐富,以項目為基礎,逐層介紹常見的Dubbo、Spring Cloud和Service Mesh框架的具體使用方法,并對實現原理進行剖析;書中還以具體案例全面介紹了微服務雙活體系建設、微服務監控與告警、微服務編排、百億流量微服務網關的設計與實現,以及基于支付場景下的微服務改造等,并讓讀者了解如何借助微服務來增強和重構現有的遺留系統。
不管是剛接觸微服務的新手,還是正在嘗試借助微服務解放生產力的開發人員或運維人員,甚至是立志于構建高可用可伸縮的微服務體系的技術Leader和架構師,閱讀本書,對讀者必有裨益。
本書講解如何通過Dubbo、Spring Cloud、Service Mesh等技術來構建微服務體系,并深入淺出地介紹了微服務架構發展歷程、領域驅動設計、穩定性保證的常用手段、分布式事務的一致性方案。
程超,網名小程故事多,現任某公司高級架構師,超過12年的Java研發經驗,8年技術管理和架構經驗,熟悉支付和電商領域,擅長微服務生態建設和運維監控,對Dubbo、Spring Cloud和gRPC等微服務框架有深入研究,幫助多家公司進行過微服務建設和改造。合著作品《深入分布式緩存》,阿里云MVP、云棲社區外部專家、Codingfly社區特聘技術專家、CSDN博主專家。
梁桂釗,現任某互聯網公司高級開發工程師,參與過內容分發、K12 教育、淘系電商等項目。目前,專注于新零售電商服務的業務摸索和電商服務創新實踐。具有Java核心技術、微服務、分布式、高并發等領域一線實戰經驗,并對新興技術方向和各種開源框架有濃厚興趣。公眾號「服務端思維」的作者。
秦金衛(KimmKing),現任某公司高級技術總監/Apache Dubbo PPMC,阿里前架構師/某商業銀行北京研發中心負責人。關注互聯網、電商、金融、支付、區塊鏈等領域,10多年研發管理和架構經驗,對于中間件、SOA、微服務,以及各種開源技術非常熱衷,活躍于Dubbo、Fastjson、Mule、ActiveMQ等多個開源社區。個人博客http://kimmking.github.io。
方志斌,現任某物聯網公司高級研發工程師。目前專注于大型物聯網平臺架構的設計與開發工作。對于微服務、分布式、集群有一定的研究和實戰經驗。對Java領域的開源框架有濃厚的興趣,喜歡深入分析、總結框架源碼。SpringForAll社區核心成員,組織多次社區技術專題、問答等活動。
張逸,架構編碼實踐者,微服務架構設計者,領域驅動設計布道師,大數據平臺架構師。著譯作包括《軟件設計精要與模式》《恰如其分的軟件架構》《人件》等。個人微信公眾號為「逸言」,個人博客:http://zhangyi.xyz。
杜琪,網名阿杜,現任螞蟻金服高級研發工程師,2015年6月畢業于南開大學,計算機系統結構碩士。畢業后開始接觸分布式業務系統開發,曾在有贊負責用戶中心基礎服務,對分布式業務系統的穩定性、可靠性有豐富的經驗。喜歡研究底層技術,喜歡研究疑難技術問題,例如JVM內存問題排查、GC調優,等等。有對外輸出分享的習慣,是公眾號javaadu的維護者。
殷琦,網名滌生,現任“美團點評”技術專家,2015年3月畢業于東華大學,軟件工程碩士。2015年3月加入“美團點評”基礎架構部,開始接觸微服務架構,之后一直從事服務框架的研發工作,對微服務架構發展與演進有非常深刻的認識。個人比較喜歡研究并分享新技術,時刻關注并實踐微服務架構最前沿的技術,如Service Mesh、Serverless 等。
肖冠宇,曾就職于小米、人民網等互聯網公司,具有豐富的大數據一線實戰經驗,專注大數據處理技術及機器學習算法研究。著有《企業大數據處理:Spark、Druid、Flume與Kafka應用實踐》《Python3快速入門與實戰》等書籍。
前言



微服務這個概念最早是在2011年5月在意大利威尼斯的一個軟件架構會議上討論并提出的,用于描述一些作為通用架構風格的設計原則。2012年3月在波蘭克拉科夫舉行的“第33屆學位會議”上,ThoughtWorks公司的首席咨詢師James Lewis做了題為“Microservices - Java, the Unix Way”的演講(http://2012.33degree.org/talk/show/67),這次演講里James討論了微服務的一些原則和特征,例如單一服務職責、康威定律、自動擴展、DDD等。
微服務架構則是由Fred George在2012年的一次技術大會上所提出的(http://oredev.org/ oredev2012/2012/sessions/micro-service-architecture.html),在大會的演講中,他講解了如何分拆服務,以及如何利用MQ來進行服務間的解耦,這就是最早的微服務架構的雛形。而后由Martin Fowler發揚光大,并且在2014年發表了一篇著名的文章(https://martinfowler.com/articles/ microservices.html),這篇文章深入全面地講解了什么是微服務架構。隨后,微服務架構逐漸成為一種非常流行的架構模式,一大批的技術框架和文章涌現出來,越來越多的公司借鑒和使用微服務架構。
然而微服務并不能“包治百病”,我們在實施的過程中不能簡單地使用某些個微服務框架或組件一蹴而就,而是需要將業務、技術和運維有機地結合起來,配合同步實施,并且在此過程中還需要踩過很多的“坑”才能取得成功。
本書的每一個章節都是相關領域的專家經過多年的技術積累提煉而成的。秉承以理論為基礎,以大量企業實戰案例為核心的宗旨。本書深入全面地介紹微服務架構的實施方法,以及在實施過程中所遇到的問題和解決方案,是一本內容翔實、“可落地”的理論與實踐相結合的技術書籍。
不忘初心,方得始終
在2017年8月份的一次技術大會上,我與電子工業出版社博文視點公司的編輯陳曉猛相識。我們溝通了很久,并且在很多想法上是高度一致的,由此我萌生了想寫一本技術書籍的念頭。關于書的主題,我考慮了很久,特別是對于自己近幾年的工作經驗的思考和總結,最終決定以“微服務”作為主題。
最初我邀請了秦金衛和方志斌作為寫作團隊的成員。我們三人在創作思路上一拍即合,計劃以微服務架構的概念和內容,Dubbo和Spring Cloud的原理和實踐,以及我們在工作中的各種思考和最佳實踐為主體內容,三人分工協作,創作一本業內前沿的微服務架構書籍。然而寫作卻是一個漫長的過程,需要的不僅是一腔熱血,還需要持之以恒的精神。這個過程中我們三人都因為各自的事情很忙導致寫作時停時續,甚至想過放棄,但我們始終沒有忘卻初心,互相鼓勵堅持下去。志斌工作較忙經常出差,以至于我看到他經常在凌晨二三點的時候還在更新文章;金衛一直有很多好的想法,給我們寫作提供了很多有用的建議,我們也是經常溝通到半夜。在這個不斷有思想火花碰撞的過程中,我們決定增加了一些章節使本書的整體內容更豐富全面、實用性更強。于是我又邀請了梁桂釗、杜琪、張逸、殷琦和肖冠宇五位朋友加入,為本書注入新的能量。桂釗雖然加入較晚,但卻非常投入,參與寫作了很多章節;杜琪在加入寫作之時寶寶還沒有降生,現在應該也有半歲了;張逸、殷琦和冠宇在本書快完成之時緊急馳援,高效地完成了各自負責的章節。我們寫作團隊的成員都不在一個城市,來自祖國各地,但我們為了初心而凝聚在一起,這就是大家的團隊精神。
歷時近一年半的書即將出版了,我內心的激動難以言表。除了感謝寫作團隊,我還要感謝編輯陳曉猛對我的不斷鼓勵和大力支持,感謝好友王文斌提供了好多有用的建議。我也要感謝家人對我的支持,在這本書出版之際,我的兒子多多剛滿三歲,我要感謝兒子,讓我“借用”了很多原本陪伴他成長的寶貴時間。
最后我想說的是,我們團隊不全是微服務架構方面的技術專家,但是大家基于共同的對微服務架構技術的熱愛和樂于分享知識經驗的精神,我們把微服務架構領域的各類知識,以及自己平常的經驗和積累做了完整的梳理和總結,凝結為這樣一本技術書,作為2019年的一份禮物呈現給大家,歡迎大家共同探討和交流。
本書適合的讀者
本書講解如何通過Dubbo、Spring Cloud、Service Mesh等技術來構建微服務體系,并深入淺出地介紹了微服務架構發展歷程、領域驅動設計、穩定性保證的常用手段、分布式事務的一致性方案;本書還通過大量的案例探討微服務落地方案,例如雙活體系建設、分布式監控、微服務編排、百億流量微服務網關的設計與實現、基于支付場景下的微服務改造等;書籍后半部展示了實現微服務架構的完整藍圖,并讓讀者了解如何借助微服務來增強和重構現有的遺留系統。無論剛接觸微服務的新手,還是正在嘗試借助微服務解放生產力的開發人員或運維人員,或者是立志于構建高可用可伸縮的微服務體系的架構師,閱讀本書,對讀者必有裨益。
本書內容
本書共14章,每章的具體內容如下。
第1章:微服務架構概述(作者秦金衛)。
本章從軟件架構的發展歷程講起,分別對單體架構、SOA架構和微服務架構的演進過程做了深入淺出的講解,同時深入介紹了微服務架構的特點,希望以宏觀的視角為讀者打開微服務的大門。
第2章:微服務領域驅動設計(作者張逸)。
本章介紹了領域驅動設計是什么,常見的領域架構有哪些,如何將領域驅動應用到微服務中,以及如何使用領域驅動進行合理的服務劃分等,幫助讀者在正式學習微服務前修煉“內功”。
第3章:Apache Dubbo框架的原理與實現(作者程超)。
目前Dubbo已經被阿里巴巴技術團隊重新維護并且得到了大力的發展和推廣,使用Dubbo可以很好地進行微服務建設,本章較為深入地講解了Dubbo的使用和技巧,以及通過時源碼的深入分析能夠讓讀者對Dubbo的原理實現有一個全面的認識。
第4章:Spring Boot/Spring Cloud實踐(作者方志斌)。
Spring Boot/Cloud是目前較為流行的微服務框架,本章以大量的實戰案例為線索,為讀者講解如何才能使用好Spring Cloud框架,講解如何避免在使用過程中“踩坑”。
第5章:微服務穩定性保證的常用手段(作者杜琪)。
在業務發展越來越快,規模也越來越大的情況下,我們所面臨的就是如何在服務越來越多的情況下保證微服務架構的穩定性,本章講解保障穩定性的常用技巧和手段。
第6章:微服務下如何保證事務的一致性(作者梁桂釗)。
本章介紹了從本地事務到分布式事務的演變,深入分析了微服務在強一致性場景和最終一致性場景下的解決方案,探討了二階段提交協議、三階段提交協議、TCC模式、補償模式、可靠事件模式等。同時,對開源項目的分布式事務進行解讀,包括 RocketMQ 和 ServiceComb。
第7章:百億流量微服務億級網關的設計與實現(作者秦金衛)。
本章從百億流量交易系統微服務網關(API Gateway)的現狀和面臨問題出發,闡述微服務架構與 API 網關的關系,理順流量網關與業務網關的脈絡,分享全面的API網關知識與經驗。
第8章:微服務編排(作者程超)。
本章以Netflix Conductor框架為核心,從框架的使用和原理的角度深入介紹了什么是微服務編排,為微服務執行復雜的業務邏輯提供了一種新的思路。
第9章:微服務數據抽取與統計(作者肖冠宇)。
在微服務架構下,服務必將越來越多,在這種情況下進行數據統計和分析將變得非常困難,本章將深入講解如何從不同服務的數據庫中抽取數據到統一的大數據平臺中,幫忙使用者更方便地進行數據的統計。
第10章:微服務雙活體系建設(作者程超)。
在企業發展規模越來越大的情況下,用戶對系統的穩定性要求也越來越高,那么單機房部署勢必成為發展的瓶頸,本章將以實際案例出發講解同城雙活的建設。
第11章:基于支付場景下的微服務改造與性能優化(作者程超)。
本章從實際的案例出發,在具體的支付業務場景下,從一個新項目開始逐步講解如何利用領域驅動劃分服務,如何利用微服務框架進行服務治理,以及項目完成后怎樣提升微服務架構的性能。
第12章:遺留系統的微服務架構改造(作者梁桂釗)。
本章介紹了遺留系統的微服務架構改造,梳理了代碼分層結構的轉變,提出一個新的代碼分層思路來應對微服務的流行與普及,并深入思考了遺留系統的債券,深入探討單體系統拆分服務的方法論。同時,對遺留系統的微服務架構改造的解決方案給出9個切實可行的核心實踐思路。
第13章:Service Mesh詳解(作者殷琦)。
隨著微服務的持續發展,下一代微服務架構已然出現,本章將深入介紹Service Mesh的發展歷程,以及結合具體案例帶領讀者使用Istio進行具體實踐。
第14章:微服務監控實戰(作者程超)。
本章重點介紹APM的原理,從零開始開發APM監控系統,還深入介紹Prometheus的安裝和原理,以及如何使用Prometheus進行監控和預警。
由于本書寫作匆忙,難免有錯漏之處,后續可以通過勘誤的方式不斷優化,歡迎讀者多提寶貴意見。

目錄



目錄




第1章 微服務架構概述 1
1.1 什么是架構 1
1.2 幾個相關概念 3
1.3 從軟件的生命周期看架構設計 7
1.4 架構的形式與特點 9
1.5 架構的目標與方法 13
1.6 架構的不同風格 18
第2章 微服務領域驅動設計 30
2.1 領域驅動設計 31
2.1.1 領域驅動設計概覽 31
2.1.2 問題域與解決方案域 34
2.1.3 限界上下文 35
2.1.4 上下文映射 40
2.1.5 領域架構 43
2.2 微服務的設計 48
2.2.1 限界上下文的邊界 48
2.2.2 限界上下文即微服務 51
2.2.3 識別限界上下文 53
2.2.4 微服務之間的協作 59
2.3 小結 63
第3章 Apache Dubbo框架的原理與實現 64
3.1 Dubbo框架的選型與使用 64
3.1.1 Dubbo框架的選型 64
3.1.2 Dubbo框架的使用 65
3.2 Dubbo框架的原理分析 70
3.2.1 總體架構分析 70
3.2.2 Dubbo Bean的加載 73
3.2.3 Dubbo Extension機制 77
3.2.4 Dubbo消費端 91
3.2.5 Dubbo服務端 126
3.2.6 Dubbo的通信機制 144
3.3 基于Dubbo的自動化Mock系統 165
3.3.1 Mock模擬系統的產生 166
3.3.2 Dubbo Mock的使用 167
3.3.3 Dubbo Mock的原理解析 168
3.3.4 自動化Mock系統的實現 170
第4章 Spring Boot/Spring Cloud實踐 177
4.1 Spring Boot原理剖析 178
4.1.1 Spring Boot Quick Start 178
4.1.2 Spring Boot之SpringApplication 180
4.1.3 spring-boot-loaded模塊分析 186
4.1.4 spring-boot-autoconfigure模塊分析 190
4.1.5 Spring Boot Conditional注解分析 195
4.2 Dubbo Spring Boot Starter 198
4.2.1 Dubbo Spring Boot Starter簡介 198
4.2.2 Dubbo Initializr及sample 198
4.2.3 dubbo-spring-boot-autoconfigure模塊 201
4.2.4 dubbo-spring-boot-actuator模塊 204
4.3 Spring Cloud棧 211
4.3.1 為什么微服務架構需要Spring Cloud 212
4.3.2 Spring Cloud技術棧總覽 214
4.3.3 spring-cloud-scaffold基礎庫集合 215
4.4 基于Maven Archetype的腳手架 239
4.4.1 Maven Archetype 239
4.4.2 腳手架的搭建 240
4.4.3 生成腳手架 247
第5章 微服務穩定性保證的常用手段 250
5.1 微服務的穩定性 250
5.2 高可用 250
5.2.1 限流原理與實現 250
5.2.2 斷路器原理與實現 256
5.2.3 超時與重試 260
5.3 高并發 262
5.3.1 異步 263
5.3.2 緩存 270
5.4 總結 272
第6章 微服務下如何保證事務的一致性 273
6.1 從本地事務到分布式事務的演變 273
6.2 強一致性解決方案 276
6.2.1 二階段提交協議 276
6.2.2 三階段提交協議 278
6.3 最終一致性解決方案 280
6.3.1 TCC模式 280
6.3.2 補償模式 285
6.3.3 可靠事件模式 286
6.4 開源項目的分布式事務實現解讀 288
6.4.1 Apache RocketMQ 288
6.4.2 ServiceComb 289
第7章 百億流量微服務網關的設計與實現 293
7.1 API網關概述 293
7.1.1 分布式服務架構、微服務架構與 API 網關 293
7.1.2 API網關的定義、職能與關注點 296
7.1.3 API網關的分類與技術分析 298
7.2 開源網關的分析與調研 300
7.2.1 常見的開源網關介紹 300
7.2.2 四大開源網關的對比分析 308
7.2.3 開源網關的技術總結 309
7.3 百億流量交易系統API網關設計 310
7.3.1 百億流量交易系統API網關的現狀和面臨問題 310
7.3.2 業務網關的設計與最佳實踐 313
第8章 微服務編排 317
8.1 Netflix Conductor 317
8.2 Netflix Conductor的架構 319
8.3 Conductor的使用案例 320
8.4 Netflix Conductor源碼分析 328
8.4.1 Client層源碼分析 330
8.4.2 Server端源碼分析 337
8.4.3 core端源碼分析 344
第9章 微服務數據抽取與統計 356
9.1 案例小故事 356
9.2 數據倉庫概述 358
9.2.1 什么是數據倉庫 358
9.2.2 數據倉庫架構 360
9.2.3 數據倉庫建模方法 361
9.2.4 數據抽取、轉換和加載 361
9.2.5 數據統計 362
9.3 數據倉庫工具Hive 362
9.3.1 安裝Hive 364
9.3.2 Hive數據庫 366
9.3.3 Hive表 367
9.4 使用Sqoop抽取數據 369
9.4.1 安裝Sqoop 370
9.4.2 將MySQL表數據導入Hive表 372
9.5 ETL作業調度 375
第10章 微服務雙活體系建設 377
10.1 系統高可用 377
10.2 雙活數據中心 379
10.2.1 單機房部署 379
10.2.2 雙機房部署 380
10.2.3 基于支付場景的雙活體系建設 383
第11章 基于支付場景下的微服務改造與性能優化 399
11.1 支付場景的介紹 399
11.2 支付業務建模和服務劃分 400
11.3 支付場景下微服務架構的詳解與分析 402
11.3.1 業務架構分析 402
11.3.2 技術平臺詳解 404
11.4 從代碼層面提升微服務架構的性能 407
11.4.1 從代碼和設計的角度看 407
11.4.2 從整體架構的角度看 418
11.5 微服務架構中常見的一些故障分析技巧 421
第12章 遺留系統的微服務架構改造 426
12.1 代碼分層結構的轉變 426
12.2 遺留系統的債券與思考 430
12.3 從單體系統拆分服務的方法論 431
12.4 遺留系統的微服務架構改造 436
12.4.1 從代碼重構開始 436
12.4.2 拆分服務需要面向服務進行架構設計 437
12.4.3 改造是一個漸進的過程 437
12.4.4 單元測試是基石 440
12.4.5 面向失敗的設計 440
12.4.6 前后端分離 441
12.4.7 共享現有數據庫 441
12.4.8 灰度發布的必要性 442
12.4.9 日志聚合與全鏈路監控 442
第13章 Service Mesh詳解 443
13.1 Service Mesh是什么 443
13.2 Service Mesh的背景 443
13.3 Service Mesh介紹 444
13.3.1 Service Mesh架構 444
13.3.2 Service Mesh能做什么 445
13.4 Service Mesh的價值 446
13.5 Service Mesh現狀 447
13.6 Service Mesh存在的問題 448
13.7 Istio詳解 449
13.7.1 Istio架構 449
13.7.2 數據平面 450
13.7.3 控制平面 455
13.7.4 Isito案例 458
13.8 Service Mesh展望 461
第14章 微服務監控實戰 463
14.1 APM原理與應用 464
14.1.1 什么是APM 464
14.1.2 APM監控點 464
14.1.3 APM深入解析 464
14.2 Prometheus監控系統介紹 492
14.2.1 Prometheus的主要特點 493
14.2.2 Prometheus的架構及組件介紹 493
14.2.3 Prometheus的安裝 494
14.2.4 使用Prometheus對MySQL進行監控 498
14.2.5 Prometheus的告警機制 501

讀者評論

  • 后續會把項目包放出來嗎

    卡卡羅伯特發表于 2019/7/7 14:16:39
  • 請問哪里有源碼?書上的例子有的沒的,不利于理解。

    lhzxxy發表于 2019/6/11 15:36:15
  • 把篇幅較長的代碼文件做成壓縮包,壓縮包呢 找不到啊

    15261279943hyb發表于 2019/5/21 15:57:09
    • 下載資源中的【代碼文件】

      陳曉猛發表于 2019/5/21 16:25:53
  • 沒有代碼怎么看啊

    15261279943hyb發表于 2019/5/21 15:55:47
  • 我覺得書上的例子都,有以項目代碼包的形似發出來比較好,比如第三章的 那幾個項目文件。我是想著對著代碼看書的解析的,可能我太懶了,沒有自己去搭建。

    wangfulin發表于 2019/5/9 22:21:59
    • 自己動手,理解得更深刻

      陳曉猛發表于 2019/5/10 7:29:50

圖書類別

相關博文

百人牛牛棋牌