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

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

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

定 價:¥118.00

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

購買這本書可以去


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

內容簡介

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

作者簡介

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

圖書目錄


第1章  億級用戶Web應用的架構與實操 1
1.1  高并發(fā)基本原理 1
1.1.1  響應時間 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ā)架構中的分層策略 6
1.3  接入層橫向擴展高并發(fā)架構 7
1.3.1  硬負載均衡 7
1.3.2  軟負載均衡 8
1.3.3  LVS和Nginx的配合使用 10
1.3.4  DNS負載均衡 10
1.4  動靜分離與接入層的緩存架構 14
1.4.1  接入層網關緩存 14
1.4.2  CDN加速 15
1.4.3  接入層的緩存架構的原則 17
1.5  服務層的橫向擴展高并發(fā)架構 18
1.5.1  微服務網關的高并發(fā)橫向擴展 18
1.5.2  微服務Provider高并發(fā)橫向擴展 19
1.5.3  微服務Provider的自動伸縮 20
1.6  緩存層的高并發(fā)架構 24
1.6.1  旁路緩存模式 24
1.6.2  讀/寫穿透模式 26
1.6.3  異步回寫模式 28
1.6.4  三大緩存使用模式的比較 28
1.6.5  旁路緩存模式如何保證雙寫的數據一致性 29
1.6.6  本地緩存架構 39
1.6.7  多級、細粒度緩存架構 42
1.7  數據層的橫向擴展高并發(fā)架構 44
1.7.1  數據庫服務器的能力參考數據 44
1.7.2  結構化數據的高并發(fā)架構方案:分庫分表 45
1.7.3  結構化分庫分表:水平拆分與垂直拆分 46
1.7.4  億級庫表規(guī)模架構設計 47
1.7.5  百億級庫表架構設計 48
1.7.6  百億級數據的異構查詢 49
1.7.7  ES HBase組合方案的數據查詢過程 50
1.8  億級用戶量場景下的流量預估 50
1.8.1  請求處理模型 50
1.8.2  舊系統(tǒng)的流量架構 52
1.8.3  新系統(tǒng)的流量架構 52
1.8.4  二八定律 52
1.8.5  通過二八定律進行流量預估 53
1.9  高并發(fā)架構 56
1.9.1  同步架構 56
1.9.2  異步架構 56
1.10  高可用架構 57
1.10.1  什么是高可用 57
1.10.2  高可用的度量 58
1.10.3  高并發(fā)架構中的分層策略 58
1.10.4  分層規(guī)避單點瓶頸 自動故障轉移 58
1.10.5  其他的高可用策略 59
1.11  高性能架構 59
第2章  Spring Cloud Nginx高并發(fā)核心編程的學習準備 61
2.1  Spring Cloud Nginx架構的主要組件 61
2.2  Spring Cloud Nginx核心知識的廣泛欠缺 63
2.3  Spring Cloud和Spring Boot的版本選擇 63
2.4  Spring Cloud微服務開發(fā)所涉及的中間件 65
2.5  Spring Cloud微服務開發(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微服務開發(fā)腳手架 69
2.7  以秒殺作為Spring Cloud Nginx的實戰(zhàn)案例 70
第3章  Spring Cloud入門實戰(zhàn) 72
3.1  Eureka服務注冊與發(fā)現 73
3.1.1  什么是服務注冊與發(fā)現 73
3.1.2  Eureka Server注冊中心 74
3.1.3  微服務提供者Provider的創(chuàng)建和配置 79
3.1.4  微服務提供者的續(xù)約(心跳) 82
3.1.5  微服務提供者的健康狀態(tài) 84
3.1.6  Eureka自我保護模式與失效Provider的快速剔除 87
3.2  Config配置中心 90
3.2.1  config-server服務端組件 90
3.2.2  config-client客戶端組件 92
3.3  微服務的RPC遠程調用 93
3.3.1  RESTfull風格簡介 94
3.3.2  RestTemplate遠程調用 94
3.3.3  Feign遠程調用 96
3.4  Feign Ribbon實現客戶端負載均衡 97
3.4.1  Spring Cloud Ribbon基礎 97
3.4.2  Spring Cloud Ribbon的負載均衡策略 100
3.4.3  Spring Cloud Ribbon的常用配置 101
3.5  Feign Hystrix實現RPC調用保護 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遠程調用 核心原理 115
4.1  代理模式與RPC客戶端實現類 115
4.1.1  客戶端RPC遠程調用實現類的職責 115
4.1.2  簡單的RPC客戶端實現類 117
4.1.3  從基礎原理講起:代理模式與RPC客戶端實現類 120
4.1.4  使用動態(tài)代理模式實現RPC客戶端類 123
4.1.5  JDK動態(tài)代理機制的原理 126
4.2  模擬的Feign RPC動態(tài)代理實現 128
4.2.1  模擬Feign的MethodHandler方法處理器 129
4.2.2  模擬Feign的InvokeHandler調用處理器 131
4.2.3  模擬Feign動態(tài)代理RPC的執(zhí)行流程 133
4.2.4  模擬動態(tài)代理RPC遠程調用的測試 134
4.2.5  Feign彈性RPC客戶端實現類 135
4.3  Feign彈性RPC客戶端的重要組件 136
4.3.1  演示用例說明 136
4.3.2  Feign的動態(tài)代理RPC客戶端實例 138
4.3.3  Feign的調用處理器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遠程調用協議規(guī)則類 155
4.5  Feigh遠程調用的執(zhí)行流程 156
4.5.1  與FeignInvocationHandler相關的遠程調用執(zhí)行流程 157
4.5.2  與HystrixInvocationHandler相關的遠程調用執(zhí)行流程 158
4.5.3  Feign遠程調用的完整流程及其特性 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響應式編程框架 169
5.1  從基礎原理講起:觀察者模式 169
5.1.1  觀察者模式的基礎原理 169
5.1.2  觀察者模式的經典實現 170
5.1.3  Rxjava中的觀察者模式 172
5.1.4  RxJava的不完整回調 174
5.1.5  RxJava函數式編程 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  轉換型操作符 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調度器 193
5.8  背壓 195
5.8.1  什么是背壓問題 195
5.8.2  背壓問題的幾種應對模式 197
第6章  Hystrix RPC保護的原理 200
6.1  RPC保護的目標 200
6.2  HystrixCommand簡介 201
6.2.1  HystrixCommand的使用 201
6.2.2  HystrixCommand的配置內容和方式 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í)行方法之間的關系 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)控之滑動窗口實現原理 231
6.6.1  Hystrix健康統(tǒng)計滑動窗口模擬實現 232
6.6.2  Hystrix滑動窗口核心實現原理 236
第7章  微服務網關與用戶身份識別 240
7.1  Zuul的基礎使用 241
7.2  創(chuàng)建Zuul網關服務 241
7.2.1  Zuul路由規(guī)則配置 242
7.2.2  過濾敏感請求頭部 244
7.2.3  路徑前綴的處理 244
7.3  Zuul過濾器 245
7.3.1  Zuul網關的過濾器類型 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  基于數據源的認證流程 258
7.5  JWT Spring Security進行網關安全認證 263
7.5.1  JWT安全令牌規(guī)范詳解 263
7.5.2  JWT Spring Security認證處理流程 267
7.5.3  Zuul網關與UAA微服務的配合 272
7.5.4  使用Zuul過濾器添加代理請求的用戶標識 276
7.6  微服務提供者之間的會話共享關系 277
7.6.1  分布式會話的起源和實現方案 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  加載高速訪問數據到分布式會話 285
第8章  Nginx/OpenResty詳解 287
8.1  Nginx簡介 287
8.1.1  正向代理與反向代理 288
8.1.2  Nginx的啟動與停止 289
8.1.3  Nginx的啟動命令和參數詳解 289
8.1.4  Linux下Openresty的啟動、停止腳本 290
8.1.5  Windows下Openresty的啟動、停止腳本 291
8.2  Nginx的核心原理 293
8.2.1  Reactor反應器模型 293
8.2.2  Nginx的兩類進程 294
8.2.3  Nginx的模塊化設計 295
8.2.4  Nginx配置文件上下文結構 296
8.2.5  Nginx的請求處理流程 298
8.2.6  HTTP請求處理的11個階段 299
8.3  Nginx的基礎配置 303
8.3.1  events事件驅動配置 303
8.3.2  虛擬主機配置 304
8.3.3  錯誤頁面配置 306
8.3.4  長連接相關配置 307
8.3.5  訪問日志配置 307
8.3.6  Nginx核心模塊內置變量 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上游服務器組 324
8.6.5  upstream的上游服務器配置 326
8.6.6  upstream的負載分配方式 327
第9章  Nginx Lua編程 329
9.1  Nginx Lua編程主要的應用場景 329
9.2  Nginx Lua編程簡介 329
9.2.1  ngx_lua簡介 330
9.2.2  Nginx Lua項目的創(chuàng)建 330
9.2.3  Lua項目的工程結構 331
9.2.4  Lua項目的啟動 331
9.3  Lua開發(fā)基礎 332
9.3.1  Lua模塊的定義和使用 333
9.3.2  Lua模塊的使用 333
9.3.3  Lua的數據類型 334
9.3.4  Lua的字符串 337
9.3.5  Lua中的數組容器 338
9.3.6  Lua的控制結構 340
9.3.7  Lua的函數定義 342
9.3.8  Lua的面向對象編程 344
9.4  Nginx Lua編程基礎 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的內置常量和變量 350
9.5  Nginx Lua編程實例 352
9.5.1  Lua腳本獲取URL中的參數 352
9.5.2  Nginx Lua的內置方法 353
9.5.3  通過ngx.header設置HTTP響應頭 355
9.5.4  Lua訪問Nginx變量 358
9.5.5  Lua訪問請求上下文變量 359
9.6  重定向與內部子請求 360
9.6.1  Nginx Lua內部重定向 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的基礎類 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容器實現高并發(fā)訪問 376
9.8.3  Nginx Redis實現黑名單攔截 380
9.8.4  使用Nginx Lua共享內存 382
第10章  限流原理與實戰(zhàn) 384
10.1  使用Redis實現簡單限流策略 384
10.1.1  3種限流策略:計數器、漏桶、令牌桶 384
10.1.2  計數器限流原理和Java參考實現 385
10.1.3  漏桶算法限流原理和Java參考實現 387
10.1.4  令牌桶限流原理和Java參考實現 389
10.2  分布式計數器限流 391
10.2.1  Nginx Lua分布式計數器限流 391
10.2.2  Redis Lua分布式計數器限流 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è)務特定和技術難點 406
11.1.1  秒殺系統(tǒng)的業(yè)務功能 406
11.1.2  秒殺系統(tǒng)面臨的技術難題 407
11.2  秒殺系統(tǒng)的系統(tǒng)架構 408
11.2.1  秒殺的分層架構 408
11.2.2  秒殺的限流架構 410
11.2.3  秒殺的分布式鎖架構 411
11.2.4  秒殺的削峰架構 412
11.3  秒殺業(yè)務的參考實現 413
11.3.1  秒殺的功能模塊和接口設計 413
11.3.2  數據表和PO實體類設計 416
11.3.3  使用分布式ID生成器 418
11.3.4  秒殺的controller層設計 420
11.3.5  service層邏輯:獲取秒殺令牌 421
11.3.6  service層邏輯:執(zhí)行秒殺下單 424
11.3.7  秒殺的Lua腳本設計 427
11.3.8  BusinessException業(yè)務異常定義 429
11.4  Zuul內部網關實現秒殺限流 431
11.5  Nginx高性能秒殺和限流 435
11.5.1  Lua腳本:獲取秒殺令牌 436
11.5.2  Lua腳本:執(zhí)行令牌桶限流 438

本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.dappsexplained.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號