Spring Cloud Alibaba微服務開發零基礎入門到實操(視頻教學版)

孫衛琴

  • Spring Cloud Alibaba微服務開發零基礎入門到實操(視頻教學版)-preview-1
  • Spring Cloud Alibaba微服務開發零基礎入門到實操(視頻教學版)-preview-2
  • Spring Cloud Alibaba微服務開發零基礎入門到實操(視頻教學版)-preview-3
Spring Cloud Alibaba微服務開發零基礎入門到實操(視頻教學版)-preview-1

相關主題

商品描述

"本書以技術新手阿雲的巧妙提問和答主的點睛指導為引線,以Spring Cloud Alibaba微服務開發框架 為脈絡,帶領讀者全面系統地探索Spring Cloud Alibaba微服務開發過程中應用到的技術和解決方案。 本書技術包含了各種組件及框架的用法,包括註冊和配置中心Nacos、負載均衡器LoadBalancer、遠程 調用組件OpenFeign、遠程調用框架Dubbo、流量控制組件Sentinel、網關組件GateWay、消息驅動框架 Stream及消息中間件RocketMQ、鏈路追蹤組件SkyWalking、分佈式事務管理框架Seata、分庫分表中間件 ShardingSphere、分佈式緩存數據庫Redis、分佈式任務調度框架XXL-JOB。 技術新手阿雲在開發過程中的巧妙提問,能夠激發讀者主動學習的興趣;而答主的巧妙解答和本書知 識結構的設計,把看似深奧復雜的分佈式微服務系統如庖丁解牛般解析得淺顯易懂。本書不僅詳細介紹了 各種組件及框架技術的使用步驟,而且運用了許多生動形象的生活化比喻,幫助讀者理解這些技術的運作 原理。 本書中的範例具有實用性,整合了Spring Boot、Spring Cloud Alibaba、Hibernate、Mybatis、 DruidDataSource、HikariDataSource、lombok軟件包、SLF4J等流行的框架或工具軟件。 本書主要面向具有Java編程基礎的開發人員和在校學生。對於不熟悉Java編程的讀者,通過閱讀本 書,也能瞭解Spring Cloud Alibaba框架的基本用法和微服務開發的核心思想。本書還可作為高校和企業的 微服務開發教材。"

目錄大綱

目 錄

第1 章 微服務簡介      1

1.1微服務的概念與特徵 1

1.1.1微服務按照業務進行劃分 1

1.1.2微服務運行在獨立的進程中 2

1.1.3微服務採用簡單協議通信 2

1.1.4微服務採用統一的管理框架 3

1.2Spring Cloud框架概述 4

1.3Spring Cloud Alibaba框架概述 5

1.4各種軟件的版本匹配 6

1.5搭建微服務的開發和運行環境 7

1.5.1安裝Intellij IDEA 7

1.5.2為IDEA配置Maven 7

1.5.3安裝和啟動Nacos服務器 8

1.5.4訪問Nacos服務器的管理平臺 9

1.5.5查看Nacos服務器的日誌 10

1.6雲原生的概念 10

1.7 小結 11

第2 章 範例:helloapp項目    12

2.1提供者和消費者的通信及實現原理 12

2.2在IDEA中創建helloapp項目 13

2.3創建hello-provider模塊 14

2.3.1在IDEA中創建hello-provider 模塊 14

2.3.2在pom.xml文件中添加Spring Cloud Alibaba依賴 15

2.3.3創建控制器類

HelloProviderController 19

2.3.4在application.properties文件中配置微服務 20

2.3.5啟動hello-provider模塊 20

2.4創建hello-consumer模塊 21

2.4.1在IDEA中創建hello-consumer 模塊 21

2.4.2在啟動類中加入@EnableFeignClients註解 23

2.4.3創建HelloFeignService接口 23

2.4.4創建控制器類HelloConsumerController 24

2.4.5在application.properties文件中配置微服務 25

2.4.6啟動和訪問hello-consumer 模塊 25

2.4.7HelloFeignService接口的默認方法 26

2.5啟動微服務的多個實例 26

2.6LoadBalancer負載均衡器 29

2.7通過RestTemplate類訪問微服務 30

2.7.1使用LoadBalancerClient接口整合 31

2.7.2使用@LoadBalanced註解整合 32

2 .8 小結 33

第3 章 微服務的註冊與發現      34

3.1Nacos Discovery組件的配置屬性 35

3.1.1禁止註冊微服務 36

3.1.2Nacos Discovery組件的客戶端緩存 37

3.1.3微服務的分組和命名空間 37

3.2微服務的健康檢測 38

3.2.1微服務的臨時實例 39

3.2.2微服務的永久實例 39

3.3訪問DiscoveryClient接口 40

3.4通過Actuator監控Nacos Discovery組件的端點 42

3.5Nacos Discovery組件對微服務列表的監控 43

3.6 小結 44

第4 章 Nacos服務器配置中心      45

4.1在Nacos服務器中創建配置屬性 46

4.2在微服務中讀取配置屬性 47

4.2.1創建bootstrap.properties配置文件 47

4.2.2Nacos Config組件的配置屬性 48

4.2.3通過Environment對象讀取配置屬性 49

4.2.4通過@Value註解讀取配置屬性 50

4.2.5通過@ConfigurationProperties 註解讀取配置屬性 51

4.3配置單元的Data ID、分組和命名空間 52

4.4配置屬性的動態更新 54

4.5不同環境下配置屬性的切換 54

4.6擴展的配置單元 56

4.7監控Nacos Config組件的端點 58

4.8設置YAML格式的配置屬性 60

4.9配置屬性的持久化 60

4.10配置屬性的回滾 62

4.11 小結 64

第5 章 Nacos集群    65

5.1Nacos集群的Raft算法 65

5.1.1節點之間數據的同步 66

5.1.2節點的選舉機制 66

5.2搭建Nacos集群 67

5.2.1配置Nacos節點 68

5.2.2啟動Nacos節點 69

5.2.3避免Nacos節點之間的埠沖突 69

5.2.4Nacos集群的選舉 69

5.2.5通過微服務訪問Nacos集群 71

5.2.6Nacos集群的同步 71

5.3Nacos集群的AP和CP運行模式 72

5.4使用Nginx反向代理服務器  73

5.5通過Keepalived建立Nginx集群 76

5.6 小結 80

第6 章 遠程調用組件:OpenFeign 81

6.1優化設定所訪問的微服務的名字 81

6.2優化設定映射URL的根路徑 82

6.3輸出詳細日誌 83

6.4請求數據和響應數據的壓縮 84

6.5超時配置 85

6.6異常處理 87

6.6.1OpenFeign與Sentinel的整合 87

6.6.2創建回調類 87

6.6.3創建回調類和工廠類 89

6.7傳遞對象參數 91

6.7.1傳遞簡單對象 92

6.7.2傳遞復雜對象 93

6.8 小結 94

第7 章 遠程調用框架:Dubbo     95

7.1比較Dubbo和OpenFeign 95

7.2創建採用Dubbo框架的範例 96

7.2.1創建hello-provider模塊 96

7.2.2創建hello-consumer模塊... 100

7.2.3消費者遠程訪問提供者 101

7.3超時時間和重試次數設置 102

7.4異常處理 104

7.5傳遞復雜對象類型數據 104

7.6負載均衡 106

7.7Dubbo與Sentinel的整合 108

7.8提供者回調消費者 111

7.9消費者異步調用提供者的服務方法 115

7.10 小結 117

第8 章 流量控制組件:Sentinel      118

8.1微服務容錯的基本原理 118

8.2微服務與Sentinel的整合 121

8.2.1hello-consumer模塊與Sentinel的整合 121

8.2.2安裝Sentinel控制台 122

8.2.3在Sentinel控制臺中查看微服務的流量 123

8.3流控規則 124

8.3.1流控模式 125

8.3.2流控效果 127

8.4熔斷規則 128

8.4.1慢調用比例 129

8.4.2異常比例 129

8.4.3 異常數 130

8.5系統規則 131

8.6授權規則 132

8.7@SentinelResource註解 133

8.7.1熱點規則 133

8.7.2請求被拒絕的處理方式 135

8.7.3對異常的處理 136

8.8自定義處理BlockException異常的方式 138

8.9集群流控 140

8.9.1集群流控的原理 140

8.9.2Token Server的部署模式 141

8.9.3配置集群流控 142

8.10Sentinel規則的持久化 146

8.10.1流控規則的持久化 146

8.10.2熔斷規則的持久化 148

8.10.3系統規則的持久化 150

8.11 小結 151

第9 章 網關組件:GateWay            152

9.1GateWay簡介 152

9.2創建網關服務模塊 153

9.3GateWay與Nacos的整合 155

9.4 斷言 157

9.4.1內置的斷言工廠類 157

9.4.2自定義斷言工廠類 159

9.5 過 濾器 162

9.5.1局部內置過濾器 163

9.5.2默認過濾器 167

9.5.3全局內置過濾器 167

9.5.4自定義局部過濾器 168

9.5.5自定義全局過濾器 170

9.5.6SLF4J日誌工具 171

9.6GateWay與Sentinel的整合 172

9.6.1對路由限流 174

9.6.2對自定義的API入口限流 175

9.6.3同時對路由和API入口限流 178

9.7跨域配置 180

9.8超時配置 181

9.9通過Actuator監控網關 182

9.10網關集群 183

9.11 小結 185

第10 章 消息驅動框架:Stream     186

10.1消息中間件簡介 187

10.1.1消息中間件的運用場景 187

10.1.2消息中間件的缺點 189

10.1.3消息中間件產品 189

10.2RocketMQ簡介 190

10.2.1RocketMQ涉及的基本概念 191

10.2.2RocketMQ的消息收發模型 191

10.2.3安裝和啟動RocketMQ 192

10.2.4安裝和啟動RocketMQ控制台 193

10.3搭建RocketMQ集群 194

10.3.1搭建NameServer集群 195

10.3.2搭建BrokerServer集群 195

10.3.3多Master模式 197

10.3.4多Master多Slave的異步復制模式 198

10.3.5多Master多Slave的同步雙寫模式 199

10.4Spring Cloud Stream簡介 200

10.5在微服務中收發消息 200

10.5.1創建消息生產者 201

10.5.2創建消息消費者 202

10.5.3運行消息生產者和消息消費者 203

10.5.4收發Message類型的消息 203

10.6通過StreamBridge類發送消息 205

10.6.1StreamBridge類的用法 205

10.6.2用ChannelInterceptor攔截消息 207

10.7發送HTTP請求正文 208

10.8通過Function函數式接口收發消息 209

10.9響應式收發消息 210

10.10多輸入通道和輸出通道 211

10.11批量消費消息 213

10.12批量生產消息 213

10.13處理錯誤 214

10.13.1清除失敗消息 214

10.13.2把失敗消息發送到DLQ 214

10.13.3嘗試重新消費失敗消息... 215 10.14 消費者分組和分區 217

10.15消息正文的類型轉換 219

10.16通過Actuator監控Stream 221

10.17 小結 222

第11 章 鏈路追蹤組件:SkyWalking       223

11.1SkyWalking簡介 223

11.2鏈路追蹤軟件 224

11.3安裝和運行SkyWalking 225

11.4在微服務中安置探針 227

11.4.1查看拓撲圖 229

11.4.2追蹤鏈路 229

11.4.3查看監控數據 230

11.4.4性能分析 230

11.5採集日誌 232

11.6自定義鏈路追蹤 235

11.7忽略端點 237

11.8 告警 238

11.8.1編寫滿足告警規則的方法 240

11.8.2創建處理告警的webhook 241

11.8.3測試告警 243

11.9整合Elasticsearch數據庫 245

11.10整合MySQL數據庫 247

11.11通過Nacos建立SkyWalking集群 247

11.12 小結 250

第12 章 分佈式事務管理框架:Seata          251

12.1分佈式事務概述 251

12.2Seata簡介 253

12.3Seata的事務模式 254

12.3.1AT 模式 255

12.3.2TCC 模式 261

12.3.3Saga 模式 262

12.3.4XA 模式 262

12.4安裝和運行Seata Server 263

12.5創建AT模式下的範例 265

12.5.1創建Seata Server的MySQL 存儲源 266

12.5.2處理分佈式事務的微服務的架構 267

12.5.3創建order-service微服務 268

12.5.4聲明全局事務和分支事務 276

12.5.5演示全局事務的提交和撤銷 276

12.6搭建與Nacos整合的Seata Server集群 278

12.6.1在MySQL中創建seata數據庫和表 279

12.6.2在Nacos配置中心配置Seata Server 279

12.6.3在Seata Server的配置文件中配置Nacos 280

12.6.4在微服務中配置Seata 282

12.6.5運行和訪問Seata Server集群 282

12.7事務組與Seata Server集群的映射 283

12.8 小結 284

第13 章 分庫分表中間件:ShardingSphere    285

13.1分庫分表概述 286

13.2ShardingSphere簡介 288

13.2.1Sharding-JDBC簡介 289

13.2.2Sharding-Proxy簡介 290

13.3ShardingSphere的核心概念 290

13.3.1與表相關的概念 290

13.3.2與分片相關的概念 291

13.4ShardingSphere的工作流程 293

13.5ShardingSphere的SQL規範 294

13.6運用Sharding-JDBC的範例 296

13.6.1加入Sharding-JDBC等的依賴 296

13.6.2創建拆分後的訂單表 297

13.6.3配置Sharding-JDBC 和MyBatis 298

13.6.4創建Order實體類  299

13.6.5創建訪問數據的OrderDao接口 299

13.6.6創建OrderService類 300

13.6.7創建OrderController類 300

13.6.8運行演示SQL路由的範例 301

13.6.9把訂單表拆分到兩個數據庫中 301

13.6.10配置綁定表 303

13.6.11配置廣播表 304

13.6.12主從數據庫和讀寫分離 305

13.7Sharding-Proxy簡介 307

13.7.1安裝和配置Sharding-Proxy 308

13.7.2在微服務中訪問Sharding-Proxy 311

13.7.3配置讀寫分離 312

13.7.4配置數據加密 314

13.7.5配置影子數據源 316

13.8 小結 318

第14 章 分佈式緩存數據庫:Redis     319

14.1Redis簡介 319

14.2安裝和啟動Redis  320

14.3在微服務中訪問Redis  321

14.4Redis數據類型  322

14.4.1讀寫list類型數據 323

14.4.2讀寫set類型數據 324

14.4.3讀寫zset類型數據 326

14.4.4讀寫hash類型數據 327

14.4.5序列化Java對象 328

14.5Redis集群 329

14.5.1主從模式 329

14.5.2哨兵模式 330

14.5.3集群模式 331

14.5.4搭建Redis集群 332

14.6在微服務中訪問Redis集群  334

14.7 小結 334

第15 章 分佈式任務調度框架:XXL-JOB    336

15.1安裝和運行XXL-JOB 337

15.1.1創建XXL-JOB的數據庫 337

15.1.2配置XXL-JOB調度中心 338

15.1.3運行和訪問XXL-JOB調度  中心 339

15.1.4配置XXL-JOB執行器 340

15.1.5運行XXL-JOB執行器 342

15.2創建和執行GLUE模式的任務 342

15.3創建和執行BEAN模式的任務 346

15.3.1任務的初始化和銷毀 347

15.3.2帶參數的任務 348

15.4執行器集群和分片執行任務 352

15.5搭建調度中心的集群 354

15.6 小結 356