99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RSocket的定義及四種通訊模式

jf_78858299 ? 來(lái)源:腳本之家 ? 作者:Andy Shi ? 2023-02-13 14:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

RSocket的定義

RSocket 是Reactive Socket的意思,也就是反應(yīng)式編程的網(wǎng)絡(luò)協(xié)議。

它的官方 文檔 的標(biāo)語(yǔ)是:

Application protocol providing Reactive Streams semantics

這里有幾層意思:

  • 首先RSocket確保的是網(wǎng)絡(luò)通訊的語(yǔ)義是符合反應(yīng)流的規(guī)范。
  • 第二它是應(yīng)用層的協(xié)議,所以它并不介意傳輸層的協(xié)議。

接著,文檔中給出了它的具體定義:

RSocket is a binary protocol for use on byte stream transports such as TCP, WebSockets, and Aeron.

這里強(qiáng)調(diào)的是RSocket協(xié)議是二進(jìn)制的編碼,與文本編碼有很大的不同。

2 設(shè)計(jì)的思想

隨著微服務(wù)的發(fā)展,傳統(tǒng)的反應(yīng)式編程的實(shí)現(xiàn)也受到挑戰(zhàn),特別在網(wǎng)絡(luò)傳輸?shù)牟糠?,需要把背壓作端到端的傳輸,而不是在一跳以后就丟失了。

另一方面,反應(yīng)式編程的本身就要求反應(yīng)式編程是消息驅(qū)動(dòng)的。

這兩個(gè)方向的方向的合力,就是把反應(yīng)式編程從CPU和內(nèi)存延伸到網(wǎng)絡(luò),這就是RSocket。這里的網(wǎng)絡(luò),是指應(yīng)用層的,RSocket 努力的方向是讓?xiě)?yīng)用的語(yǔ)義可以在網(wǎng)絡(luò)上傳播。而對(duì)于傳輸層,RSocket 的原則是盡量兼容。目前它支持的傳輸層有WebSockets, TCP, 或者 Aeron。

3 RSocket 的四種通訊模式**

RSocket 先定義了一套規(guī)范,然后才有實(shí)現(xiàn)。這套規(guī)范定義了數(shù)據(jù)幀的格式。此外,RSocket 總結(jié)了分布式應(yīng)用的通訊共同特點(diǎn),定義了四種不同的反應(yīng)流通訊方式。

  • request/response (stream of 1):就是傳統(tǒng)的RPC
  • request/stream (finite stream of many):是指單向的流
  • fire-and-forget (no response):是指無(wú)返回值的RPC
  • channel (bi-directional streams):是指雙向的流

4 與反應(yīng)式編程的關(guān)系**

反應(yīng)式編程的兩個(gè)主要方面(非官方解釋?zhuān)?,就是非阻塞線(xiàn)程管理和背壓。RSocket 主要是實(shí)現(xiàn)背壓的網(wǎng)絡(luò)部分。有的語(yǔ)言,如Java, 有好幾個(gè)反應(yīng)式編程的庫(kù),如RxJava, Reactor等。這種情況下,RSocket 就是和這些已有的庫(kù)整合,不會(huì)重新發(fā)明輪子。但是,如果有的語(yǔ)言沒(méi)有這樣的庫(kù),那么RSocket 就要自己實(shí)現(xiàn)這部分的功能。

一個(gè)完整的RSocket SDK, 是包括非阻塞線(xiàn)程管理+背壓+網(wǎng)絡(luò)的,應(yīng)該把它當(dāng)作是反應(yīng)式編程的擴(kuò)展,而不是一個(gè)單獨(dú)的模塊。沒(méi)有了其他的部分,RSocket 是根本沒(méi)有用的。

5 與gRPC的比較**

gRPC 也分兩部分(非官方版本):protobuf 和 HTTP/2。與HTTP2的比較下一節(jié)講。Protobuf 要解決的問(wèn)題,是多語(yǔ)言定義服務(wù)的問(wèn)題。這個(gè)和RSocket 要解決的問(wèn)題不是一個(gè)方向的。所以,RSocket 可以支持protobuf 的IDL。在負(fù)載編碼的問(wèn)題上,RSocket 很中立,它支持protobuf,Json, 或者是Java interface。

6 與HTTP/2的比較

HTTP/2 是1.1的增強(qiáng)版,但它還是HTTP。這個(gè)協(xié)議有幾個(gè)比較大的問(wèn)題:

  1. 它是為 web 通訊開(kāi)發(fā)的, 它的主要特點(diǎn)是通信的單向性。對(duì)一個(gè)鏈接來(lái)說(shuō),一定有一個(gè) client, 一個(gè)server。而RSocket 是針對(duì)應(yīng)用間的通訊而設(shè)計(jì)的,通訊像對(duì)話(huà)一樣,是雙向的,是流式的。所謂client和server的關(guān)系也是比較模糊的。HTTP/2著名的server push是為瀏覽器開(kāi)發(fā)的。對(duì)應(yīng)用而言,要么是用websocket, 要么是用SSE,即ascii編碼。
  2. HTTP/2所支持的語(yǔ)義是基于HTTP 方法,GET, PUT, DELETE,等。這些對(duì)于應(yīng)用來(lái)說(shuō)是不夠的。而額外操作的定義就要在應(yīng)用中自行完成。
  3. HTTP/2的流控是在字節(jié)的層級(jí)上,而不是應(yīng)用的層級(jí)(幀)。這樣的轉(zhuǎn)化也會(huì)增加應(yīng)用的負(fù)擔(dān)。

7 RSocket 自身的特點(diǎn)

我們暫時(shí)忘掉反應(yīng)式編程。不管叫什么名字,它最終要為應(yīng)用帶來(lái)好處。我們就RSocket 為應(yīng)用帶來(lái)的好處做個(gè)介紹:

  1. 面向鏈接。這個(gè)特點(diǎn)以后我們會(huì)展開(kāi)講。簡(jiǎn)單說(shuō)就是鏈接的狀態(tài)會(huì)被保存下來(lái)。當(dāng)然,與kafka等不同,這個(gè)狀態(tài)不落盤(pán)。但是只要有一邊不重啟,鏈接狀態(tài)是可以恢復(fù)的。
  2. 雙向傳輸。就是復(fù)用同一個(gè)鏈接,雙方?jīng)]有主次之分。一旦鏈接建立,雙方都可以用背壓方式要求數(shù)據(jù)傳輸。
  3. 端到端的流控。這條以后也會(huì)展開(kāi)說(shuō)。簡(jiǎn)單地說(shuō),HTTP/2 的流控是一站一站,就是說(shuō)假設(shè)A-B-C,A-B的流控對(duì)B-C是無(wú)效的。而用了RSocket,A-C的流控是應(yīng)用程序可控的。比如A說(shuō)給我8條記錄,(這就是背壓的實(shí)現(xiàn)),C就會(huì)知道并傳8條記錄到A。

這些特點(diǎn),會(huì)讓RSocket 在應(yīng)用間的通訊表現(xiàn)比起HTTP/2有很大的提升。

本文作者:Andy Shi,阿里巴巴高級(jí)技術(shù)專(zhuān)家,Andy長(zhǎng)期關(guān)注Service Mesh,在Cloud Foundry,Kubernetes,Envoy,RSocket上有著豐富的實(shí)踐和開(kāi)發(fā)經(jīng)驗(yàn)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11074

    瀏覽量

    216893
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1402

    瀏覽量

    80960
  • 網(wǎng)絡(luò)通訊
    +關(guān)注

    關(guān)注

    0

    文章

    77

    瀏覽量

    11571
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    DDS AD9910的四種工作調(diào)制模式是什么意思

    DDS AD9910的四種工作調(diào)制模式是什么意思?說(shuō)是有單頻模式數(shù)字斜坡模式RAM模式 和并行模式
    發(fā)表于 07-16 19:37

    74hc259的四種模式

    74hc259的datasheet中有四種工作模式,具體是怎么個(gè)情況看不大明白,求助大家。下圖為其真值表,
    發(fā)表于 07-15 13:00

    STM32芯片GPIO的四種輸入模式四種輸出模式

    STM32芯片的GPIO一共有8配置模式,對(duì)8模式的理解如下1.四種輸入模式上拉輸入:在默認(rèn)
    發(fā)表于 05-21 07:55

    單片機(jī)四種輸入模式

    單片機(jī)四種輸入模式 MCU輸入模式有浮空、上拉、下拉、模擬輸入這四種模式,如果采用上拉或者下拉模式
    發(fā)表于 08-24 16:19

    變頻器主要支持四種模式

    變頻器主要支持四種模式:無(wú)PG的V/F模式,有PG的V/F模式,無(wú)PG的矢量控制模式,有PG的矢量模式
    發(fā)表于 09-03 06:57

    二維碼的四種主要應(yīng)用模式

    本文介紹二維碼主要的四種應(yīng)用模式,包括讀取數(shù)據(jù)模式、解碼上網(wǎng)模式、解碼驗(yàn)證模式、解碼通信模式。
    發(fā)表于 01-25 11:52 ?3622次閱讀

    云計(jì)算的三服務(wù)模式四種部署模型

    云計(jì)算基于3特殊的云計(jì)算服務(wù)模式,具體架構(gòu)包括:基礎(chǔ)設(shè)施即服務(wù)、軟件即服務(wù)、平臺(tái)即服務(wù)。四種部署模型:公有云、私有云、社區(qū)云、混合云。
    發(fā)表于 01-31 15:10 ?3287次閱讀

    WIFI模塊四種工作模式介紹_WIFI模塊工作模式淺析

    WIFI模塊常見(jiàn)的四種工作模式:透?jìng)?b class='flag-5'>模式、串口指令模式、HTTPD Client模式、GPIO模式
    發(fā)表于 01-19 14:45 ?2.8w次閱讀

    Windows 10進(jìn)入安全模式四種方法

    在Windows 10上,可以使用命令提示符、設(shè)置、啟動(dòng)電源菜單和MSConfig等四種不同的方式以安全模式啟動(dòng)電腦。通過(guò)安全模式,可以加載足夠的一組基本功能和通用電腦驅(qū)動(dòng)程序,以解決和解決常見(jiàn)的軟件和硬件相關(guān)問(wèn)題。
    的頭像 發(fā)表于 12-21 16:03 ?5359次閱讀

    實(shí)驗(yàn)3:CubeMx+Proteus+STM32 IO口模擬SPI協(xié)議的四種模式

    實(shí)驗(yàn)3:CubeMx+Proteus+STM32 IO口模擬SPI協(xié)議的四種模式
    發(fā)表于 11-29 14:36 ?19次下載
    實(shí)驗(yàn)3:CubeMx+Proteus+STM32  IO口模擬SPI協(xié)議的<b class='flag-5'>四種</b><b class='flag-5'>模式</b>

    IEC 61851標(biāo)準(zhǔn)中的四種EV充電模式

    在本文中,我們將了解國(guó)際電工委員會(huì) (IEC) 規(guī)定的不同 EV 充電模式。這些模式在處理電動(dòng)汽車(chē)傳導(dǎo)充電系統(tǒng)的 IEC 61851 標(biāo)準(zhǔn)中指定。該標(biāo)準(zhǔn)描述了四種不同的充電模式,稱(chēng)為
    的頭像 發(fā)表于 06-24 15:06 ?1.1w次閱讀
    IEC 61851標(biāo)準(zhǔn)中的<b class='flag-5'>四種</b>EV充電<b class='flag-5'>模式</b>

    GPIO的四種輸入模式介紹

    32位寄存器共同控制。 輸出和輸入都是針對(duì)芯片引腳來(lái)講的(即引腳的對(duì)外輸出,和外界對(duì)引腳的輸入)。 四種輸入模式介紹 輸入模式下可讀取端口的高低電平或電壓。例如各類(lèi)傳感器(使用ADC功能),如果要將獲取的電平傳送給單片機(jī)的某一個(gè)
    的頭像 發(fā)表于 11-09 16:51 ?8267次閱讀
    GPIO的<b class='flag-5'>四種</b>輸入<b class='flag-5'>模式</b>介紹

    淺析電子負(fù)載常見(jiàn)的的四種工作模式

    淺析電子負(fù)載常見(jiàn)的的四種工作模式 電子負(fù)載是電子設(shè)備的一,用于模擬負(fù)載并測(cè)試電源的性能。它在電子行業(yè)和電力領(lǐng)域有廣泛的應(yīng)用。電子負(fù)載常見(jiàn)的四種工作
    的頭像 發(fā)表于 01-22 13:43 ?4134次閱讀

    介紹MCUboot支持的四種升級(jí)模式(2)

    介紹MCUboot支持的四種升級(jí)模式,分別是Overwrite、Swap、Direct XIP和加載到RAM中執(zhí)行。由于FSP不支持第四種——加載到RAM中執(zhí)行,因?yàn)槲覀冎攸c(diǎn)介紹前三
    的頭像 發(fā)表于 06-13 10:56 ?1928次閱讀
    介紹MCUboot支持的<b class='flag-5'>四種</b>升級(jí)<b class='flag-5'>模式</b>(2)

    變頻器主要支持哪四種模式?有什么區(qū)別?

    變頻器作為現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域中的關(guān)鍵設(shè)備,其控制模式的多樣性和靈活性對(duì)于滿(mǎn)足不同應(yīng)用場(chǎng)景的需求至關(guān)重要。變頻器主要支持四種控制模式:無(wú)PG的V/F模式、有PG的V/F
    的頭像 發(fā)表于 04-16 18:22 ?626次閱讀
    變頻器主要支持哪<b class='flag-5'>四種</b><b class='flag-5'>模式</b>?有什么區(qū)別?