\t\t\t\t\t\t\t\t\tSpring Cloud Alibaba 微服務原理與實戰
作 者:譚鋒(Mic) 著
定 價:106
出 版 社:電子工業出版社
出版日期:2020年04月01日
頁 數:408
裝 幀:平裝
ISBN:9787121388248
●目 錄章 微服務的發展史11.1 從單體架構到分布式架構的演進21.1.1 單體架構21.1.2 集群及垂直化31.1.3 SOA41.1.4 微服務架構51.2 微服務架構帶來的挑戰71.2.1 微服務架構的優點71.2.2 微服務架構面臨的挑戰71.3 如何實現微服務架構81.3.1 微服務架構圖81.3.2 微服務架構下的技術挑戰9第2章 微服務解決方案之Spring Cloud102.1 什麼是Spring Cloud112.2 Spring Cloud版本簡介122.3 Spring Cloud規範下的實現132.4 Spring Cloud Netflix142.5 Spring Cloud Alibaba152.5.1 Spring Cloud Alibaba的優勢152.5.2 Spring Cloud Alibaba的版本16第3章 Spring Cloud的核心之Spring Boot183.1 重新認識Spring Boot183.1.1 Spring IoC/DI193.1.2 Bean裝配方式的升級213.1.3 Spring Boot的價值233.2 快速構建Spring Boot應用253.3 Spring Boot自動裝配的原理263.3.1 自動裝配的實現273.3.2 EnableAutoConfiguration283.3.3 AutoConfigurationImportSelector293.3.4 自動裝配原理分析313.3.5 @Conditional條件裝配343.3.6 spring-autoconfigure-metadata373.4 手寫實現一個Starter383.4.1 Starter的命名規範383.4.2 實現基於Redis的Starter383.5 本章小結41第4章 微服務架構下的服務治理424.1 如何理解Apache Dubbo434.2 Apache Dubbo實現遠程通信444.3 Spring Boot集成Apache Dubbo484.4 快速上手ZooKeeper524.4.1 ZooKeeper的安裝524.4.2 ZooKeeper的數據結構524.4.3 ZooKeeper的特性534.4.4 Watcher機制544.4.5 常見應用場景分析544.5 Apache Dubbo集成ZooKeeper實現服務注冊564.5.1 Apache Dubbo集成ZooKeeper實現服務注冊的步驟574.5.2 ZooKeeper注冊中心的實現原理594.6 實戰Dubbo Spring Cloud604.6.1 實現Dubbo服務提供方604.6.2 實現Dubbo服務調用方634.7 Apache Dubbo的不錯應用654.7.1 集群容錯664.7.2 負載均衡674.7.3 服務降級684.7.4 主機綁定規則694.8 Apache Dubbo核心源碼分析704.8.1 源碼構建714.8.2 Dubbo的核心之SPI714.8.3 無處不在的自適應擴展點814.8.4 Dubbo中的IoC和AOP854.8.5 Dubbo和Spring完美集成的原理894.9 本章小結95第5章 服務注冊與發現975.1 什麼是Alibaba Nacos985.2 Nacos的基本使用995.2.1 Nacos的安裝995.2.2 Nacos服務注冊發現相關API說明1005.2.3 Nacos集成Spring Boot實現服務注冊與發現1015.3 Nacos的高可用部署1035.3.1 安裝環境要求1045.3.2 安裝包及環境準備1045.3.3 集群配置1045.3.4 配置MySQL數據庫1055.3.5 啟動Nacos服務1055.4 Dubbo使用Nacos實現注冊中心1065.5 Spring Cloud Alibaba Nacos Discovery1095.5.1 服務端開發1095.5.2 消費端開發1135.6 Nacos實現原理分析1155.6.1 Nacos架構圖1165.6.2 注冊中心的原理1165.7 深入解讀Nacos源碼1175.7.1 Spring Cloud什麼時候完成服務注冊1175.7.2 NacosServiceRegistry的實現1225.7.3 從源碼層面分析Nacos服務注冊的原理1235.7.4 揭秘服務提供者地址查詢1275.7.5 分析Nacos服務地址動態感知原理1305.8 本章小結132第6章 Nacos實現統一配置管理1336.1 Nacos配置中心簡介1346.2 Nacos集成Spring Boot實現統一配置管理1346.2.1 項目準備1346.2.2 啟動Nacos Server1356.2.3 創建配置1356.2.4 啟動服務並測試1376.3 Spring Cloud Alibaba Nacos Config1376.3.1 Nacos Config的基本應用1376.3.2 動態更新配置1396.3.3 基於Data ID配置YAML的文件擴展名1406.3.4 不同環境的配置切換1416.3.5 Nacos Config自定義Namespace和Group1426.4 Nacos Config 實現原理解析1456.4.1 配置的CRUD1456.4.2 動態監聽之Pull Or Push1466.5 Spring Cloud如何實現配置的加載1486.5.1 PropertySourceBootstrapConfiguration1486.5.2 PropertySourceLocator1506.6 Nacos Config核心源碼解析1526.6.1 NacosFactory.createConfigService1546.6.2 NacosConfigService構造1556.6.3 ClientWorker1556.6.4 ClientWorker.checkConfigInfo1576.6.5 LongPollingRunnable.run1576.6.6 服務端長輪詢處理機制1616.6.7 ClientLongPolling1646.7 本章小結167第7章 基於Sentinel的微服務限流及熔斷1687.1 服務限流的作用及實現1687.1.1 計數器算法1697.1.2 滑動窗口算法1707.1.3 令牌桶限流算法1717.1.4 漏桶限流算法1727.2 服務熔斷與降級1727.3 分布式限流框架Sentinel1747.3.1 Sentinel的特性1747.3.2 Sentinel的組成1757.3.3 Sentinel Dashboard的部署1757.4 Sentinel的基本應用1767.4.1 Sentinel實現限流1767.4.2 資源的定義方式1787.4.3 Sentinel資源保護規則1797.4.4 Sentinel實現服務熔斷1837.5 Spring Cloud集成Sentinel實踐1857.5.1 Sentinel接入Spring Cloud1857.5.2 基於Sentinel Dashboard來實現流控配置1877.5.3 自定義URL限流異常1897.5.4 URL資源清洗1897.6 Sentinel集成Nacos實現動態流控規則1907.7 Sentinel Dashboard集成Nacos實現規則同步1947.7.1 Sentinel Dashboard源碼修改1947.7.2 Sentinel Dashboard規則數據同步1997.8 Dubbo集成Sentinel實現限流2007.8.1 Dubbo服務接入Sentinel Dashboard2007.8.2 Dubbo服務限流規則配置2017.9 Sentinel熱點限流2037.9.1 熱點參數限流的使用2047.9.2 @SentinelResource熱點參數限流2057.9.3 熱點參數規則說明2067.10 Sentinel的工作原理2067.11 Spring Cloud Sentinel工作原理分析2077.12 Sentinel核心源碼分析2107.12.1 限流的源碼實現2107.12.2 實時指標數據統計2167.12.3 服務降級的實現原理2257.13 本章小結229第8章 分布式事務2308.1 分布式事務問題的理論模型2318.1.1 X/Open分布式事務模型2318.1.2 兩階段提交協議2338.1.3 三階段提交協議2348.1.4 CAP定理和BASE理論2368.2 分布式事務問題的常見解決方案2388.2.1 TCC補償型方案2388.2.2 基於可靠性消息的最終一致性方案2398.2.3 優選努力通知型2428.3 分布式事務框架Seata2438.3.1 AT模式2438.3.2 Saga模式2448.4 Seata的安裝2488.4.1 file存儲模式2488.4.2 db存儲模式2498.4.3 Seata服務端配置中心說明2518.5 AT模式Dubbo集成Seata2588.5.1 項目準備2598.5.2 數據庫準備2598.5.3 核心方法說明2608.5.4 項目啟動順序及訪問2648.5.5 整合Seata實現分布式事務2658.6 Spring Cloud Alibaba Seata2698.6.1 Spring Cloud項目準備2708.6.2 集成Spring Cloud Alibaba Seata2708.6.3 關於事務分組的說明2758.7 Seata AT模式的實現原理2768.7.1 AT模式階段的實現原理2778.7.2 AT模式第二階段的原理分析2798.7.3 關於事務的隔離性保證2808.8 本章小結283第9章 RocketMQ分布式消息通信2859.1 什麼是RocketMQ2859.1.1 RocketMQ的應用場景2869.1.2 RocketMQ的安裝2869.1.3 RocketMQ如何發送消息2879.1.4 RocketMQ如何消費消息2899.2 Spring Cloud Alibaba RocketMQ2919.2.1 Spring Cloud Alibaba RocketMQ架構圖2939.2.2 Spring Cloud Stream消息發送流程2949.2.3 RocketMQ Binder集成消息發送2999.2.4 RocketMQ Binder集成消息訂閱3039.2.5 Spring Cloud Stream消息訂閱流程3089.3 RocketMQ集群管理3149.3.1 整體架構設計3149.3.2 基本概念3159.3.3 為什麼放棄ZooKeeper而選擇NameServer3169.4 如何實現順序消息3189.4.1 順序消息的使用場景3189.4.2 如何發送和消費順序消息3199.4.3 順序發送的技術原理3219.4.4 普通發送的技術原理3229.4.5 順序消費的技術原理3249.4.6 並發消費的技術原理3259.4.7 消息的冪等性3259.5 如何實現事務消息3269.5.1 事務消息的使用場景3269.5.2 如何發送事務消息3279.5.3 事務消息的技術原理3309.6 高性能設計3319.6.1 順序寫盤3339.6.2 消費隊列設計3349.6.3 消息跳躍讀取3369.6.4 數據零拷貝3369.6.5 動態伸縮能力3369.6.6 消息實時投遞3379.7 高可用設計3389.7.1 消息發送重試機制3399.7.2 故障規避機制3409.7.3 同步刷盤與異步刷盤3439.7.4 主從復制3509.7.5 讀寫分離3519.7.6 消費重試機制3519.7.7 ACK機制3529.7.8 Broker集群部署3529.8 本章小結3530章 微服務網關之Spring Cloud Gateway35410.1 API網關的作用35510.1.1 統一認證鋻權35610.1.2 灰度發布35710.2 網關的本質及技術選型35810.2.1 OpenResty35810.2.2 Spring Cloud Zuul36010.2.3 Spring Cloud Gateway36110.3 Spring Cloud Gateway網關實戰36110.3.1 spring-cloud-gateway-service36110.3.2 spring-cloud-gateway-sample36210.4 Spring Cloud Gateway原理分析36310.5 Route Predicate Factories36410.5.1 指定時間規則匹配路由36510.5.2 Cookie匹配路由36510.5.3 Header匹配路由36610.5.4 Host匹配路由36610.5.5 請求方法匹配路由36710.5.6 請求路徑匹配路由36710.6 Gateway Filter Factories36710.6.1 GatewayFilter36810.6.2 GlobalFilter37210.7 自定義過濾器37510.7.1 自定義GatewayFilter37510.7.2 自定義GlobalFilter37710.8 Spring Cloud Gateway集成Nacos實現請求負載37810.9 Spring Cloud Gateway集成Sentinel網關限流38110.9.1 Route維度限流38210.9.2 自定義API分組限流38410.9.3 自定義異常38610.9.4 網關流控控制臺38710.9.5 網關限流原理38810.10 本章小結389
內容簡介
本書針對Spring Cloud Alibaba生態下的技術組件從應用到原理進行全面的分析,涉及的技術組件包括分布式服務治理Dubbo、服務配置和服務注冊中心Nacos、分布式限流與熔斷Sentinel、分布式消息通信RocketMQ、分布式事務Seata及微服務網關Spring Cloud Gateway。由於Spring Cloud中所有的技術組件都是基於Spring Boot微服務框架來集成的,所以對於Spring Boot的核心原理也做了比較詳細的分析。本書中涉及的所有技術組件,筆者都采用“場景→需求→解決方案→應用→原理”高效技術學習模型進行設計,以便讓讀者知其然且知其所以然。在“原理”部分,筆者采用大量的源碼及圖形的方式來進行分析,幫助讀者達到對技術組件深度學習和理解的目標。