Java 編程方法論:響應式 Spring Reactor 3 設計與實現

Java 編程方法論:響應式 Spring Reactor 3 設計與實現

作者: 知秋
出版社: 電子工業
出版在: 2020-09-01
ISBN-13: 9787121394768
ISBN-10: 7121394766
裝訂格式: 平裝
總頁數: 348 頁





內容描述


本書主要專注於解讀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


作者介紹


知秋
本名李飛飛,simviso團隊創始人,曾長期致力於基礎代碼庫研發工作,對JDK、Spring、RxJava、Spring Reactor、
Netty、Reactor-Netty、RSocket等有深刻的研究和獨到的見解,並以此打造“Java編程方法論系列叢書”。
一直通過博客與視頻平台bilibili(B站),結合自己的經驗進行大量源碼解讀分享。
現在主要致力於帶領simviso的小伙伴引進、
翻譯國外知名高校計算機科學相關課程及國外知名Java開發者的技術分享內容。




相關書籍

程者為王-Visual C# 2012 入門設計 158 招 200 例

作者 千展資訊

2020-09-01

CCNP Building Scalable Internetworks (BSCI 642-901) Lab Portfolio

作者 David Kotfila Joshua Moorhouse Ross Wolfson

2020-09-01

MCSA 70-740 Cert Guide: Installation, Storage, and Compute with Windows Server 2016 (Certification Guide)

作者 Anthony Sequeira

2020-09-01