【我的新書】分佈式微服務架構:原理與實戰

開心一笑

一次批小學語文卷,要求用"有……有……還有……"造句。一學生是這樣寫的:昨天去奶奶家,奶奶給我拿個雞腿,我都喫完了問奶奶還有嗎,奶奶答:“有,有,還有!”

購買地址

淘寶:https://s.taobao.com/search?q=%E5%88%86%E5%B8%83%E5%BC%8F%E5%BE%AE%E6%9C%8D%E5%8A%A1%EF%BC%9A%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E6%88%98&imgfile=&js=1&stats_click=search_radio_all%3A1&initiative_id=staobaoz_20191031&ie=utf8

書籍目錄

資料目錄:
第1章 從架構演進啓程 1
1.1 水平分層架構 1
1.1.1 概述 1
1.1.2 MVC架構/水平分層架構 2
1.2 SOA服務化架構 4
1.2.1 SOA概述 5
1.2.2 SOA的特徵 5
1.2.3 SOA面臨的問題 5
1.3 分佈式微服務架構 5
1.3.1 微服務概述 5
1.3.2 SOA與微服務 6
1.3.3 微服務架構的特點 6
1.3.4 微服務架構的缺點 7
1.3.5 微服務架構全景圖 7
1.3.6 微服務類型 9
1.3.7 微服務拆分原則與步驟 9
第2章 微服務開發框架 11
2.1 環境準備 11
2.1.1 安裝JDK 11
2.1.2 安裝 Intellij IDEA 14
2.1.3 安裝 Apache Maven 14
2.2 一分鐘快速搭建Spring Boot項目 15
2.2.1 使用Spring Initializr新建項目 15
2.2.2 測試 18
2.3 Spring Boot簡單介紹 18
2.3.1 Spring Boot核心功能及特性 19
2.3.2 Spring Boot的缺點 20
2.4 Spring Boot目錄介紹 20
2.4.1 Spring Boot工程目錄 20
2.4.2 Spring Boot入口類 21
2.4.3 Spring Boot測試類 22
2.4.4 pom文件 23
2.5 Spring Boot生產級特性 24
2.5.1 應用監控 24
2.5.2 健康檢查 28
2.5.3 跨域訪問 29
2.5.4 外部配置 30
第3章 分佈式RPC框架 31
3.1 RPC框架概述 31
3.1.1 定義 31
3.1.2 RPC核心組件 31
3.1.3 RPC調用過程 32
3.1.4 RPC框架調用分類 33
3.1.5 RPC框架性能 35
3.1.6 RPC框架與分佈式服務框架 35
3.2 RPC框架 36
3.2.1 RMI遠程方法調用 36
3.2.2 Thrift 37
3.2.3 Hessian 38
3.2.4 Avro-RPC 38
3.2.5 gRPC 38
3.2.6 其他RPC框架 39
第4章 序列化與反序列化 40
4.1 序列化與反序列化 40
4.1.1 序列化/反序列化概念 40
4.1.2 序列化/反序列化特性 41
4.2 常用序列化框架 41
4.2.1 Java默認序列化 41
4.2.2 XML序列化框架 46
4.2.3 JSON序列化框架 48
4.2.4 ProtoBuf序列化框架 50
第5章 微服務底層通信與協議 54
5.1 Java網絡通信 54
5.1.1 傳統BIO編程 54
5.1.2 僞異步I/O編程 60
5.1.3 NIO編程 62
5.2 Netty框架 78
5.2.1 Netty概述 78
5.2.2 第一個Netty應用程序 78
5.2.3 Netty架構設計 84
5.3 分佈式服務框架協議 89
5.3.1 主流公有協議 89
5.3.2 私有協議設計 90
第6章 服務路由與負載均衡 94
6.1 服務路由概述 94
6.1.1 定義 94
6.1.2 服務信息存放方式 94
6.2 服務路由概述 95
6.2.1 定義 95
6.2.2 負載均衡的實現 95
6.2.3 負載均衡算法 98
第7章 微服務註冊中心 103
7.1 微服務註冊中心 103
7.1.1 註冊中心幾個概念 103
7.1.2 註冊中心 104
7.2 ZooKeeper實現服務註冊中心 104
7.2.1 ZooKeeper概述 104
7.2.2 ZooKeeper的原理 105
7.2.3 ZooKeeper的安裝 106
7.2.4 ZooKeeper搭建集羣環境 109
7.2.5 ZooKeeper集羣總體架構 110
7.2.6 命令行客戶端zkCli.sh 112
7.2.7 ZkClient連接ZooKeeper 116
7.2.8 ZooKeeper實現服務註冊與發現 120
第8章 微服務框架服務調用與容錯 122
8.1 服務調用概述 122
8.2 服務調用方式 123
8.2.1 同步服務調用 123
8.2.2 異步服務調用 125
8.2.3 並行服務調用 130
8.2.4 泛化調用 132

第9章 分佈式微服務封裝與部署 133
9.1 微服務封裝技術 133
9.1.1 Docker概述 133
9.1.2 Docker的基本概念 135
9.1.3 Docker架構 135
9.1.4 Docker的安裝 137
9.1.5 Docker的常用命令 138
9.1.6 製作鏡像 142
9.1.7 使用Dockerfile構建鏡像 144
9.1.8 Spring Boot集成Docker 147
9.2 微服務部署概述 150
9.2.1 藍綠部署 150
9.2.2 滾動發佈 152
9.2.3 灰度發佈/金絲雀部署 154
第10章 分佈式服務限流 155
10.1 服務限流概述 155
10.1.1 限流定義 155
10.1.2 限流算法 155
10.2 限流設計 157
10.2.1 限流設計 157
10.2.2 分級限流 158
第11章 服務降級、熔斷、調度 159
11.1 服務降級概述 159
11.2 服務降級方式 159
11.2.1 服務降級開關 159
11.2.2 自動降級 160
11.2.3 讀服務降級 161
11.2.4 寫服務降級 161
11.3 服務容錯策略 161
11.3.1 失敗轉移(Failover) 162
11.3.2 失敗自動恢復(Failback) 162
11.3.3 快速失敗(Failfast) 162
11.3.4 失敗緩存(FailCache) 162
11.4 Hystrix降級、熔斷 162
11.4.1 Hystrix簡介 162
11.4.2 Hystrix實現降級/熔斷 164
11.5 服務優先級設計 165
11.5.1 服務實例數量調整 165
11.5.2 加權優先級隊列 166
11.5.3 線程調度器 167
第12章 服務版本與服務發佈 168
12.1 概述 168
12.2 服務版本概述 168
12.2.1 概述 168
12.2.2 Snapshot和Release 169
12.3 服務發佈 169
12.3.1 概述 169
12.3.2 服務發佈方式 170
第13章 分佈式微服務日誌中心 173
13.1 分佈式日誌概述 173
13.1.1 結構化日誌/非結構化日誌 173
13.1.2 日誌類型 175
13.2 日誌框架 175
13.2.1 JDK Logger 175
13.2.2 Apache Commons Logging 177
13.2.3 Log4j/Log4j 2 177
13.2.4 Spring Boot集成Log4j 179
13.2.5 Docker日誌框架 181
13.2.6 Linux系統Syslog 183
13.3 搭建日誌中心 183
13.3.1 ELK概述 183
13.3.2 Elasticsearch日誌存儲 184
13.3.3 Logstash日誌收集 189
13.3.4 Fluentd日誌收集 191
13.3.5 Kibana日誌查詢 193
13.3.6 ELK架構與Docker整合 194
13.3.7 ELK架構原理 195
第14章 分佈式微服務監控 197
14.1 分佈式服務架構監控 197
14.1.1 監控的價值 197
14.1.2 監控的完整體系 197
14.1.3 微服務監控類型 198
14.1.4 Spring Boot應用監控 198
14.1.5 Spring Boot Admin監控系統 201
14.2 搭建系統監控中心 206
14.2.1 概述 206
14.2.2 時序數據收集系統:cAdvisor 206
14.2.3 時序數據存儲系統:InfluxDB 209
14.2.4 時序數據分析系統:Grafana 212
14.2.5 集成InfluxDB + cAdvisor + Grafana 214
第15章 分佈式微服務配置中心 218
15.1 配置中心概述 218
15.1.1 概述 218
15.1.2 配置中心解決問題 218
15.1.3 全局配置 219
15.1.4 配置中心 221
15.2 Spring Cloud Config 223
15.2.1 概述 223
15.2.2 Spring Cloud Config快速入門 224
第16章 分佈式微服務存儲與解耦 232
16.1 分佈式數據庫架構 232
16.1.1 分庫 232
16.1.2 分表 233
16.1.3 水平切分的方式 233
16.1.4 垂直切分的方式 235
16.1.5 分組 235
16.1.6 Mycat分庫分表實戰 236
16.1.7 Spring+MyBatis+Mycat快速體驗 240
16.2 分佈式事務 249
16.2.1 數據庫事務 249
16.2.2 分佈式事務 249
16.2.3 CAP定理 250
16.2.4 BASE理論 251
16.2.5 兩階段提交(2PC) 252
16.2.6 補償事務(TCC) 252
16.2.7 後置提交 254
16.2.8 本地消息表(異步確保) 255
16.3 分佈式緩存架構 256
16.3.1 Memcache與Redis 256
16.3.2 進程內緩存 257
16.3.3 Redis單節點安裝 259
16.3.4 Redis持久化策略 260
16.3.5 Redis主從複製模式 263
16.3.6 Redis哨兵模式 266
16.3.7 Redis哨兵模式安裝部署 271
16.3.8 Redis集羣模式 277
16.3.9 Redis集羣環境搭建 280
16.3.10 Redis緩存穿透和雪崩 288
16.4 微服務解耦 294
16.4.1 服務解耦概述 294
16.4.2 Kafka介紹 295
16.4.3 Kafka安裝 299
16.4.4 Kafka搭建集羣環境 300
16.4.5 Kafka Manager的安裝 301
16.4.6 Kafka常用命令 301
16.4.7 Spring Boot集成Kafka 311
16.5 分佈式服務Session 315
16.5.1 Session與Cookie 315
16.5.2 Session一致性問題 315
16.5.3 Session同步 316
第17章 分佈式微服務測試 318
17.1 分佈式微服務測試 318
17.1.1 概述 318
17.1.2 微服務測試 319
17.2 Spring Boot單元測試 321
17.3 Mockito/PowerMockito測試框架 323
17.3.1 Mockito概述 323
17.3.2 Mockito簡單實例 324
17.3.3 PowerMock概述 327
17.3.4 PowerMockito簡單實例 327
17.4 H2內存型數據庫 330
17.4.1 H2概述 330
17.4.2 Spring Boot集成H2 330
17.5 REST API測試 333
17.5.1 Postman概述 333
17.5.2 Postman簡單使用 333
17.6 性能測試 336
17.6.1 ab概述 336
17.6.2 ab測試 336
17.6.3 其他性能測試工具 338
第18章 分佈式微服務架構經典案例 341
18.1 微服務架構案例 341
18.1.1 概述 341
18.1.2 微服務架構平臺選擇 342
18.1.3 微服務接口類型 342
18.1.4 微服務類型 343
18.2 分佈式服務框架Dubbo 344
18.2.1 Dubbo概述 344
18.2.2 Dubbo原理 344
18.3 Spring Boot + Spring Cloud解決方案 345
18.3.1 Spring Boot概述 345
18.3.2 Spring Cloud概述 345
18.3.3 微服務、Spring Boot、Spring Cloud的關係 347
18.3.4 Spring Cloud與Dubbo的優劣 348
18.4 Spring Boot + Kubernetes + Docker解決方案 348
18.4.1 Docker概述 348
18.4.2 Kubernetes概述 349
18.4.3 Kubernetes的基本概念 349
18.4.4 Kubernetes的使用 352
18.4.5 Kubernetes的架構 356
18.4.6 Kubernetes集羣監控 360
18.4.7 Kubernetes集羣日誌管理 360
18.4.8 Kubernetes解決方案 360
參考文獻 362

讀書感悟

來着 納西姆·尼古拉斯·塔勒布《反脆弱》

  • 喚醒天才的是困難。
  • 反脆弱的策略就是記住:意外總會發生。
  • 讓人上癮的東西里,害處最大的三種是海洛因、碳水化合物和月薪。
  • 人們瞭解的很多東西其實都不值得去了解。
  • 如果有人跟你說“我很忙”,那他要麼是在宣稱自己的無能(以及對自己的生活的缺乏控制),要麼是在試圖擺脫你。
  • 不管在哪個領域,業餘愛好者往往都是最優秀的。
  • 這個世界上真正的貴人從來不是別人,而是我們自己。人只要記住一個原則,不管是做什麼事,不管是在什麼環境中,儘可能做到利人利己,你會發現事情一定會越來越好,你的貴人也會越來越多。
  • 與一個無知的人保持距離相當於與一個聰明人爲伍。

經典故事

趙國有一戶人家被老鼠害苦了,就到中山國去借貓,中山人給了他一隻。
這隻貓很會捉老鼠,但是也喜歡捉雞喫。
一個月之後,他家的老鼠被捉乾淨了,而雞也被喫光了。
他的兒子認爲這隻貓是個禍害,對父親說:“爲什麼不把它除掉呢?”
父親說:“我們的禍患在於家裏有老鼠,不在於沒有雞。老鼠偷喫糧食,咬爛衣物,鑽穿牆壁,啃壞傢俱,這樣下去我們就要挨餓受凍,這比沒有雞更糟!沒有雞,我們只不過不喫雞肉罷了,離挨餓受凍還遠呢!爲什麼要把貓除掉呢?”
點評:【古人云:“兩害相權取其輕,兩利相權取其重。”意思是兩種利益同時放面前,當然是選擇利益較大的那種;兩種損害放面前,當然是選擇傷害較輕的那種。簡單地說,就是權衡利弊,首選利重害輕。】

大神文章

其它

如果有帶給你一絲絲小快樂,就讓快樂繼續傳遞下去,歡迎鼓勵,點贊、頂、歡迎留下寶貴的意見、多謝支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章