新一代通信協(xié)議:RSocket

什么是 RSocket

RSocket 是一種二進(jìn)制協(xié)議,可以使用任何字節(jié)流傳輸方式,比如 TCP,UDP,WebSocket,Aeron。

它的官方網(wǎng)站:
https://rsocket.io/(鏈接可能訪問不暢)。

它通過單一連接傳輸異步消息,支持以下幾種交互模式:

  • 請(qǐng)求 / 響應(yīng)( 1 : 1 )
  • 請(qǐng)求 / 流 ( 1 : N )
  • 發(fā)射了不管 ( 1 : 0 )
  • 雙向流( N : N )

它的底層協(xié)議符合 Reactive Streams 語(yǔ)義(鏈接可能訪問不暢)。

從它叫 RSocket 這個(gè)名字,就能看出它的野心勃勃。這讓我想起了當(dāng)年 ZeroMQ 想成為 Linux 基礎(chǔ)網(wǎng)絡(luò)庫(kù)呢。

我的一些理解

既然有了 Dubbo,gRPC,HTTP 2,Thrit,XXX... 為什么還需要 RSocket 呢?

拿我最熟悉的 gRPC 來對(duì)比,gRPC 也支持那四種交互模式,也是二進(jìn)制協(xié)議,支持多語(yǔ)言,為啥 RSocket 更好呢?

我覺得最重要的,是 RSocket 基于 Reactive Streams 語(yǔ)義,并且是一種比較底層的協(xié)議。

Reactive Streams 是比較標(biāo)準(zhǔn)化的東西,JDK 9 直接內(nèi)置了支持。

上面列舉的那些協(xié)議,都自帶自己的傳輸方式,使用的范圍自然比更底層的協(xié)議要窄。

而且,RSocket 得到了多個(gè)大廠的支持:

  • RSocket 出自 Netflix
  • Facebook 將 Thrit 捐給 Apache 基金會(huì)后,自己又 Fork 了一個(gè)內(nèi)部分支,底層基于 RSocket
  • 阿里的 Dubbo 集成了 RSocket
  • Pivotal 使勁將 RSocket 集成入 Spring

Broker 模式

Spring Cloud Gateway 支持 RSocket 的 Broker 模式。

簡(jiǎn)單說,這種模式是:

  • 一堆 Spring Cloud Gateway 組成集群
  • 服務(wù)生產(chǎn)者和消費(fèi)者用 Client 模式接入集群,連接時(shí)提供注冊(cè)信息
  • 經(jīng)過上面這么一搞,其實(shí)就不分生產(chǎn)者和消費(fèi)者了,大家可以互相調(diào),通過 Gateway 轉(zhuǎn)發(fā),有點(diǎn)像 SOA 服務(wù)總線了
  • 由于都是連到集群,只需暴露集群地址,傳統(tǒng)意義上的服務(wù)端就可以隱藏起來了,安全
  • 權(quán)限,日志等等都在 Broker 上做

所有請(qǐng)求都通過轉(zhuǎn)發(fā),具體到一個(gè)調(diào)用,比直接連接要多耗時(shí)間。但是,當(dāng)應(yīng)用規(guī)模大了,復(fù)雜了,多花的時(shí)間就很值得了:

  • 不關(guān)心互相調(diào)用的權(quán)限控制(除了處理跟 Gateway 間的權(quán)限)
  • 無(wú)需單獨(dú)的服務(wù)發(fā)現(xiàn)服務(wù)
  • 沒有斷路器
  • 沒有客戶端負(fù)載均衡
  • 沒有 Sidecar
  • 解決啟動(dòng)順序問題
  • 解決服務(wù)熱身的問題
  • 代替消息隊(duì)列

很好,你已經(jīng)成功引起了我的注意!雖然有點(diǎn)新瓶裝舊酒的意思,不過還挺期待這種模式趕快成熟呢。

參考資料

本文首發(fā)于微信公眾號(hào):肖念青,轉(zhuǎn)載請(qǐng)保留原始出處信息。

我的個(gè)人網(wǎng)站:https://www.jitao.tech

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 摘要:Cloud Native 應(yīng)用架構(gòu)隨著云技術(shù)的發(fā)展受到業(yè)界特別重視和關(guān)注,尤其是 CNCF(Cloud Na...
    貓耳呀閱讀 747評(píng)論 0 2
  • 需求背景 隨著業(yè)務(wù)的發(fā)展,單體應(yīng)用的缺點(diǎn)已經(jīng)越來越明顯了,邏輯復(fù)雜、模塊耦合、代碼臃腫,修改難度大,版本迭代效率低...
    walker_閱讀 1,777評(píng)論 0 1
  • Spring Initializr Spring提供了一個(gè)快速構(gòu)建應(yīng)用的工具,只需要界面化的選擇你需要的jar依賴...
    4ea0af17fd67閱讀 2,325評(píng)論 0 4
  • webflux介紹 Spring Boot 2.0spring.io 官網(wǎng)有句醒目的話是: BUILD ANYTH...
    小波同學(xué)閱讀 7,622評(píng)論 0 21
  • 在雨中 在烏蒙中走向你 青磚 白墻 木制的桌和椅杵著 不見得歡迎踏步而來的臀部 沒事 來碗面 得有蔥有蒜有香菜 ...
    donegood閱讀 154評(píng)論 0 0

友情鏈接更多精彩內(nèi)容