試手 RxJava 2.x 及對線程的初步理解

在進行數據流處理過程中,需要一個高效苗條的流處理組件,比如對輸入流能進行分組(窗口),能進行流量控制(Back Pressure - 背壓),這也就涉及到響應式編程,流處理框架。這方面如果直接基於 Akka actor 來構建 Akka ActorSystem 也是比較複雜,依賴的組件也不少。還有構築在 Akka actor 之上的 Akka Streams,再往上的 Flink Streaming,它們都有像滑動,滾動窗口的概念,但是依賴更不得了。一個基本的 Flink Streaming 的項目會依賴到 45 M 以上的第三方組件,如果用它來寫一個數據流處理的共享組件,那真是要命。Spring 5 也開始帶上了自己的 Reactive-Streams 實現 Spring Reactor, 想要把它從 Spring 中單獨抽離出也非易事。

Flink Streaming 組件依賴:org.apache.fling:flink-streaming-java_2.12:1.80, 會依賴於其他諸如 akka-stream, akka-actor, flink-core, flink-clients, scala-library 等非常多的東西

而另一個著名的響應式框架 RxJava 2 就清爽多了,完全沒有第三方依賴,要說有也就是定義了四個接口的 reactive-streams(2 KB 大小),就自身那個  rxjava-2.2.9.jar 包只有 2.3 M,這才叫輕量級。因爲它設計來是能被應用於 Android 客戶端應用的,Andriod 上的 rxandriod-1.2.1.aar 只有 9 K。所以 RxJava 2.x 太適合用來寫一些小的共享組件了。 閱讀全文 >>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章