定 價(jià):¥69.00
作 者: | 趙計(jì)剛 著 |
出版社: | 電子工業(yè)出版社 |
叢編項(xiàng): | |
標(biāo) 簽: | 暫缺 |
ISBN: | 9787121328404 | 出版時(shí)間: | 2017-10-01 | 包裝: | |
開本: | 16開 | 頁數(shù): | 300 | 字?jǐn)?shù): |
目錄
第1章 微服務(wù)概述 1
1.1 初識微服務(wù) 1
1.1.1 什么是微服務(wù) 1
1.1.2 為什么需要微服務(wù) 2
1.1.3 微服務(wù)架構(gòu)的缺點(diǎn) 3
1.2 微服務(wù)中的組件與技術(shù)選型 4
第2章 微服務(wù)基礎(chǔ)框架 10
2.1 SpringBoot的優(yōu)勢 10
2.2 SpringBoot入門 10
2.2.1 搭建項(xiàng)目框架 10
2.2.2 開發(fā)第一個(gè)SpringBoot程序 11
2.2.3 運(yùn)行SpringBoot項(xiàng)目 14
2.3 再學(xué)一招:使用Maven依賴樹驗(yàn)證SpringBoot自動引包功能 15
第3章 微服務(wù)文檔輸出 17
3.1 Swagger概述 17
3.2 如何使用Swagger 17
3.2.1 搭建項(xiàng)目框架 17
3.2.2 SpringBoot集成Swagger 18
3.2.3 分析Swagger生成的API文檔 23
3.2.4 使用Swagger進(jìn)行接口調(diào)用 23
3.3 再學(xué)一招:使用Lombok消除POJO類模板代碼 24
第4章 微服務(wù)數(shù)據(jù)庫 26
4.1 單數(shù)據(jù)源 26
4.1.1 搭建項(xiàng)目框架 26
4.1.2 建庫和建表 27
4.1.3 使用Mybatis-Generator生成數(shù)據(jù)訪問層 27
4.1.4 SpringBoot集成Mybatis 29
4.2 多數(shù)據(jù)源 38
4.2.1 建庫和建表 39
4.2.2 使用Mybatis-Generator生成數(shù)據(jù)訪問層 40
4.2.3 結(jié)合AbstractRoutingDataSource實(shí)現(xiàn)動態(tài)數(shù)據(jù)源 41
4.2.4 使用AOP簡化數(shù)據(jù)源選擇功能 47
4.2.5 實(shí)現(xiàn)多數(shù)據(jù)源的步驟總結(jié) 48
4.3 再學(xué)一招:Mybatis-Generator基本用法 49
第5章 微服務(wù)緩存系統(tǒng) 52
5.1 常用的緩存技術(shù) 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關(guān)鍵源碼解析 64
5.4 再學(xué)一招:使用GuavaCache實(shí)現(xiàn)本地緩存 66
第6章 SpringBoot啟動源碼解析 69
6.1 創(chuàng)建SpringApplication實(shí)例 70
6.1.1 判斷是否是Web環(huán)境 71
6.1.2 創(chuàng)建并初始化ApplicationInitializer列表 71
6.1.3 創(chuàng)建并初始化ApplicationListener列表 74
6.1.4 初始化主類mainApplicationClass 75
6.2 添加自定義監(jiān)聽器 75
6.3 啟動核心run方法 76
6.3.1 創(chuàng)建啟動停止計(jì)時(shí)器 77
6.3.2 配置awt系統(tǒng)屬性 78
6.3.3 獲取SpringApplicationRunListeners 79
6.3.4 啟動SpringApplicationRunListener 80
6.3.5 創(chuàng)建ApplicationArguments 80
6.3.6 創(chuàng)建并初始化ConfigurableEnvironment 81
6.3.7 打印Banner 87
6.3.8 創(chuàng)建ConfigurableApplicationContext 87
6.3.9 準(zhǔn)備ConfigurableApplicationContext 89
6.3.10 刷新ConfigurableApplicationContext 91
6.3.11 容器刷新后動作 93
6.3.12 SpringApplicationRunListeners發(fā)布finish事件 94
6.3.13 計(jì)時(shí)器停止計(jì)時(shí) 94
6.4 再學(xué)一招:常用的獲取屬性的4種姿勢 94
第7章 微服務(wù)注冊與發(fā)現(xiàn) 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實(shí)現(xiàn)服務(wù)注冊與服務(wù)發(fā)現(xiàn) 100
7.3.1 搭建項(xiàng)目框架 100
7.3.2 配置服務(wù)注冊信息 102
7.3.3 實(shí)現(xiàn)服務(wù)啟動注冊 104
7.3.4 實(shí)現(xiàn)服務(wù)發(fā)現(xiàn) 106
7.4 服務(wù)部署測試 108
7.4.1 編寫測試類 108
7.4.2 服務(wù)打包部署 109
7.4.3 運(yùn)行測試 111
7.5 使用Consul與Actuator實(shí)現(xiàn)健康檢查 111
7.5.1 健康檢查機(jī)制 111
7.5.2 健康檢查查錯(cuò)思路 111
7.6 再學(xué)一招:Consul健康檢查分類及原理 112
第8章 微服務(wù)配置管理 114
8.1 初識Archaius 114
8.1.1 為什么要使用Archaius 114
8.1.2 Archaius原理 114
8.2 使用Consul-KV實(shí)現(xiàn)配置集中管理 115
8.3 使用Archaius實(shí)現(xiàn)動態(tài)獲取配置 116
8.3.1 搭建項(xiàng)目框架 116
8.3.2 創(chuàng)建配置信息讀取源 118
8.3.3 實(shí)現(xiàn)服務(wù)啟動時(shí)讀取配置信息 120
8.3.4 動態(tài)獲取配置信息 122
8.3.5 將配置信息動態(tài)加入Spring屬性源的思路 123
8.4 再學(xué)一招:Archaius關(guān)鍵源碼解析 123
8.4.1 構(gòu)造動態(tài)屬性源 123
8.4.2 動態(tài)獲取屬性 127
第9章 微服務(wù)進(jìn)程間通信 129
9.1 常見的三種服務(wù)通信技術(shù) 129
9.2 創(chuàng)建一個(gè)簡單的被調(diào)用服務(wù) 130
9.2.1 搭建項(xiàng)目框架 130
9.2.2 實(shí)現(xiàn)一個(gè)簡單的被調(diào)用接口 132
9.3 使用OkHttp實(shí)現(xiàn)服務(wù)通信 134
9.3.1 搭建項(xiàng)目框架 134
9.3.2 創(chuàng)建OkHttp調(diào)用實(shí)體類 135
9.3.3 實(shí)現(xiàn)服務(wù)通信功能 136
9.3.4 SpringBoot指定服務(wù)啟動端口的三種姿勢 138
9.4 使用AsyncHttpClient實(shí)現(xiàn)服務(wù)通信 139
9.4.1 搭建項(xiàng)目框架 139
9.4.2 創(chuàng)建AsyncHttpClient調(diào)用實(shí)體類 139
9.4.3 實(shí)現(xiàn)服務(wù)通信功能 140
9.5 使用Retrofit實(shí)現(xiàn)服務(wù)通信 141
9.5.1 搭建項(xiàng)目框架 141
9.5.2 創(chuàng)建調(diào)用接口并實(shí)例化接口 141
9.5.3 實(shí)現(xiàn)服務(wù)通信功能 143
9.6 再學(xué)一招:Retrofit源碼解析 143
9.6.1 構(gòu)造RestAdapter 144
9.6.2 初始化RestAdapter.Builder屬性 146
9.6.3 創(chuàng)建RestAdapter實(shí)例 149
9.6.4 構(gòu)造請求方法的接口類 150
9.6.5 校驗(yàn)service接口的合法性 151
9.6.6 使用動態(tài)代理創(chuàng)建對象 152
9.6.7 進(jìn)行請求調(diào)用 152
9.6.8 獲取RestMethodInfo實(shí)例 154
9.6.9 進(jìn)行方法調(diào)用 154
9.6.10 加載RestMethodInfo的剩余屬性 156
9.6.11 構(gòu)建請求參數(shù)retrofit.client.Request 160
9.6.12 利用clientProvider進(jìn)行真正的調(diào)用 161
9.6.13 處理響應(yīng) 162
第10章 微服務(wù)降級容錯(cuò) 163
10.1 初識Hystrix 163
10.1.1 為什么要使用Hystrix 163
10.1.2 Hystrix工作原理 164
10.1.3 Hystrix執(zhí)行流程 166
10.2 使用Hystrix實(shí)現(xiàn)服務(wù)降級容錯(cuò) 167
10.2.1 搭建項(xiàng)目框架 167
10.2.2 創(chuàng)建AsyncHttpClient調(diào)用實(shí)體類 170
10.2.3 服務(wù)通信框架集成服務(wù)降級容錯(cuò)功能 171
10.2.4 驗(yàn)證服務(wù)降級容錯(cuò)功能 173
10.3 搭建Hystrix監(jiān)控系統(tǒng) 176
10.3.1 使用Hystrix-Metrics-Event-Stream發(fā)布監(jiān)控信息 176
10.3.2 使用Hystrix-Dashboard展示監(jiān)控信息 177
10.3.3 使用Turbine聚合監(jiān)控信息 179
10.1 再學(xué)一招:Hystrix常用配置 184
10.1.1 設(shè)置配置參數(shù)的兩種方法 184
10.4.2 常見配置項(xiàng)的配置方式 184
第11章 微服務(wù)日志系統(tǒng) 187
11.1 初識ELK 187
11.1.1 為什么要用ELK 187
11.1.2 ELK最常用的兩種架構(gòu) 188
11.2 搭建ELK系統(tǒng) 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發(fā)送日志 196
11.3.1 搭建項(xiàng)目框架 196
11.3.2 配置logback.xml文件 198
11.3.3 創(chuàng)建LogbackAppender發(fā)送日志 199
11.3.4 驗(yàn)證日志輸出查詢功能 201
11.4 Kibana常見用法 203
11.4.1 日期選擇 203
11.4.2 自動刷新 204
11.4.3 查詢語法 204
11.5 再學(xué)一招:使用Curator定時(shí)刪除日志 205
11.5.1 安裝Curator 205
11.5.2 配置Curator 206
11.5.3 配置crontab定時(shí)任務(wù) 208
11.5.4 驗(yàn)證定時(shí)任務(wù) 208
第12章 微服務(wù)全鏈路追蹤系統(tǒng) 210
12.1 初識Zipkin 210
12.1.1 為什么要使用Zipkin 210
12.1.2 Zipkin工作流程 211
12.1.3 Zipkin數(shù)據(jù)模型 213
12.1.4 Zipkin工作原理 213
12.2 使用Zipkin搭建全鏈路追蹤系統(tǒng) 215
12.3 使用Brave + AsyncHttpClient實(shí)現(xiàn)全鏈路追蹤 217
12.3.1 搭建項(xiàng)目框架 217
12.3.2 使用服務(wù)端攔截器補(bǔ)充追蹤信息 219
12.3.3 使用客戶端攔截器創(chuàng)建銷毀追蹤信息 223
12.3.4 使用Zipkin-webUI查詢鏈路追蹤信息 225
12.4 使用MySQL持久化追蹤信息 227
12.4.1 創(chuàng)建三張追蹤信息表 227
12.4.2 使用Brave-MySQL存儲追蹤信息 230
12.5 使用Brave-OkHttp實(shí)現(xiàn)全鏈路追蹤 230
12.5.1 搭建項(xiàng)目框架 231
12.5.2 使用服務(wù)端與客戶端攔截器收集追蹤信息 233
12.6 再學(xué)一招:Brave關(guān)鍵源碼解析 236
12.6.1 span的生命周期 236
12.6.2 使用reporter創(chuàng)建span 237
12.6.3 使用collector收集span 242
12.6.4 使用collector發(fā)送span 244
第13章 微服務(wù)持續(xù)集成與持續(xù)部署系統(tǒng) 248
13.1 初識持續(xù)集成與持續(xù)部署系統(tǒng) 248
13.2 系統(tǒng)總體架構(gòu) 249
13.2.1 初識GitLab 249
13.2.2 初識Jenkins 250
13.2.3 初識Docker-Regsitry 250
13.3 持續(xù)集成與持續(xù)部署系統(tǒng)工作原理 250
13.3.1 使用jar包部署項(xiàng)目的整體流程 250
13.3.2 使用Docker鏡像部署項(xiàng)目的整體流程 250
13.4 搭建持續(xù)集成與持續(xù)部署系統(tǒng) 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包方式部署服務(wù) 258
13.5.1 搭建項(xiàng)目框架 258
13.5.2 使用GitLab創(chuàng)建組和項(xiàng)目 260
13.5.3 使用GitLab管理代碼 263
13.5.4 使用Jenkins編譯打包服務(wù) 264
13.5.5 使用webhook實(shí)現(xiàn)服務(wù)的持續(xù)集成 267
13.5.6 使用Jenkins + Shell實(shí)現(xiàn)服務(wù)的持續(xù)部署 269
13.6 使用Docker鏡像方式部署服務(wù) 273
13.6.1 搭建項(xiàng)目框架 273
13.6.2 編寫Dockerfile文件創(chuàng)建鏡像 275
13.6.3 通過Jenkins + Shell使用鏡像實(shí)現(xiàn)持續(xù)部署 276
13.6.4 分析Jenkins構(gòu)建日志 277
13.7 再學(xué)一招:Docker常用命令 278