Java微服務實戰

Java微服務實戰

《Java微服務實戰》由電子工業出版社 於2017年10月 出版,作者趙計剛 ,本書分為三部分:基礎框架篇(1~6章)、服務框架篇(7~10章)、監控部署篇(11~13章),由淺入深來講解微服務的相關技術。

基本信息

Java微服務實戰

作 譯 者:趙計剛

出版時間:2017-10

千 字 數:386

版 次:01-01

頁 數:300

開 本:16開

I S B N :9787121328404

內容簡介

本書分為三部分:基礎框架篇(1~6章)、服務框架篇(7~10章)、監控部署篇(11~13章),由淺入深來講解微服務的相關技術。基礎框架篇從微服務架構的基本概念與技術選型出發,詳細的介紹了微服務基礎框架SpringBoot、自動化API文檔生成工具Swagger、動態數據源和快取系統,並深入的分析了SpringBoot啟動過程的核心源碼,這一部分是整本書的基礎;服務框架篇詳細的介紹了服務註冊與發現框架Consul、熱配置管理框架Archaius、服務降級容錯框架Hystrix,以及服務通信框架OkHttp、AsyncHttpClient和Retrofit,這一部分是整本書的核心;監控部署篇詳細的介紹了ELK日誌系統的實現、Zipkin全鏈路追蹤系統的實現,最後介紹了持續集成與持續部署系統的實現,這一部分是開發運維的部分。

目錄信息

第1章 微服務概述 1

1.1 初識微服務 1

1.1.1 什麼是微服務 1

1.1.2 為什麼需要微服務 2

1.1.3 微服務架構的缺點 3

1.2 微服務中的組件與技術選型 4

第2章 微服務基礎框架 10

2.1 SpringBoot的優勢 10

2.2 SpringBoot入門 10

2.2.1 搭建項目框架 10

2.2.2 開發第一個SpringBoot程式 11

2.2.3 運行SpringBoot項目 14

2.3 再學一招:使用Maven依賴樹驗證SpringBoot自動引包功能 15

第3章 微服務文檔輸出 17

3.1 Swagger概述 17

3.2 如何使用Swagger 17

3.2.1 搭建項目框架 17

3.2.2 SpringBoot集成Swagger 18

3.2.3 分析Swagger生成的API文檔 23

3.2.4 使用Swagger進行接口調用 23

3.3 再學一招:使用Lombok消除POJO類模板代碼 24

第4章 微服務資料庫 26

4.1 單數據源 26

4.1.1 搭建項目框架 26

4.1.2 建庫和建表 27

4.1.3 使用Mybatis-Generator生成數據訪問層 27

4.1.4 SpringBoot集成Mybatis 29

4.2 多數據源 38

4.2.1 建庫和建表 39

4.2.2 使用Mybatis-Generator生成數據訪問層 40

4.2.3 結合AbstractRoutingDataSource實現動態數據源 41

4.2.4 使用AOP簡化數據源選擇功能 47

4.2.5 實現多數據源的步驟總結 48

4.3 再學一招:Mybatis-Generator基本用法 49

第5章 微服務快取系統 52

5.1 常用的快取技術 52

5.1.1 本地快取與分散式快取 52

5.1.2 Memcached與Redis 53

5.2 Redis2.x客戶端分片 53

5.2.1 安裝Redis 53

5.2.2 SpringBoot集成ShardJedis 54

5.3 Redis3.x集群 59

5.3.1 搭建Redis集群 59

5.3.2 SpringBoot集成JedisCluster 62

5.3.3 JedisCluster關鍵源碼解析 64

5.4 再學一招:使用GuavaCache實現本地快取 66

第6章 SpringBoot啟動源碼解析 69

6.1 創建SpringApplication實例 70

6.1.1 判斷是否是Web環境 71

6.1.2 創建並初始化ApplicationInitializer列表 71

6.1.3 創建並初始化ApplicationListener列表 74

6.1.4 初始化主類mainApplicationClass 75

6.2 添加自定義監聽器 75

6.3 啟動核心run方法 76

6.3.1 創建啟動停止計時器 77

6.3.2 配置awt系統屬性 78

6.3.3 獲取SpringApplicationRunListeners 79

6.3.4 啟動SpringApplicationRunListener 80

6.3.5 創建ApplicationArguments 80

6.3.6 創建並初始化ConfigurableEnvironment 81

6.3.7 列印Banner 87

6.3.8 創建ConfigurableApplicationContext 87

6.3.9 準備ConfigurableApplicationContext 89

6.3.10 刷新ConfigurableApplicationContext 91

6.3.11 容器刷新後動作 93

6.3.12 SpringApplicationRunListeners發布finish事件 94

6.3.13 計時器停止計時 94

6.4 再學一招:常用的獲取屬性的4種姿勢 94

第7章 微服務註冊與發現 96

7.1 初識Consul 96

7.2 搭建Consul集群 97

7.2.1 安裝Consul 97

7.2.2 啟動Consul集群 97

7.2.3 啟動Consul-UI 99

7.3 使用Consul實現服務註冊與服務發現 100

7.3.1 搭建項目框架 100

7.3.2 配置服務註冊信息 102

7.3.3 實現服務啟動註冊 104

7.3.4 實現服務發現 106

7.4 服務部署測試 108

7.4.1 編寫測試類 108

7.4.2 服務打包部署 109

7.4.3 運行測試 111

7.5 使用Consul與Actuator實現健康檢查 111

7.5.1 健康檢查機制 111

7.5.2 健康檢查查錯思路 111

7.6 再學一招:Consul健康檢查分類及原理 112

第8章 微服務配置管理 114

8.1 初識Archaius 114

8.1.1 為什麼要使用Archaius 114

8.1.2 Archaius原理 114

8.2 使用Consul-KV實現配置集中管理 115

8.3 使用Archaius實現動態獲取配置 116

8.3.1 搭建項目框架 116

8.3.2 創建配置信息讀取源 118

8.3.3 實現服務啟動時讀取配置信息 120

8.3.4 動態獲取配置信息 122

8.3.5 將配置信息動態加入Spring屬性源的思路 123

8.4 再學一招:Archaius關鍵源碼解析 123

8.4.1 構造動態屬性源 123

8.4.2 動態獲取屬性 127

第9章 微服務進程間通信 129

9.1 常見的三種服務通信技術 129

9.2 創建一個簡單的被調用服務 130

9.2.1 搭建項目框架 130

9.2.2 實現一個簡單的被調用接口 132

9.3 使用OkHttp實現服務通信 134

9.3.1 搭建項目框架 134

9.3.2 創建OkHttp調用實體類 135

9.3.3 實現服務通信功能 136

9.3.4 SpringBoot指定服務啟動連線埠的三種姿勢 138

9.4 使用AsyncHttpClient實現服務通信 139

9.4.1 搭建項目框架 139

9.4.2 創建AsyncHttpClient調用實體類 139

9.4.3 實現服務通信功能 140

9.5 使用Retrofit實現服務通信 141

9.5.1 搭建項目框架 141

9.5.2 創建調用接口並實例化接口 141

9.5.3 實現服務通信功能 143

9.6 再學一招:Retrofit源碼解析 143

9.6.1 構造RestAdapter 144

9.6.2 初始化RestAdapter.Builder屬性 146

9.6.3 創建RestAdapter實例 149

9.6.4 構造請求方法的接口類 150

9.6.5 校驗service接口的合法性 151

9.6.6 使用動態代理創建對象 152

9.6.7 進行請求調用 152

9.6.8 獲取RestMethodInfo實例 154

9.6.9 進行方法調用 154

9.6.10 載入RestMethodInfo的剩餘屬性 156

9.6.11 構建請求參數retrofit.client.Request 160

9.6.12 利用clientProvider進行真正的調用 161

9.6.13 處理回響 162

第10章 微服務降級容錯 163

10.1 初識Hystrix 163

10.1.1 為什麼要使用Hystrix 163

10.1.2 Hystrix工作原理 164

10.1.3 Hystrix執行流程 166

10.2 使用Hystrix實現服務降級容錯 167

10.2.1 搭建項目框架 167

10.2.2 創建AsyncHttpClient調用實體類 170

10.2.3 服務通信框架集成服務降級容錯功能 171

10.2.4 驗證服務降級容錯功能 173

10.3 搭建Hystrix監控系統 176

10.3.1 使用Hystrix-Metrics-Event-Stream發布監控信息 176

10.3.2 使用Hystrix-Dashboard展示監控信息 177

10.3.3 使用Turbine聚合監控信息 179

10.1 再學一招:Hystrix常用配置 184

10.1.1 設定配置參數的兩種方法 184

10.4.2 常見配置項的配置方式 184

第11章 微服務日誌系統 187

11.1 初識ELK 187

11.1.1 為什麼要用ELK 187

11.1.2 ELK最常用的兩種架構 188

11.2 搭建ELK系統 189

11.2.1 安裝配置啟動Redis 190

11.2.2 安裝配置啟動Elasticsearch 190

11.2.3 安裝配置啟動Logstash-Shipper 192

11.2.4 安裝配置啟動Logstash-Indexer 194

11.2.5 安裝配置啟動Kibana 195

11.3 使用LogbackAppender傳送日誌 196

11.3.1 搭建項目框架 196

11.3.2 配置logback.xml檔案 198

11.3.3 創建LogbackAppender傳送日誌 199

11.3.4 驗證日誌輸出查詢功能 201

11.4 Kibana常見用法 203

11.4.1 日期選擇 203

11.4.2 自動刷新 204

11.4.3 查詢語法 204

11.5 再學一招:使用Curator定時刪除日誌 205

11.5.1 安裝Curator 205

11.5.2 配置Curator 206

11.5.3 配置crontab定時任務 208

11.5.4 驗證定時任務 208

第12章 微服務全鏈路追蹤系統 210

12.1 初識Zipkin 210

12.1.1 為什麼要使用Zipkin 210

12.1.2 Zipkin工作流程 211

12.1.3 Zipkin數據模型 213

12.1.4 Zipkin工作原理 213

12.2 使用Zipkin搭建全鏈路追蹤系統 215

12.3 使用Brave + AsyncHttpClient實現全鏈路追蹤 217

12.3.1 搭建項目框架 217

12.3.2 使用服務端攔截器補充追蹤信息 219

12.3.3 使用客戶端攔截器創建銷毀追蹤信息 223

12.3.4 使用Zipkin-webUI查詢鏈路追蹤信息 225

12.4 使用MySQL持久化追蹤信息 227

12.4.1 創建三張追蹤信息表 227

12.4.2 使用Brave-MySQL存儲追蹤信息 230

12.5 使用Brave-OkHttp實現全鏈路追蹤 230

12.5.1 搭建項目框架 231

12.5.2 使用服務端與客戶端攔截器收集追蹤信息 233

12.6 再學一招:Brave關鍵源碼解析 236

12.6.1 span的生命周期 236

12.6.2 使用reporter創建span 237

12.6.3 使用collector收集span 242

12.6.4 使用collector傳送span 244

第13章 微服務持續集成與持續部署系統 248

13.1 初識持續集成與持續部署系統 248

13.2 系統總體架構 249

13.2.1 初識GitLab 249

13.2.2 初識Jenkins 250

13.2.3 初識Docker-Regsitry 250

13.3 持續集成與持續部署系統工作原理 250

13.3.1 使用jar包部署項目的整體流程 250

13.3.2 使用Docker鏡像部署項目的整體流程 250

13.4 搭建持續集成與持續部署系統 251

13.4.1 安裝啟動Docker 251

13.4.2 安裝配置啟動GitLab 252

13.4.3 安裝啟動Jenkins 254

13.4.4 配置Jenkins全局信息與安裝外掛程式 256

13.4.5 安裝配置啟動Docker-Registry 257

13.5 使用jar包方式部署服務 258

13.5.1 搭建項目框架 258

13.5.2 使用GitLab創建組和項目 260

13.5.3 使用GitLab管理代碼 263

13.5.4 使用Jenkins編譯打包服務 264

13.5.5 使用webhook實現服務的持續集成 267

13.5.6 使用Jenkins + Shell實現服務的持續部署 269

13.6 使用Docker鏡像方式部署服務 273

13.6.1 搭建項目框架 273

13.6.2 編寫Dockerfile檔案創建鏡像 275

13.6.3 通過Jenkins + Shell使用鏡像實現持續部署 276

13.6.4 分析Jenkins構建日誌 277

13.7 再學一招:Docker常用命令 278

相關詞條

相關搜尋

熱門詞條

聯絡我們