Reactor Streams, Reactor, WebFlux—反應式編程

三者的關係:ReactorStreams是反應式編程的規範,Reactor是規範的具體實現,WebFlux是以Reactor爲基礎的Web應用的反應編程式框架。

 

Reactive Programming

Reactive Programming,中文稱反應式編程,是一種高性能應用的編程方式。其最早是由微軟提出並引入到 .NET 平臺中,隨後 ES6 也引入了類似的技術。在 Java 平臺上,較早採用反應式編程技術的是 Netflix 公司開源的 RxJava 框架。現在大家比較熟知的 Hystrix 就是以 RxJava 爲基礎開發的。

反應式編程其實並不神祕,通過與我們熟悉的迭代器模式對比便可瞭解其基本思想:

event Iterable (pull) Observable (push)
retrieve data T next() onNext(T)
discover error throws Exception onError(Exception)
complete !hasNext() onCompleted()

上面表格的中的 Observable 那一列便代表反應式編程的 API 使用方式。可見,它就是常見的觀察者模式的一種延伸。如果將迭代器看作是拉模式,那觀測者模式便是推模式。被訂閱者(Publisher)主動的推送數據給訂閱者(Subscriber),觸發 onNext 方法。異常和完成時觸發另外兩個方法。如果 Publisher 發佈消息太快了,超過了 Subscriber 的處理速度,那怎麼辦。這就是 Backpressure 的由來,Reactive Programming 框架需要提供機制,使得 Subscriber 能夠控制消費消息的速度。

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