《Java編程方法論:回響式Spring Reactor 3設計與實現》是2020年電子工業出版社出版的圖書,作者是知秋。
基本介紹
- 書名:Java編程方法論:回響式Spring Reactor 3設計與實現
- 作者:知秋
- 出版社: 電子工業出版社
- 出版時間:2020年9月
- 頁數:348 頁
- 定價:89 元
- 開本:16 開
- ISBN:9787121394768
- 千 字 數:456
- 版 次:01-01
簡介,目錄,
簡介
本書主要專注於解讀Spring Reactor 3的代碼設計與實現。全書共10章,其中第1、2章將從接口的設計入手,逐漸深入介紹Reactor中Flux源與訂閱者Subscriber的諸多互動實現細節;第3章將通過對調度器的研究來向讀者展示其中的優秀設計,可以幫助讀者更好地掌握Java並發庫,同時可以使讀者對使用Reactor進行異步編程有更好的認識;第4章將接觸到一些常用的Reactor操作,方便讀者寫出可重用度高、邏輯清晰的代碼;第5、6、7章將著重分析Reactor中Processor的設計實現,不僅講述了它的使用場景,還講解了其中的內在原理,以及如何應對未來項目開發過程中可能遇到的種種問題;第8章將介紹並分析Reactor特別提供的Context,這是Reactor為了應對生產-訂閱模式下的回響式編程在異步環境中對訂閱關係上下文進行管理所產生的問題而給出的解決方案,Spring Framework 5.2中的回響式事務也是基於它實現的;第9章將主要介紹Reactor中的測試,同時帶著讀者一步一步設計實現一個針對Reactor項目的測試庫;第10章將主要介紹Reactor中的調試,可以教會讀者根據不同的需求採取不同的調試方式。本書適合有Java編程基礎的中高級Java開發工程師、想要學習代碼設計思路與技巧的讀者、對回響式編程感興趣的讀者閱讀。
目錄
第1章 回響式編程概述 1
1.1 並發與並行的關係 1
1.2 如何理解回響式編程中的背壓 2
1.3 源碼接口設計啟示 3
1.4 如何看待眾多函式表達式 11
1.5 Reactor與RxJava的對比 12
1.6 小結 14
第2章 對Flux的探索 15
2.1 對Flux.subscribe訂閱邏輯的解讀 16
2.1.1 對CoreSubscriber的解讀 17
2.1.2 對LambdaSubscriber的解讀 22
2.1.3 AtomicXxxFieldUpdater的技法套用 24
2.2 用Flux.create創建源 30
2.2.1 FluxCreate細節探索 31
2.2.2 Flux的快速包裝方法 36
2.2.3 Reactor 3中的generate方法 38
2.3 蛇行走位的QueueSubscription 43
2.3.1 無界佇列SpscLinkedArrayQueue 44
2.3.2 QueueSubscription.requestFusion的催化效應 47
2.4 Mono的二三事 50
2.5 通過BaseSubscriber自定義訂閱者 51
2.6 將常見的監聽器改造成回響式結構 53
2.7 Flux.push的特殊使用場景及細節探索 56
2.8 對Flux.handle的解讀 58
2.9 小結 63
第3章 調度器 64
3.1 深入理解Schedulers.elastic 65
3.1.1 CachedScheduler的啟示 66
3.1.2 ElasticScheduler的類定義思路 68
3.1.3 對Schedulers.decorateExecutorService的解讀 69
3.1.4 對ElasticScheduler.schedule的解讀 70
3.1.5 對ElasticScheduler.DirectScheduleTask的解讀 71
3.1.6 對Schedulers.directSchedule的解讀 73
3.1.7 對ElasticScheduler.ElasticWorker的解讀 74
3.1.8 ElasticScheduler小結 82
3.2 深入解讀publishOn 82
3.2.1 publishOn流程概述 82
3.2.2 對FluxPublishOn的解讀 85
3.3 深入解讀subscribeOn 98
3.4 Flux.parallel&Flowable.parallel的並行玩法 108
3.5 ParallelFlux.runOn&ParallelFlowable.runOn的調度實現 117
3.6 小結 122
第4章 對Reactor操作的解讀 123
4.1 filter操作 123
4.2 transform操作 124
4.3 compose與transformDeferred操作 127
4.4 批處理操作 129
4.4.1 buffer操作 130
4.4.2 window 操作 132
4.4.3 groupBy 操作 139
4.5 merge和mergeSequential操作 140
4.6 flatMap和flatMapSequential操作 142
4.7 concatMap操作 144
4.8 combineLatest操作 145
4.9 ConnectableFlux的二三事及對reactor-bug的分析 146
4.10 小結 158
第5章 對Processor的探索 159
5.1 UnicastProcessor詳解 160
5.2 DirectProcessor詳解 164
5.3 EmitterProcessor詳解 169
5.4 ReplayProcessor詳解 174
5.5 小結 188
第6章 TopicProcessor及Reactor中匹配Disruptor的實現代碼 189
6.1 初識TopicProcessor 190
6.2 TopicProcessor構造器 195
6.3 對RingBuffer中publish方法的解讀 205
6.4 對MultiProducerRingBuffer的解讀 208
6.4.1 RingBuffer中的UnsafeSupport 210
6.4.2 RingBuffer中的next與publish操作 216
6.5 TopicProcessor.onSubscribe及類BossEventLoopGroup的設計 221
6.6 TopicProcessor.subscribe及類WorkerEventLoopGroup的設計 225
6.7 小結 241
第7章 對WorkQueueProcessor的解讀 242
7.1 WorkQueueProcessor的requestTask 244
7.2 WorkQueueProcessor的subscribe 247
7.3 冷熱數據源的區別 251
7.4 實例詳解 252
7.5 小結 255
第8章 Reactor中特供的Context 256
8.1 Context的設計緣由 256
8.2 對Context的解讀 258
8.3 小結 265
第9章 Reactor中的測試 267
9.1 StepVerifier測試源碼解析 267
9.1.1 接口定義 267
9.1.2 接口實現 269
9.1.3 驗證 274
9.2 StepVerifier測試套用 275
9.3 操作時間測試 278
9.4 使用StepVerifier進行後置驗證 286
9.5 關於Context的測試 289
9.6 使用TestPublisher對自定義中間操作進行測試 296
9.7 使用PublisherProbe檢查執行路徑 305
9.8 小結 310
第10章 Reactor中的調試 311
10.1 啟用調試模式 311
10.2 在調試模式下讀取堆疊跟蹤信息 315
10.3 通過checkpoint方式進行調試 325
10.4 記錄訂閱關係下與操作流程相關的日誌 326
10.5 小結 326