全網第一本深刻 SpringCloud 、Nginx 原理的書,Java開發、架構、面試 必備html
5G、IOT、多屏合1、萬物互聯時代來了,SpringCloud+Nginx分佈式微服務架構已經成爲Java後端應用的主流架構,可是對於SpringCloud RPC底層原理、Nginx底層原理等核心知識,廣大的Java開發同窗們相對欠缺,並且市面上這方面的書也較少。面試
目前 SpringCloud + Nginx 架構已是目前的 Java 主流,可是,不管對 SpringCloud微服務的核心原理,仍是對 Nginx 的核心知識,大量的開發同窗們還不是瞭解較少,更多的是處於怎麼使用、配置的階段。
前段時間,筆者在多場 Java 資深工程師、架構師的面試中,問了幾個稍微基礎一點的問題,大體以下:spring
問題1 : 請介紹一下 SpringCloud 的 RPC 流程?編程
答案總結:
大部分候選人的答案,僅僅涉及到 Eureka、Zuul、Hystix 斷路器等基本概念和淺層次的知識,大部分的候選人,對於 Feign 內部 RPC 原理,以及 Feign 和 Hystix 之間的內部關係,根本不瞭解。後端
問題2 :有關 SpringCloud 性能,有哪些優化點?設計模式
答案總結:
大部分候選人,會涉及到 緩衝、加節點等基本的處理,不會涉及到 Feign 鏈接池、Hystix 線程池等組件的高性能配置,也沒有涉及到 HTTP 長鏈接等更加底層的配置。數組
問題3: 請介紹一下 Hystix 中的滑動窗口?緩存
答案總結:
有的候選人,居然爲徹底的不知道。安全
問題4: 請說一說對 Nginx 的原理?服務器
答案總結:
大部分候選人,僅僅介紹了一下 Nginx 的簡單配置,對於其基礎結構和 HTTP 請求處理流程,根本沒有接觸過,更加不知道如何進行高性能的應用開發。
重點:回答以上問題的候選人,有一位,居然是有過10多年的開發經驗的資深Java工程師。 毫無疑問,這位有着10多年經驗的資深 Java 工程師,對 SpringCloud 和Nginx 核心知識如此欠缺,顯然不大可能架構出高性能的 Java 應用,固然,也是勝任不了 Java 架構師崗位的。
而實際上,經過筆者的交流了解,對於 SpringCloud 和 Nginx 核心知識的缺少,不是以上面試候選人的個性問題,筆者周圍的不少的熟悉的工程師,都存在這個問題。
總之,對 SpringCloud 和 Nginx 架構的核心知識的缺少深刻的瞭解和掌握,目前來講是一個涉及面較廣的共性問題。
《SpringCloud、Nginx高併發核心編程》的初衷,爲你們順利成長爲優秀的 Java 工程師甚至架構師盡一份綿薄之力。
初衷:爲你們奉上一本Spring Cloud、Nginx「原理級」「思想級」經典圖書,爲幫助你們順利進入互聯網大廠、成爲Java核心架構師盡一份綿薄之力。
目標很是明確:助力你們進入大廠、進入大廠、進入大廠, 或者助力你們成爲架構師、成爲架構師、成爲架構師
鑽研Java近20載、有N年架構經驗Java老中醫的尼恩(瘋狂創客圈發起人),首創了本身的寫做方式——「尼恩筆法」,從設計模式和基礎知識入手,抽絲剝繭,將高深莫測、複雜難懂的高併發核心知識介紹得娓娓道來、淺顯易懂。並使用「尼恩筆法」爲你們奉上了兩本書:《Netty、Zookeeper、Redis高併發實戰》《SpringCloud、Nginx高併發核心編程》。
本書內容主要包括如下三大方面:
- 本書從Java靜態代理、動態代理模式入手,抽絲剝繭得解讀了Spring Cloud全家桶中RPC核心原理和執行過程,這是高級Java工程師面試必備的基礎知識。
- 本書從Reactor反應器模式入手,抽絲剝繭得解讀了Nginx核心思想和各配置項的底層知識和原理,這是高級Java工程師、架構師面試必須掌握的基礎知識。
- 本書從觀察者模式入手,抽絲剝繭得解讀了RxJava、Hystrix的核心思想和使用方法,這也是高級Java工程師、架構師面試必須掌握的基礎知識。
下面的讀者評價來自於{瘋狂創客圈}社羣小夥伴,基於「尼恩筆法」編寫的第一本書《Netty、Zookeeper·、Redis高併發實戰》有還不錯的評價,部分以下:
社羣小夥伴 @感受
關於Netty的書我買了4本,只有這本看了4遍以上,其餘的書沒怎麼翻過。要是當初沒有入手這本書,估計個人項目就蹦了。如今市面上的書,不多有做者這麼良心了。
社羣小夥伴 @我朝你看
書的內容很詳細,很容易理解。老師通知咱們每個人人手一本。是學分佈式和併發的必備書籍。
社羣小夥伴 @empty
書的內容很是好,對如今不懂的領域有了很詳細的人生,豁然開朗的感受
社羣小夥伴 @夜月魂
買了多本Netty方面的書,這本書比其餘的書講得更清楚。
社羣小夥伴 @老孟無敵
讀了你的Netty的書,感受好爽啊,期待你的新書哦。
社羣小夥伴 @only_one
書的內容很是好,很實用,幫助理清楚了不少的思路。
社羣小夥伴 @墮落小子
書的內容仍是很是好的,比較系統,比較全面,知識點也比較細,我是極力給小夥伴推薦的。
社羣小夥伴 @蒲公英
第一次真的明白阻塞IO、同步IO是怎麼回事,很感謝這本書
尼恩編寫的系列圖書《SpringCloud、Nginx高併發核心編程》《Netty、Zookeeper·、Redis高併發實戰》的交流方式:
高併發研習社羣——瘋狂創客圈社羣 QQ羣:104131248
第1章 Spring Cloud+Nginx 高併發核心編程的學習準備 ........................ 1
1.1 Spring Cloud+Nginx架構的主要組件 ........................................ 1
1.2 Spring Cloud和Spring Boot的版本選擇 ........................................ 3
1.3 Spring Cloud微服務開發所涉及的中間件..................................... 4
1.4 Spring Cloud微服務開發和自驗證環境 ........................................ 6
1.4.1 開發和自驗證環境的系統選項和環境變量配置........................................ 6
1.4.2 使用Fiddler工具抓包和查看報文........................................ 7
1.5 crazy-springcloud微服務開發腳手........................................ 9
1.6 以秒殺做爲Spring Cloud+Nginx的實戰案例 ........................................ 10
第2章 Spring Cloud入門實戰 ........................................ 12
2.1 Eureka服務註冊與發現 ........................................ 13
2.1.1 什麼是服務註冊與發現 ........................................ 13
2.1.2 Eureka Server註冊中心 ........................................ 14
2.1.3 服務提供者的建立和配置 ........................................ 19
2.1.4 服務提供者的續約(心跳) ........................................ 22
2.1.5 服務提供者的健康狀態 ........................................ 24
2.1.6 Eureka自我保護模式與失效Provider的快速剔除 .................................... 28
2.2 Config配置中心 ........................................ 32
2.2.1 config-server服務端組件 ........................................ 32
2.2.2 config-client客戶端組件 ........................................ 35
2.3 微服務的RPC遠程調用 ........................................ 36
2.3.1 RESTful風格簡介 ........................................ 36
2.3.2 RestTemplate遠程調用 ........................................ 37
2.3.3 Feign遠程調用 ........................................ 38
2.4 Feign+Ribbon實現客戶端負載均衡 ........................................ 40
2.4.1 Spring Cloud Ribbon基礎 ........................................ 41
2.4.2 Spring Cloud Ribbon的負載均衡策略 ........................................ 43
2.4.3 Spring Cloud Ribbon的經常使用配置 ........................................ 45
2.5 Feign+Hystrix實現RPC調用保護 ........................................ 50
2.5.1 Spring Cloud Hystrix失敗回退 ........................................ 51
2.5.2 分佈式系統面臨的雪崩難題 ........................................ 55
2.5.3 Spring Cloud Hystrix熔斷器 ........................................ 56
第3章 Spring Cloud RPC遠程調用核心原理 ........................................ 61
3.1 代理模式與RPC客戶端實現類 ........................................ 61
3.1.1 客戶端RPC遠程調用實現類的職責 ........................................ 61
3.1.2 簡單的RPC客戶端實現類 ........................................ 63
3.1.3 從基礎原理講起:代理模式與RPC客戶端實現類 ........................................ 67
3.1.4 使用動態代理模式實現RPC客戶端類 ........................................ 70
3.1.5 JDK動態代理機制的原理 ........................................ 74
3.2 模擬Feign RPC動態代理的實現 ........................................ 77
3.2.1 模擬Feign的方法處理器MethodHandler ........................................ 78
3.2.2 模擬Feign的調用處理器InvocationHandler ...................................... 80
3.2.3 模擬Feign的動態代理RPC的執行流程 ........................................ 83
3.2.4 模擬動態代理RPC遠程調用的測試 ........................................ 83
3.2.5 Feign彈性RPC客戶端實現類 ........................................ 85
3.3 Feign彈性RPC客戶端的重要組件 ........................................ 86
3.3.1 演示用例說明 ........................................ 86
3.3.2 Feign的動態代理RPC客戶端實例 ........................................ 88
3.3.3 Feign的調用處理器InvocationHandler ........................................ 89
3.3.4 Feign的方法處理器MethodHandler ........................................ 91
3.3.5 Feign的客戶端組件 ........................................ 94
3.4 Feign的RPC動態代理實例的建立流程 ........................................ 97
3.4.1 Feign的總體運做流程 ........................................ 98
3.4.2 RPC動態代理容器實例的FactoryBean工廠類 ........................................ 99
3.4.3 Feign.Builder建造者容器實例 ........................................ 102
3.4.4 默認的RPC動態代理實例的建立流程 ........................................ 105
3.4.5 Contract遠程調用協議規則類 ........................................ 108
3.5 Feign遠程調用的執行流程 ........................................ 110
3.5.1 與FeignInvocationHandler相關的遠程調用執行流程 ................................... 110
3.5.2 與HystrixInvocationHandler相關的遠程調用執行流程 ................................. 111
3.5.3 Feign遠程調用的完整流程及其特性 ........................................ 114
3.6 HystrixFeign動態代理實例的建立流程 ........................................ 115
3.6.1 HystrixFeign.Builder建造者容器實例 ........................................ 115
3.6.2 配置HystrixFeign.Builder建造者容器實例 ...................................... 116
3.7 feign.Client客戶端容器實例 ........................................ 117
3.7.1 裝配LoadBalancerFeignClient負載均衡容器實例 ................................ 117
3.7.2 裝配ApacheHttpClient負載均衡容器實例 ........................................ 119
3.7.3 裝配OkHttpClient負載均衡容器實例 ........................................ 121
3.7.4 裝配Client.Default負載均衡容器實例 ................................ 122
第4章 RxJava響應式編程框架 ........................................ 124
4.1 從基礎原理講起:觀察者模式 ........................................ 124
4.1.1 觀察者模式的基礎原理 ........................................ 124
4.1.2 觀察者模式的經典實現 ........................................ 125
4.1.3 RxJava中的觀察者模式 ........................................ 127
4.1.4 RxJava的不完整回調........................................ 130
4.1.5 RxJava的函數式編程........................................ 132
4.1.6 RxJava的操做符........................................ 134
4.2 建立型操做符 ........................................ 134
4.2.1 just操做符 ........................................ 135
4.2.2 from操做符 ........................................ 135
4.2.3 range操做符 ........................................ 136
4.2.4 interval操做符 ........................................ 137
4.2.5 defer操做符 ........................................ 138
4.3 過濾型操做符 ........................................ 139
4.3.1 filter操做符 ........................................ 139
4.3.2 distinct操做符 ........................................ 140
4.4 轉換型操做符 ........................................ 141
4.4.1 map操做符 ........................................ 141
4.4.2 flatMap操做符 ........................................ 142
4.4.3 scan操做符 ........................................ 144
4.5 聚合操做符 ........................................146
4.5.1 count操做符 ........................................ 146
4.5.2 reduce操做符 ........................................ 147
4.6 其餘操做符 ........................................ 149
4.6.1 take操做符 ........................................ 149
4.6.2 window操做符 ........................................ 150
4.7 RxJava的Scheduler調度器........................................ 153
4.8 背壓 ........................................ 155
4.8.1 什麼是背壓問題 ........................................ 155
4.8.2 背壓問題的幾種應對模式 ........................................ 158
第5章 Hystrix RPC保護的原理 ........................................ 162
5.1 RPC保護的目標 ........................................ 162
5.2 HystrixCommand簡介 ........................................ 162
5.2.1 HystrixCommand的使用 ........................................ 163
5.2.2 HystrixCommand的配置內容和方式 ........................................ 166
5.3 HystrixCommand命令的執行方法 ........................................ 168
5.3.1 execute()方法 ........................................ 168
5.3.2 queue()方法 ........................................ 170
5.3.3 observe()方法 ........................................ 172
5.3.4 toObservable()方法 ........................................ 173
5.3.5 HystrixCommand的執行方法之間的關係 ........................................ 175
5.4 RPC保護之艙壁模式 ........................................ 176
5.4.1 什麼是艙壁模式 ........................................ 176
5.4.2 Hystrix線程池隔離 ........................................ 178
5.4.3 Hystrix線程池隔離配置 ........................................ 182
5.4.4 Hystrix信號量隔離 ........................................ 184
5.5 RPC保護之熔斷器模式 ........................................ 188
5.5.1 熔斷器狀態變化的演示實例 ........................................ 189
5.5.2 熔斷器和滑動窗口的配置屬性 ........................................ 193
5.5.3 Hystrix命令的執行流程 ........................................ 198
5.6 RPC監控之滑動窗口的實現原理 ........................................ 199
5.6.1 Hystrix健康統計滑動窗口的模擬實現........................................ 200
5.6.2 Hystrix滑動窗口的核心實現原理 ........................................ 205
第6章 微服務網關與用戶身份識別 ........................................ 210
6.1 Zuul的基礎使用 ........................................ 211
6.2 建立Zuul網關服務 ........................................ 211
6.2.1 Zuul路由規則配置 ........................................ 212
6.2.2 過濾敏感請求頭部 ........................................ 214
6.2.3 路徑前綴的處理 ........................................ 215
6.3 Zuul過濾器 ........................................ 216
6.3.1 Zuul網關的過濾器類型 ........................................ 216
6.3.2 實戰:用戶的黑名單過濾 ........................................ 217
6.4 Spring Security原理和實戰 ........................................ 221
6.4.1 Spring Security核心組件 ........................................ 221
6.4.2 Spring Security的請求認證處理流程 ........................................ 224
6.4.3 基於數據源的認證流程 ........................................ 231
6.5 JWT+Spring Security進行網關安全認證 ........................................ 237
6.5.1 JWT安全令牌規範詳解 ........................................ 238
6.5.2 JWT+Spring Security認證處理流程 ........................................ 243
6.5.3 Zuul網關與UAA微服務的配合 ........................................ 250
6.5.4 使用Zuul過濾器添加代理請求的用戶標識 ........................................ 254
6.6 服務提供者之間的會話共享關係 ........................................ 256
6.6.1 分佈式Session的起源和實現方案 ........................................ 257
6.6.2 Spring Session的核心組件和存儲細節 ........................................ 258
6.6.3 Spring Session的使用和定製........................................ 259
6.6.4 經過用戶身份標識查找Session ID ..................................... 261
6.6.5 查找或建立分佈式Session ........................................ 263
6.6.6 加載高速訪問數據到分佈式Session ........................................ 265
第7章 Nginx/OpenResty詳解 ........................................ 268
7.1 Nginx簡介 ........................................ 268
7.1.1 正向代理與反向代理 ........................................ 269
7.1.2 Nginx的啓動與中止 ........................................ 270
7.1.3 Nginx的啓動命令和參數詳解 ........................................ 271
7.1.4 Linux下OpenResty的啓動、中止腳本 ........................................ 271
7.1.5 Windows下OpenResty的啓動、中止腳本 ........................................ 273
7.2 Nginx的核心原理 ........................................ 274
7.2.1 Reactor模型 ........................................ 274
7.2.2 Nginx的兩類進程 ........................................ 275
7.2.3 Nginx的模塊化設計 ........................................ 276
7.2.4 Nginx配置文件上下文結構 ........................................ 278
7.2.5 Nginx的請求處理流程 ........................................ 280
7.2.6 HTTP請求處理的11個階段 ........................................ 281
7.3 Nginx的基礎配置 ........................................ 286
7.3.1 events事件驅動配置 ........................................ 286
7.3.2 虛擬主機配置 ........................................ 287
7.3.3 錯誤頁面配置 ........................................ 289
7.3.4 長鏈接相關配置 ........................................ 290
7.3.5 訪問日誌配置 ........................................ 290
7.3.6 Nginx核心模塊內置變量 ........................................ 291
7.4 location路由規則配置詳解 ........................................ 293
7.4.1 location語法詳解 ........................................ 293
7.4.2 經常使用的location路由配置 ........................................ 296
7.5 Nginx的rewrite模塊指令 ........................................ 297
7.5.1 set指令 ........................................ 298
7.5.2 rewrite指令 ........................................ 298
7.5.3 if條件指令 ........................................ 301
7.5.4 add_header指令 ........................................ 303
7.5.5 指令的執行順序 ........................................ 304
7.6 反向代理與負載均衡配置 ........................................ 305
7.6.1 演示環境說明 ........................................ 305
7.6.2 proxy_pass反向代理指令 ........................................ 306
7.6.3 proxy_set_header請求頭設置指令 ................................... 308
7.6.4 upstream上游服務器組 ........................................ 309
7.6.5 upstream的上游服務器配置 ........................................ 311
7.6.6 upstream的負載分配方式 ........................................ 313
第8章 Nginx Lua編程 ........................................ 315
8.1 Nginx Lua編程的主要應用場景 ........................................ 315
8.2 Nginx Lua編程簡介 ........................................ 315
8.2.1 ngx_lua簡介 ........................................ 315
8.2.2 Nginx Lua項目的建立 ........................................ 316
8.2.3 Lua項目的工程結構 ........................................ 317
8.2.4 Lua項目的啓動 ........................................ 318
8.3 Lua開發基礎 ........................................ 319
8.3.1 Lua模塊的定義和使用 ........................................ 319
8.3.2 Lua模塊的使用 ........................................ 320
8.3.3 Lua的數據類型 ........................................ 322
8.3.4 Lua的字符串 ........................................ 325
8.3.5 Lua的數組容器 ........................................ 326
8.3.6 Lua的控制結構 ........................................ 328
8.3.7 Lua的函數定義 ........................................ 331
8.3.8 Lua的面向對象編程 ........................................ 332
8.4 Nginx Lua編程基礎 ........................................ 333
8.4.1 Nginx Lua的執行原理 ........................................ 334
8.4.2 Nginx Lua的配置指令 ........................................ 335
8.4.3 Nginx Lua的內置常量和變量 ........................................ 339
8.5 Nginx Lua編程實例 ........................................ 341
8.5.1 Lua腳本獲取URL中的參數 ........................................ 341
8.5.2 Nginx Lua的內置方法 ........................................ 342
8.5.3 經過ngx.header設置HTTP響應頭 ........................................ 344
8.5.4 Lua訪問Nginx變量 ........................................ 347
8.5.5 Lua訪問請求上下文變量 ........................................ 349
8.6 重定向與內部子請求 ........................................ 350
8.6.1 Nginx Lua內部重定向 ........................................ 350
8.6.2 Nginx Lua外部重定向 ........................................ 352
8.6.3 ngx.location.capture子請求 ........................................ 355
8.6.4 ngx.location.capture_multi併發子請求 .......................................359
8.7 Nginx Lua操做Redis ........................................ 361
8.7.1 Redis的CRUD基本操做 ........................................ 361
8.7.2 實戰:封裝一個操做Redis的基礎類 ........................................ 364
8.7.3 在Lua中使用Redis鏈接池 ........................................ 367
8.8 Nginx Lua編程實戰案例 ........................................ 369
8.8.1 Nginx+Redis進行分佈式訪問統計 ........................................ 369
8.8.2 Nginx+Redis+Java容器實現高併發訪問 ........................................ 370
8.8.3 Nginx+Redis實現黑名單攔截 ........................................ 375
8.8.4 使用Nginx Lua共享內存 ........................................ 378
第9章 限流原理與實戰 ........................................ 380
9.1 限流策略原理與參考實現 ........................................ 380
9.1.1 3種限流策略:計數器、漏桶和令牌桶 ........................................ 380
9.1.2 計數器限流原理和Java參考實現 ........................................ 381
9.1.3 漏桶限流原理和Java參考實現 ........................................ 384
9.1.4 令牌桶限流原理和Java參考實現 ........................................ 386
9.2 分佈式計數器限流 ........................................ 390
9.2.1 實戰:Nginx Lua分佈式計數器限流 ........................................ 390
9.2.2 實戰:Redis Lua分佈式計數器限流 ........................................ 394
9.3 Nginx漏桶限流詳解 ........................................ 397
9.4 實戰:分佈式令牌桶限流 ........................................ 399
9.4.1 分佈式令牌桶限流Lua腳本 ........................................ 399
9.4.2 Java分佈式令牌桶限流 ........................................ 402
9.4.3 Java分佈式令牌桶限流的自驗證 ........................................ 406
第10章 Spring Cloud+Nginx秒殺實戰 ........................................ 409
10.1 秒殺系統的業務功能和技術難點 ........................................ 409
10.1.1 秒殺系統的業務功能 ........................................ 409
10.1.2 秒殺系統面臨的技術難題 ........................................ 410
10.2 秒殺系統的系統架構 ........................................ 411
10.2.1 秒殺的分層架構 ........................................ 411
10.2.2 秒殺的限流架構 ........................................ 413
10.2.3 秒殺的分佈式鎖架構 ........................................ 414
10.2.4 秒殺的削峯架構 ........................................ 415
10.3 秒殺業務的參考實現 ........................................ 416
10.3.1 秒殺的功能模塊和接口設計 ........................................ 416
10.3.2 數據表和PO實體類設計 ........................................ 420
10.3.3 使用分佈式ID生成器 ........................................ 423
10.3.4 秒殺的控制層設計 ........................................ 424
10.3.5 service層邏輯:獲取秒殺令牌 ........................................ 426
10.3.6 service層邏輯:執行秒殺下單 ........................................ 429
10.3.7 秒殺的Lua腳本設計 ........................................ 434
10.3.8 BusinessException定義 ........................................ 436
10.4 Zuul內部網關實現秒殺限流 ........................................ 439
10.5 Nginx高性能秒殺和限流 ...................................... 444
10.5.1 Lua腳本:獲取秒殺令牌 ........................................ 445
10.5.2 Lua腳本:執行令牌桶限流 ........................................ 448
前言
Spring Cloud+Nginx系統架構毫無疑問是當今的主流技術之一。分佈式Spring Cloud微服務框架和高性能的Nginx反向代理Web服務的優秀組合,知足了各大產品和項目的可擴展、高可用、高性能架構的需求。然而根據筆者摸查,不少Java開發人員對Spring Cloud微服務、反向代理Nginx核心知識的掌握不夠,僅停留在Spring Cloud+Nginx基礎配置、API使用的初級使用階段。
本書從基礎設計模式、基礎原理出發,理論與實戰相結合,對Spring Cloud + Nginx高併發編程的核心原理作了很是系統和詳盡的介紹。本書旨在幫助初、中、高級開發工程師彌補在Spring Cloud微服務、Nginx反向代理核心知識方面的短板,爲廣大開發人員順利成長爲優秀的Java高級工程師、系統架構師提供幫助。
本書內容
本書內容分爲10章,分別說明以下:
第1章介紹Spring Cloud+Nginx高併發核心編程的學習準備,包括知識背景、開發和自驗證環境的準備。
第2章介紹Spring Cloud入門實戰,包括註冊中心、配置中心、微服務提供者的入門開發和配置。
第3章介紹Spring Cloud RPC遠程調用的核心原理,從設計模式的代理模式開始,抽絲剝繭、層層遞進地揭祕Spring Cloud Feign的底層RPC遠程調用的核心原理。
第4章介紹RxJava響應式編程框架。在Spring Cloud框架中涉及Ribbon和Hystrix兩個重要的組件,它們都用到了RxJava響應式編程框架。做爲很是重要的編程基礎知識,本書特地設立本章對RxJava的原理和使用進行詳細介紹。
第5章介紹Hystrix RPC保護的原理,從RxJava響應式編程框架的應用開始,溯本求源、按部就班地揭祕Spring Cloud Hystrix的底層 RPC保護的核心原理。
第6章介紹微服務網關與用戶身份識別。微服務網關是微服務架構中不可或缺的部分,它統一解決Provider路由、負載均衡、權限控制等問題。
第7章詳解Nginx/OpenResty,從高性能傳輸模式Reactor模型入手,尋蹤覓源、由淺入深地揭祕Nginx反向代理Web服務器的核心知識,包括Reactor模型、Nginx的模塊化設計、Nginx的請求處理流程等。
第8章介紹Nginx Lua編程。在高併發場景下,Nginx Lua編程是解決性能問題的利器,本章介紹Nginx Lua編程的基礎知識。
第9章介紹限流原理與實戰。高併發系統用三把利器—緩存、降級和限流來保護系統,本章介紹計數器、令牌桶、漏桶這三大限流策略的原理和實現。
第10章介紹Spring Cloud+Nginx秒殺實戰,經過這個綜合性的實戰案例說明緩存、降級和限流的應用。
源碼網址: Java 高併發研習社羣 【博客園 總入口 】