Java微服務實戰epub

圖書網
9836
文章
1300
評論
2020年1月3日21:15:57 1 35閱讀22分54秒

Java微服務實戰 作者:趙計剛

Java微服務實戰 出版社: 電子工業出版社

Java微服務實戰 內容簡介

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

Java微服務實戰 目錄

第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

Java微服務實戰 精彩文摘

“微服務”是軟件架構大師Martin Fowler提出來的,但至今為止其都沒有一個確切的定義。只有在Martin Fowler的官方網站上給出了一段關于微服務架構的說明。該段說明原文如下:

In short,the microservice architectural style is an approach to developing a single application as a suite of small services,each running in its own process and communicating with lightweight mechanisms,often an HTTP resource API.These services are built around business capabilities and independently deployable by fully automated deployment machinery.There is a bare minimum of centralized management of these services,which may be written in different programming languages and use different data storage technologies.

簡單來講,微服務架構風格是將一個單體的應用程序開發拆解為一組“小”的服務,值得注意的是,這里所說的“小”是以業務邊界來區分的,而不是根據代碼的多少來區分的。每個服務都運行在一個單獨的進程中,服務之間通過輕量級的機制進行通信,例如使用HTTP資源接口;每個服務都可以通過全自動化的部署機制來獨立部署;微服務中的各個服務可以以多種語言來編寫,但是在實際開發中,由于各個公司的技術棧有限,通常會指定一門擅長的技術語言,例如Java;每個服務都可以使用不同數據存儲技術,例如MySQL、Cassandra及MongoDB等,但是為了統一,通常各個服務還是會選用同一種存儲技術。

為什么需要微服務?通常會將微服務架構和單體架構進行比較。二者的架構圖對比如圖1-1所示。

左邊是單體架構圖,右邊是微服務架構圖。傳統的單體架構主要包括三部分:一個展示層,用于將一些信息展示給客戶端人員或者為客戶端人員提供一些交互頁面;一個數據存儲層,通常就是提供一個數據庫,用于存儲一些需要持久化的數據;很后一個部分,是一個服務端的應用程序,該程序主要用于處理請求、執行業務邏輯、操作數據庫,以及將相關結果返回給前端等。在該架構中,所有的請求都在一個進程中處理,而且水平擴展也很簡單,只需要多添加幾臺部署了該服務的機器,之后在這些服務器的前邊部署一臺負載均衡器就可以了。

單體架構有這么幾個問題:首先,由于所有的業務邏輯都寫在了一個應用 service 中,因此只要對該 service 進行修改,哪怕只是添加一行代碼,也需要編譯打包部署整個應用,需要的時間會比較久,耗時耗力;其次,假設整個應用中只有一個接口到達了瓶頸,我們想要水平擴展該接口,這個時候只能通過水平擴展整個應用來達到目的;很后,隨著應用程序規模的增加,即使我們使用Maven進行模塊化開發,也很難保證對于一個模塊的修改不會影響其他模塊。

為了解決這些問題,微服務架構出現了!在微服務架構中,我們將一個整體應用切分成了多個小的服務,這些小服務可以獨立部署并且每個服務運行在自己的進程中,所以如果修改了一個服務的代碼,那么我們只需要單獨部署該服務就行,而且如果需要水平擴展一個服務的接口,只擴展該服務就可以了。

圖書網:Java微服務實戰epub

恭喜,此資源為免費資源,請先
聲明:本站所有資源收集于互聯網,只做學習和交流使用,版權歸著作人和出版社所有,請在下載后24小時之內自覺刪除,若作商業用途,請購買正版,由于未及時購買和付費發生的侵權行為,與本站無關。本站發布的內容若侵犯到您的權益,請聯系站長刪除,我們將及時處理!
繼續閱讀
  • 我的微信
  • 掃一掃加好友
  • weinxin
  • 微信公眾號
  • 掃一掃關注
  • weinxin
數據結構 C語言版 第2版pdf 程序設計

數據結構 C語言版 第2版pdf

適讀人群 :普通高校電子信息大類本科生學習、考研,同時也適合零售和培訓。 采用“案例驅動”的編寫模式。書中結合實際應用,將各章按照“案例引入——數據結構及其操作——案例分析與實現”...
新時期的Node.js入門epub 程序設計

新時期的Node.js入門epub

適讀人群 :適合未接觸過Node的讀者以及在校的學生閱讀,也適合作為高等院校和培訓學校相關專業的師生教學參考 從零開始學習開發完整可用的項目,掌握語言細節并獲得實際經驗 以實際應用...
深度學習實踐 計算機視覺epub 程序設計

深度學習實踐 計算機視覺epub

深度學習實踐 計算機視覺 作者:繆鵬 深度學習實踐 計算機視覺 出版社: 清華大學出版社 深度學習實踐 計算機視覺 內容簡介 本書主要介紹了深度學習在計算機視覺方面的應用及工程實踐,以Python 3...
匿名

發表評論

匿名網友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

評論:1   其中:訪客  1   博主  0
    • 〃╮(╯▽╰)╭ 〃╮(╯▽╰)╭ @回復 9

      學習