反應(yīng)式編程
反應(yīng)式編程的風(fēng)格:非阻塞,異步合蔽,函數(shù)式
The Reactive Manifesto
反應(yīng)式編程應(yīng)有的四大核心特征
- Responsive: 響應(yīng)性
- Resilient: 健壯性
- Elastic: 彈性
- Message-driven: 事件驅(qū)動性
參閱:
Reactive-Streams
Reactive Streams 定義
Reactive Streams是一種非阻塞背壓異步流處理規(guī)范
Reactive Streams規(guī)范的目標(biāo)
- 一個主要目標(biāo)是通過異步邊界來解耦系統(tǒng)組件板乙,從而實(shí)現(xiàn)以并行方式執(zhí)行同步環(huán)境下的各種功能
- 另一個主要目標(biāo)是為壓力處理定義一種規(guī)范
Reactive Streams規(guī)范的四個接口
Paste_Image.png
Reactive Streams API及實(shí)現(xiàn)
- Reactor
- RxJava2.0
- RxJs
- Akka-Streams
- Vert.x
- MongoDB
- Slick
- Ratpack
參閱:
- Github: https://github.com/reactive-streams
- Reactive-streams官網(wǎng)
- Reactive Streams介紹-InfoQ
- Reactive Streams異步流處理標(biāo)準(zhǔn)-Jdon
- Github例子
ReactiveX
ReactiveX是Reactive Extensions的縮寫漩勤,一般簡寫為Rx,最初是微軟LINQ的一個擴(kuò)展淌实;
開發(fā)者可以用Observables表示異步數(shù)據(jù)流冻辩,用LINQ操作符查詢異步數(shù)據(jù)流猖腕, 用Schedulers參數(shù)化異步數(shù)據(jù)流的并發(fā)處理,Rx可以這樣定義:Rx = Observables + LINQ + Schedulers恨闪。
Rx是一個使用可觀察數(shù)據(jù)流進(jìn)行異步編程的編程接口倘感,也是一個函數(shù)庫,也是一種編程思想咙咽,結(jié)合了觀察者模式老玛、迭代器模式和函數(shù)式編程的精華
RxJava歷史:
- Rxjava1.x遵循ReactiveX規(guī)范
- RxJava2.x于2016發(fā)布,兼容Reactive Streams規(guī)范
參閱:
- Github: https://github.com/ReactiveX
- ReactiveX官網(wǎng)
- ReactiveX/RxJava文檔中文版
- RxJava Essentials 一書的中文翻譯版
- Rxjs doc
Reactor
Reactor3
Paste_Image.png
歷史:
- 2013 發(fā)布Reactor1.x
- 2015 結(jié)合響應(yīng)式數(shù)據(jù)流規(guī)范钧敞,發(fā)布Reactor2.x
參閱: