RSocket和傳統的Http有什麼區別呢?

時間 2021-06-03 02:09:42

1樓:一一哥

RSocket介紹:

RSocket 是乙個 OSL 七層模型中 5/6 層的協議,是 TCP/IP 之上的應用層協議。RSocket 可以使用不同的底層傳輸層,包括 TCP、WebSocket 和 Aeron。RSocket 使用二進位制格式,保證了傳輸的高效,它是一種基於Reactive Streams背壓的雙向,多路復用,基於訊息的二進位制協議.

RSocket 互動模式:

1、請求-響應(request/response)2、請求-響應流(request/stream)3、發後不管(fire-and-forget)4、通道模式(channel)

RSocket與HTTP的不同之處在於它定義了四種互動模型,基於訊息意味著協議可以支援單個連線上的多路復用。此外,與TCP一樣,它是真正的雙向,因此一旦客戶端啟動與伺服器的連線,連線中的雙方就變得彼此等同 - 實質上,伺服器可以從客戶端請求資料.

2樓:陳巨集基

讀讀RSocket Spec 就什麼都清楚啦。

傳統的HTTP如果指的是HTTP/1.1,那麼區別很大了。HTTP/1.

1 連多路復用都不支援, 只有請求響應模式。等等等。如果指HTTP/2.

0, 有區別但其實不算太大。

HTTP/2.0 雖然支援了鏈結復用,但仍然主要只支援request/response 模型。網上很多人說HTTP2支援stream,不對,HTTP2對使用者來說沒有stream這個概念。

它只是通過multiplex實現高效的request/response。另外H2提供Server Push的功能,但是功能和應用場景很有限。相反RSocket 是乙個真正的bi-directional。

當client 和server建立鏈結之後,就不存在誰請求誰的問題了。任何一方都可以是requester 或者responder。

不過需要說明,雖然HTTP/2.0 本身不支援bi-directional communication, 但是在此基礎上加一些應用層的framing的話還是可以做到的。gRPC就是這麼乙個例子,在HTTP body 的基礎上做了gRPC 層的framing,最終還是達到了bi-directional 的作用。

從這個角度來說,gRPC 和RSocket基本可以互相代替。Facebook內部使用的Thrift RPC之後也會主要以RSocket作為傳輸層協議,主要賣點之一就是可以支援streaming場景。

當然另外RSocket還有很多有意思的小功能, 比如基於credit的應用層flow control, 和RSocket level resumption。credit flow control,說白了就是requester 告訴responder,接下來你可以再給我n個item,多了不要,這樣一方面防止requester積累太多buffer,一方面防止responder 過早執行一些沒有必要的操作。 RSocket resumption就是假如說乙個連線斷了,在連線重新建立之後可以像什麼事都沒發生一樣,之前在該connection上的所有stream繼續正常工作。

這個特性聽起來很誘人,很適合在移動網際網路和IOT場景使用,但是在實際操作中為了保持connection和stream的state machine,常常給伺服器造成很大的記憶體壓力。所以還是要根據具體場景判斷適不適合用resumption

另外從傳輸層的角度,HTTP/2 就是基於TCP的,RSocket 沒有規定底層傳輸層協議,所以可以玩很多花樣,可以直接基於TCP,也可以像gRPC一樣,基於HTTP/2 或者WebSocket。等QUIC和HTTP/3(H2 over QUIC)逐漸成熟,RSocket也會有基於QUIC的實現。(其實從特性上看,QUIC是最契合RSocket的底層協議)。

(至於有人提到繞開核心,這是QUIC相比TCP的優勢) 還有,RSocket不僅可以做點對點,也可以做multicast/broadcast 等其他pattern,因為它的核心理念是message passing。 HTTP應該不大好做。

網上還有些拿gRPC 和RSocket做效能比較的,但這倆沒有太大比較的意義。真要比可以拿gRPC和RSocket-RPC去做比較,或者直接RSocket vs H2。我覺得大多數方面RSocket都強於HTTP2/gRPC,只是HTTP有那麼多成熟的網路基礎設施,而且無人不用,所以integration的確方便了很多罷了。

hongjic93:RSocket 基於訊息傳遞的反應式應用層網路協議

http 和 https 有何區別?如何靈活使用?

芝麻IP http和https的區別主要有以下幾個方面 1 HTTPS是加密傳輸協議,HTTP是名文傳輸協議。2 HTTPS需要用到SSL證書,而HTTP不用。3 HTTPS比HTTP更加安全,對搜尋引擎更友好。4 HTTPS標準埠443,HTTP標準埠80。5 HTTPS基於傳輸層,HTTP基於應...

「http」和「https」之間到底有什麼區別呢?

eechen HTTPS是使用TLS傳輸的HTTP協議,抓包看到的都是TLS的包。TLS也是乙個TCP上的協議,用於實現加密傳輸,不僅僅可以用來傳輸HTTP,還可以是FTP或者其他協議。主流語言大多都內建了對TLS也就是SSL的支援。 科技鯊 https比http更安全,HTTPS在HTTP的基礎上...

Follow(關注)和傳統的 Subscribe(訂閱)機制相比有哪些不同?

rose tiger follow更注重資訊源對資訊的產生質量的信任或興趣,subscribe更注重資訊本身的信任或興趣,所以,如果follow更適合社交中的資訊源,例如人,subscribe更適合資訊標籤或主題。 hotdancing follow擬人化,subscribe是及物的。從資訊模式而言...