Reactive的世界裡,我們已經知道了從接收request(Spring WebFlux
)進來一路到DB(R2DBC
),這時候就只剩下最後一哩路,也就是服務之間的通訊協定RSocket
。
RSocket
是一個高效能且彈性的二進位通訊協定,由Facebook、Netflix、Alibaba、Pivotal等國際知名公司共同合作推出,RScoket
的R在這系列中提到,想當然就是Reactive的R,可以建立於不同的傳輸層包含TCP
、WebSocket
或是 Aero
n,在OSI
七層裡面屬於5/6層,在TPC/IP
則屬於應用層。不限定特定語言,Java
、GO
、C++
與Javascript
等等都有支援,Java
適用於Reactor
、RxJava
。streaming的訊息(Message)傳遞模式,與傳統非同步的一大區別就是支援backpressure
,不需要擔心訂閱者會被超出負荷的資料壓垮。
1990s 大概是靜態網路的時期
主流協議是TCP/IP
2000s 開始有client-server ,Server導向時期。
http 1.0
2010s Web 2.0
RESTful的架構
現今 雲原生Cloud Native與微服務Microservices
Http/2 Http/3
MQTT gRPC
此時微服務興起大致有以下需求
舊有的通訊協定已經無法應付所有使用場景,創造出RSocket來應付所有的雲原生與微服物的使用場景
二進位的訊息,是機器最熟悉的方式,傳輸的過程更有效率且不容易出錯,而且是可以把任意格式、像是熟悉的Json
、XML
等等轉換成byte,接收的時候再轉換回來即可。
Request Response :典型的HTTP,發送一個請求,得到一個回覆。
Request Fire-n-Forget:射後不理,用於監控或是log紀錄,不在意回傳結果。
Request Stream:一個request回應一個stream,類似於event-driven裡面的MQ。
Request Channel:頻道,可以互相推送message,像是即時通訊。
優點
缺點
相對於Reactor
、WebFlux
、R2DBC
,RSocket
又是一個更新的技術,想要更加了解RSocket
可能需要補一些網通相關的知識,這篇只是先簡單介紹,後續會進行一些比較。官網的介紹影片蠻清楚的,推薦去看一下。
存稿宣布用盡,開始進入趕稿人生......