注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學技術(shù)計算機/網(wǎng)絡(luò)軟件與程序設(shè)計JAVA及其相關(guān)Java高并發(fā)核心編程:加強版. 卷3, 億級用戶Web應(yīng)用架構(gòu)與實戰(zhàn)

Java高并發(fā)核心編程:加強版. 卷3, 億級用戶Web應(yīng)用架構(gòu)與實戰(zhàn)

Java高并發(fā)核心編程:加強版. 卷3, 億級用戶Web應(yīng)用架構(gòu)與實戰(zhàn)

定 價:¥118.00

作 者: 尼恩 、德魯、李鵬舉、尤里烏斯
出版社: 清華大學出版社
叢編項:
標 簽: 暫缺

ISBN: 9787302621416 出版時間: 2022-11-01 包裝: 平裝-膠訂
開本: 16開 頁數(shù): 字數(shù):  

內(nèi)容簡介

  本書從動態(tài)代理模式、Reactor模式、三大限流策略等知識入手,深入淺出地剖析Spring Cloud Nginx系統(tǒng)架構(gòu)的核心原理以及Web高并發(fā)開發(fā)技術(shù)。全書從基礎(chǔ)設(shè)計模式和基礎(chǔ)原理出發(fā),理論與實戰(zhàn)相結(jié)合,系統(tǒng)、詳盡地介紹Spring Cloud Nginx高并發(fā)核心編程。本書共10章。前6章剖析Feign高并發(fā)RPC的底層原理,解析Hystrix高性能配置的核心選項,闡述Hystrix滑動窗口的核心原理;后4章介紹Nginx的核心原理及其配置,并結(jié)合秒殺場景實現(xiàn)Spring Cloud秒殺、Spring Cloud Nginx Lua秒殺,為廣大Java開發(fā)者提供一個全面學習高并發(fā)開發(fā)的實戰(zhàn)案例。這些知識會為廣大Java工程師解決后臺開發(fā)中遇到的高并發(fā)、高性能問題打下堅實的技術(shù)基礎(chǔ)。

作者簡介

  尼恩中南大學碩士,資深系統(tǒng)架構(gòu)師、IT領(lǐng)域資深作家、著名博主、從業(yè)十余年,先后在華為、神州數(shù)碼等公司從事技術(shù)研發(fā)、架構(gòu)工作。長期專注于高性能Web平臺、高性能通信、高性能搜索、數(shù)據(jù)挖掘等領(lǐng)域的3高架構(gòu)研究、架構(gòu)實操、核心代碼開發(fā)工作,以及核心中間件、底層源碼研究工作,負責過多個億級RMB智慧城市平臺、大型政務(wù)平臺、數(shù)據(jù)中臺架構(gòu)、技術(shù)中臺架構(gòu)工作,發(fā)起的3高研究社群“瘋狂創(chuàng)客圈”目前有研究人員1100多人。德魯資深系統(tǒng)架構(gòu)師,資深技術(shù)開發(fā)經(jīng)理,擁有近20年的開發(fā)、架構(gòu)和項目管理經(jīng)驗,一直在一線互聯(lián)網(wǎng)公司進行系統(tǒng)架構(gòu)設(shè)計和Java核心開發(fā)工作。目前帶領(lǐng)4個研發(fā)團隊承擔系統(tǒng)架構(gòu)分析、設(shè)計、實施以及技術(shù)團隊人員培訓和管理工作。在多年的開發(fā)過程中積累了豐富的開發(fā)經(jīng)驗,精通Java、SQL、Spring Boot、Spring Cloud、ELK等計算機語言和開發(fā)框架,同時也是多個開源項目的愛好者和貢獻者。李鵬舉華中科技大學碩士,擁有近10年的研發(fā)和項目管理經(jīng)驗。先后擔任過資深開發(fā)工程師、項目總監(jiān)、架構(gòu)師等職務(wù),長期在企業(yè)內(nèi)進行項目技術(shù)培訓工作,擅長核心技術(shù)平臺的架構(gòu)與研發(fā)。曾參與完成高并發(fā)打車平臺、大數(shù)據(jù)反洗錢平臺、公益醫(yī)藥援助平臺等大型項目的設(shè)計和開發(fā)。對分布式系統(tǒng)、微服務(wù)架構(gòu)、大數(shù)據(jù)分析等技術(shù)有較深的理解和實踐。尤里烏斯資深架構(gòu)師, 曾先后服務(wù)于中冶賽迪、吉利科技、茂日科技等知名企業(yè)。致力于大型SAAS系統(tǒng)的分布式架構(gòu)設(shè)計、領(lǐng)域驅(qū)動設(shè)計、大數(shù)據(jù)平臺架構(gòu)設(shè)計以及垂直領(lǐng)域的企業(yè)架構(gòu)規(guī)劃與建設(shè)。領(lǐng)導并設(shè)計過多個日活用戶在千萬級以上的互聯(lián)網(wǎng)系統(tǒng)架構(gòu),擁有豐富的實戰(zhàn)經(jīng)驗。

圖書目錄


第1章  億級用戶Web應(yīng)用的架構(gòu)與實操 1
1.1  高并發(fā)基本原理 1
1.1.1  響應(yīng)時間 1
1.1.2  吞吐量 2
1.1.3  錯誤率 4
1.2  提升系統(tǒng)的并發(fā)能力 4
1.2.1  縱向擴展 5
1.2.2  橫向擴展 6
1.2.3  高并發(fā)架構(gòu)中的分層策略 6
1.3  接入層橫向擴展高并發(fā)架構(gòu) 7
1.3.1  硬負載均衡 7
1.3.2  軟負載均衡 8
1.3.3  LVS和Nginx的配合使用 10
1.3.4  DNS負載均衡 10
1.4  動靜分離與接入層的緩存架構(gòu) 14
1.4.1  接入層網(wǎng)關(guān)緩存 14
1.4.2  CDN加速 15
1.4.3  接入層的緩存架構(gòu)的原則 17
1.5  服務(wù)層的橫向擴展高并發(fā)架構(gòu) 18
1.5.1  微服務(wù)網(wǎng)關(guān)的高并發(fā)橫向擴展 18
1.5.2  微服務(wù)Provider高并發(fā)橫向擴展 19
1.5.3  微服務(wù)Provider的自動伸縮 20
1.6  緩存層的高并發(fā)架構(gòu) 24
1.6.1  旁路緩存模式 24
1.6.2  讀/寫穿透模式 26
1.6.3  異步回寫模式 28
1.6.4  三大緩存使用模式的比較 28
1.6.5  旁路緩存模式如何保證雙寫的數(shù)據(jù)一致性 29
1.6.6  本地緩存架構(gòu) 39
1.6.7  多級、細粒度緩存架構(gòu) 42
1.7  數(shù)據(jù)層的橫向擴展高并發(fā)架構(gòu) 44
1.7.1  數(shù)據(jù)庫服務(wù)器的能力參考數(shù)據(jù) 44
1.7.2  結(jié)構(gòu)化數(shù)據(jù)的高并發(fā)架構(gòu)方案:分庫分表 45
1.7.3  結(jié)構(gòu)化分庫分表:水平拆分與垂直拆分 46
1.7.4  億級庫表規(guī)模架構(gòu)設(shè)計 47
1.7.5  百億級庫表架構(gòu)設(shè)計 48
1.7.6  百億級數(shù)據(jù)的異構(gòu)查詢 49
1.7.7  ES HBase組合方案的數(shù)據(jù)查詢過程 50
1.8  億級用戶量場景下的流量預估 50
1.8.1  請求處理模型 50
1.8.2  舊系統(tǒng)的流量架構(gòu) 52
1.8.3  新系統(tǒng)的流量架構(gòu) 52
1.8.4  二八定律 52
1.8.5  通過二八定律進行流量預估 53
1.9  高并發(fā)架構(gòu) 56
1.9.1  同步架構(gòu) 56
1.9.2  異步架構(gòu) 56
1.10  高可用架構(gòu) 57
1.10.1  什么是高可用 57
1.10.2  高可用的度量 58
1.10.3  高并發(fā)架構(gòu)中的分層策略 58
1.10.4  分層規(guī)避單點瓶頸 自動故障轉(zhuǎn)移 58
1.10.5  其他的高可用策略 59
1.11  高性能架構(gòu) 59
第2章  Spring Cloud Nginx高并發(fā)核心編程的學習準備 61
2.1  Spring Cloud Nginx架構(gòu)的主要組件 61
2.2  Spring Cloud Nginx核心知識的廣泛欠缺 63
2.3  Spring Cloud和Spring Boot的版本選擇 63
2.4  Spring Cloud微服務(wù)開發(fā)所涉及的中間件 65
2.5  Spring Cloud微服務(wù)開發(fā)和自驗證環(huán)境 66
2.5.1  開發(fā)和自驗證環(huán)境的系統(tǒng)選項和環(huán)境變量配置 66
2.5.2  使用Fiddler工具抓包和查看報文 67
2.6  crazy-Spring Cloud微服務(wù)開發(fā)腳手架 69
2.7  以秒殺作為Spring Cloud Nginx的實戰(zhàn)案例 70
第3章  Spring Cloud入門實戰(zhàn) 72
3.1  Eureka服務(wù)注冊與發(fā)現(xiàn) 73
3.1.1  什么是服務(wù)注冊與發(fā)現(xiàn) 73
3.1.2  Eureka Server注冊中心 74
3.1.3  微服務(wù)提供者Provider的創(chuàng)建和配置 79
3.1.4  微服務(wù)提供者的續(xù)約(心跳) 82
3.1.5  微服務(wù)提供者的健康狀態(tài) 84
3.1.6  Eureka自我保護模式與失效Provider的快速剔除 87
3.2  Config配置中心 90
3.2.1  config-server服務(wù)端組件 90
3.2.2  config-client客戶端組件 92
3.3  微服務(wù)的RPC遠程調(diào)用 93
3.3.1  RESTfull風格簡介 94
3.3.2  RestTemplate遠程調(diào)用 94
3.3.3  Feign遠程調(diào)用 96
3.4  Feign Ribbon實現(xiàn)客戶端負載均衡 97
3.4.1  Spring Cloud Ribbon基礎(chǔ) 97
3.4.2  Spring Cloud Ribbon的負載均衡策略 100
3.4.3  Spring Cloud Ribbon的常用配置 101
3.5  Feign Hystrix實現(xiàn)RPC調(diào)用保護 105
3.5.1  Spring Cloud Hystrix失敗回退 106
3.5.2  分布式系統(tǒng)面臨的雪崩難題 109
3.5.3  Spring Cloud Hystrix熔斷器 111
第4章  Spring Cloud RPC遠程調(diào)用 核心原理 115
4.1  代理模式與RPC客戶端實現(xiàn)類 115
4.1.1  客戶端RPC遠程調(diào)用實現(xiàn)類的職責 115
4.1.2  簡單的RPC客戶端實現(xiàn)類 117
4.1.3  從基礎(chǔ)原理講起:代理模式與RPC客戶端實現(xiàn)類 120
4.1.4  使用動態(tài)代理模式實現(xiàn)RPC客戶端類 123
4.1.5  JDK動態(tài)代理機制的原理 126
4.2  模擬的Feign RPC動態(tài)代理實現(xiàn) 128
4.2.1  模擬Feign的MethodHandler方法處理器 129
4.2.2  模擬Feign的InvokeHandler調(diào)用處理器 131
4.2.3  模擬Feign動態(tài)代理RPC的執(zhí)行流程 133
4.2.4  模擬動態(tài)代理RPC遠程調(diào)用的測試 134
4.2.5  Feign彈性RPC客戶端實現(xiàn)類 135
4.3  Feign彈性RPC客戶端的重要組件 136
4.3.1  演示用例說明 136
4.3.2  Feign的動態(tài)代理RPC客戶端實例 138
4.3.3  Feign的調(diào)用處理器InvocationHandler 139
4.3.4  Feign的方法處理器MethodHandler 141
4.3.5  Feign的客戶端組件 143
4.4  Feign的RPC動態(tài)代理實例的創(chuàng)建流程 146
4.4.1  Feign的整體運作流程 146
4.4.2  RPC動態(tài)代理容器實例的FactoryBean工廠類 147
4.4.3  Feign.Builder建造者容器實例 150
4.4.4  默認的RPC動態(tài)代理實例創(chuàng)建流程 152
4.4.5  Contract遠程調(diào)用協(xié)議規(guī)則類 155
4.5  Feigh遠程調(diào)用的執(zhí)行流程 156
4.5.1  與FeignInvocationHandler相關(guān)的遠程調(diào)用執(zhí)行流程 157
4.5.2  與HystrixInvocationHandler相關(guān)的遠程調(diào)用執(zhí)行流程 158
4.5.3  Feign遠程調(diào)用的完整流程及其特性 160
4.6  HystrixFeign動態(tài)代理實例的創(chuàng)建流程 161
4.6.1  HystrixFeign.Builder建造者容器實例 162
4.6.2  配置HystrixFeign.Builder建造者容器實例 163
4.7  feign.Client客戶端容器實例 163
4.7.1  裝配LoadBalancerFeignClient負載均衡容器實例 164
4.7.2  包裝ApacheHttpClient實例的負載均衡客戶端裝配 165
4.7.3  包裝OkHttpClient實例的負載均衡客戶端實例 167
4.7.4  包裝Client.Default實例的負載均衡客戶端實例 168
第5章  RxJava響應(yīng)式編程框架 169
5.1  從基礎(chǔ)原理講起:觀察者模式 169
5.1.1  觀察者模式的基礎(chǔ)原理 169
5.1.2  觀察者模式的經(jīng)典實現(xiàn) 170
5.1.3  Rxjava中的觀察者模式 172
5.1.4  RxJava的不完整回調(diào) 174
5.1.5  RxJava函數(shù)式編程 176
5.1.6  RxJava的Operators操作符 177
5.2  創(chuàng)建型操作符 178
5.2.1  just操作符 178
5.2.2  from操作符 179
5.2.3  range操作符 180
5.2.4  interval操作符 180
5.2.5  defer延遲創(chuàng)建操作符 181
5.3  過濾型操作符 182
5.3.1  filter操作符 182
5.3.2  distinct操作符 183
5.4  轉(zhuǎn)換型操作符 183
5.4.1  map操作符 183
5.4.2  flatMap操作符 184
5.4.3  scan操作符 186
5.5  聚合操作符 187
5.5.1  count操作符 187
5.5.2  reduce操作符 188
5.6  其他操作符 189
5.6.1  take操作符 190
5.6.2  window操作符 190
5.7  RxJava的Scheduler調(diào)度器 193
5.8  背壓 195
5.8.1  什么是背壓問題 195
5.8.2  背壓問題的幾種應(yīng)對模式 197
第6章  Hystrix RPC保護的原理 200
6.1  RPC保護的目標 200
6.2  HystrixCommand簡介 201
6.2.1  HystrixCommand的使用 201
6.2.2  HystrixCommand的配置內(nèi)容和方式 203
6.3  HystrixCommand命令執(zhí)行的方法 205
6.3.1  execute()方法 205
6.3.2  queue()方法 206
6.3.3  observe()方法 208
6.3.4  toObservable()方法 209
6.3.5  HystrixCommand的執(zhí)行方法之間的關(guān)系 210
6.4  RPC保護之艙壁模式 212
6.4.1  什么是艙壁模式 212
6.4.2  Hystrix線程池隔離 214
6.4.3  Hystrix線程池隔離配置 217
6.4.4  Hystrix信號量隔離 219
6.5  RPC保護之熔斷器模式 222
6.5.1  熔斷器狀態(tài)變化的演示實例 223
6.5.2  熔斷器和滑動窗口的配置屬性 226
6.5.3  Hystrix命令的執(zhí)行流程 230
6.6  RPC監(jiān)控之滑動窗口實現(xiàn)原理 231
6.6.1  Hystrix健康統(tǒng)計滑動窗口模擬實現(xiàn) 232
6.6.2  Hystrix滑動窗口核心實現(xiàn)原理 236
第7章  微服務(wù)網(wǎng)關(guān)與用戶身份識別 240
7.1  Zuul的基礎(chǔ)使用 241
7.2  創(chuàng)建Zuul網(wǎng)關(guān)服務(wù) 241
7.2.1  Zuul路由規(guī)則配置 242
7.2.2  過濾敏感請求頭部 244
7.2.3  路徑前綴的處理 244
7.3  Zuul過濾器 245
7.3.1  Zuul網(wǎng)關(guān)的過濾器類型 245
7.3.2  實戰(zhàn):用戶的黑名單過濾 247
7.4  Spring Security原理和實戰(zhàn) 250
7.4.1  Spring Security核心組件 250
7.4.2  Spring Security的請求認證處理流程 253
7.4.3  基于數(shù)據(jù)源的認證流程 258
7.5  JWT Spring Security進行網(wǎng)關(guān)安全認證 263
7.5.1  JWT安全令牌規(guī)范詳解 263
7.5.2  JWT Spring Security認證處理流程 267
7.5.3  Zuul網(wǎng)關(guān)與UAA微服務(wù)的配合 272
7.5.4  使用Zuul過濾器添加代理請求的用戶標識 276
7.6  微服務(wù)提供者之間的會話共享關(guān)系 277
7.6.1  分布式會話的起源和實現(xiàn)方案 278
7.6.2  Spring Session的核心組件和存儲細節(jié) 279
7.6.3  Spring Session的使用和定制 280
7.6.4  通過用戶身份標識查找session id 282
7.6.5  查找或創(chuàng)建分布式會話 283
7.6.6  加載高速訪問數(shù)據(jù)到分布式會話 285
第8章  Nginx/OpenResty詳解 287
8.1  Nginx簡介 287
8.1.1  正向代理與反向代理 288
8.1.2  Nginx的啟動與停止 289
8.1.3  Nginx的啟動命令和參數(shù)詳解 289
8.1.4  Linux下Openresty的啟動、停止腳本 290
8.1.5  Windows下Openresty的啟動、停止腳本 291
8.2  Nginx的核心原理 293
8.2.1  Reactor反應(yīng)器模型 293
8.2.2  Nginx的兩類進程 294
8.2.3  Nginx的模塊化設(shè)計 295
8.2.4  Nginx配置文件上下文結(jié)構(gòu) 296
8.2.5  Nginx的請求處理流程 298
8.2.6  HTTP請求處理的11個階段 299
8.3  Nginx的基礎(chǔ)配置 303
8.3.1  events事件驅(qū)動配置 303
8.3.2  虛擬主機配置 304
8.3.3  錯誤頁面配置 306
8.3.4  長連接相關(guān)配置 307
8.3.5  訪問日志配置 307
8.3.6  Nginx核心模塊內(nèi)置變量 308
8.4  location路由規(guī)則配置詳解 310
8.4.1  location語法詳解 310
8.4.2  常用的location路由配置 313
8.5  Nginx的rewrite模塊指令 314
8.5.1  set指令 314
8.5.2  rewrite指令 315
8.5.3  if條件指令 317
8.5.4  add_header指令 319
8.5.5  指令的執(zhí)行順序 320
8.6  反向代理與負載均衡配置 321
8.6.1  演示環(huán)境說明 321
8.6.2  proxy_pass反向代理指令 322
8.6.3  proxy_set_header指令 323
8.6.4  upstream上游服務(wù)器組 324
8.6.5  upstream的上游服務(wù)器配置 326
8.6.6  upstream的負載分配方式 327
第9章  Nginx Lua編程 329
9.1  Nginx Lua編程主要的應(yīng)用場景 329
9.2  Nginx Lua編程簡介 329
9.2.1  ngx_lua簡介 330
9.2.2  Nginx Lua項目的創(chuàng)建 330
9.2.3  Lua項目的工程結(jié)構(gòu) 331
9.2.4  Lua項目的啟動 331
9.3  Lua開發(fā)基礎(chǔ) 332
9.3.1  Lua模塊的定義和使用 333
9.3.2  Lua模塊的使用 333
9.3.3  Lua的數(shù)據(jù)類型 334
9.3.4  Lua的字符串 337
9.3.5  Lua中的數(shù)組容器 338
9.3.6  Lua的控制結(jié)構(gòu) 340
9.3.7  Lua的函數(shù)定義 342
9.3.8  Lua的面向?qū)ο缶幊?344
9.4  Nginx Lua編程基礎(chǔ) 345
9.4.1  Nginx Lua的執(zhí)行原理 345
9.4.2  Nginx Lua的配置指令 346
9.4.3  Nginx Lua的常用配置指令 347
9.4.4  Nginx Lua的內(nèi)置常量和變量 350
9.5  Nginx Lua編程實例 352
9.5.1  Lua腳本獲取URL中的參數(shù) 352
9.5.2  Nginx Lua的內(nèi)置方法 353
9.5.3  通過ngx.header設(shè)置HTTP響應(yīng)頭 355
9.5.4  Lua訪問Nginx變量 358
9.5.5  Lua訪問請求上下文變量 359
9.6  重定向與內(nèi)部子請求 360
9.6.1  Nginx Lua內(nèi)部重定向 360
9.6.2  Nginx Lua外部重定向 362
9.6.3  ngx.location.capture子請求 364
9.6.4  ngx.location.capture_multi并發(fā)子請求 367
9.7  Nginx Lua操作Redis 369
9.7.1  Redis的CRUD基本操作 369
9.7.2  實戰(zhàn):封裝一個操作Redis的基礎(chǔ)類 371
9.7.3  在Lua中使用Redis連接池 373
9.8  Nginx Lua編程實戰(zhàn)案例 375
9.8.1  Nginx Redis進行分布式訪問統(tǒng)計 375
9.8.2  Nginx Redis Java容器實現(xiàn)高并發(fā)訪問 376
9.8.3  Nginx Redis實現(xiàn)黑名單攔截 380
9.8.4  使用Nginx Lua共享內(nèi)存 382
第10章  限流原理與實戰(zhàn) 384
10.1  使用Redis實現(xiàn)簡單限流策略 384
10.1.1  3種限流策略:計數(shù)器、漏桶、令牌桶 384
10.1.2  計數(shù)器限流原理和Java參考實現(xiàn) 385
10.1.3  漏桶算法限流原理和Java參考實現(xiàn) 387
10.1.4  令牌桶限流原理和Java參考實現(xiàn) 389
10.2  分布式計數(shù)器限流 391
10.2.1  Nginx Lua分布式計數(shù)器限流 391
10.2.2  Redis Lua分布式計數(shù)器限流 394
10.3  Nginx漏桶限流詳解 397
10.4  實戰(zhàn):分布式令牌桶限流 399
10.4.1  分布式令牌桶限流Lua腳本 399
10.4.2  Java分布式令牌桶限流 401
10.4.3  Java分布式令牌桶限流的自驗證 404
第11章  Spring Cloud Nginx秒殺實戰(zhàn) 406
11.1  秒殺業(yè)務(wù)特定和技術(shù)難點 406
11.1.1  秒殺系統(tǒng)的業(yè)務(wù)功能 406
11.1.2  秒殺系統(tǒng)面臨的技術(shù)難題 407
11.2  秒殺系統(tǒng)的系統(tǒng)架構(gòu) 408
11.2.1  秒殺的分層架構(gòu) 408
11.2.2  秒殺的限流架構(gòu) 410
11.2.3  秒殺的分布式鎖架構(gòu) 411
11.2.4  秒殺的削峰架構(gòu) 412
11.3  秒殺業(yè)務(wù)的參考實現(xiàn) 413
11.3.1  秒殺的功能模塊和接口設(shè)計 413
11.3.2  數(shù)據(jù)表和PO實體類設(shè)計 416
11.3.3  使用分布式ID生成器 418
11.3.4  秒殺的controller層設(shè)計 420
11.3.5  service層邏輯:獲取秒殺令牌 421
11.3.6  service層邏輯:執(zhí)行秒殺下單 424
11.3.7  秒殺的Lua腳本設(shè)計 427
11.3.8  BusinessException業(yè)務(wù)異常定義 429
11.4  Zuul內(nèi)部網(wǎng)關(guān)實現(xiàn)秒殺限流 431
11.5  Nginx高性能秒殺和限流 435
11.5.1  Lua腳本:獲取秒殺令牌 436
11.5.2  Lua腳本:執(zhí)行令牌桶限流 438

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號