Reactive‐Stream - CCH0124/spring-sandbox GitHub Wiki
是 JVM 面向流的標準和規範
- 處理可能無限數量的元素
- 有序
- 在組件之間異步(互不等待)傳遞元素
- 強制性非阻塞背壓模式
正壓的話,基本上是沒有 BUFFER 該層。
Reactive Stream 基於本地的訊息系統設計,如下
FROM https://www.reactivemanifesto.org/
API Components
在 JAVA 9 提供以下的 API
- Publisher 發布者;產生數據流
- Subscriber 訂閱者;消費數據流
- Subscription 訂閱關係
- 訂閱關係是發佈者和訂閱者之間的關鍵介面。訂閱者透過訂閱來表示對發佈者產生數據的興趣。訂閱者可以請求一定數量的元素,也可取消訂閱
- Processor 處理器
- 是同時實現了發佈者和訂閱者介面的組件。他可以接收來自一個發佈者的數據進行處理,並將結果發布給下一個訂閱者。處理器在 Reactor 中充當中間橋梁,代表下一個處理階段,允許在數據流中進行轉換、過濾等操作。
編程的方式有以下
- 命令式 全自定義
- 響應式/聲明式 宣告流,說要幹嘛,最後結果是什麼
響應式編程
- 底層: 基於數據緩衝隊列 + 訊息驅動模型 + 異步回調機制
- 編碼: 流式編程 + 鏈式調用 + 聲明式 API
- 效果: 高吞吐 + 占用少量資源 + 訊息實時處理