簡易遠端訊息交換協議SRMP

2021-09-07 19:56:53 字數 1087 閱讀 3974

經過十多年實戰經驗積累以及多方共同討論,新生命團隊(制訂了一種簡單而又具有較好擴充套件性的rpc(remote procedure call)協議。

全稱:簡易遠端訊息交換協議,簡稱:srmp(****** remote messaging protocol)

srmp主要定位於以下場景:

內網高速通訊,大吞吐量(>100萬tps)、低延遲(<1ms)

外網遠端通訊,穩定可靠,海量連線(>10萬)

物聯網硬體裝置,容易簡單實現協議

協議格式1 flag + 1 sequence + 2 length + n payload

1個位元組標識位,標識請求、響應、錯誤、加密、壓縮等;

1個位元組序列號,用於請求響應包配對;

2個位元組資料長度n,小端位元組序,指示後續負載資料長度(不包含頭部4個位元組),解決粘包問題;

n個位元組負載資料,資料內容完全由業務決定,最大長度65534=64k-1。

負載資料大於等於64k時,資料長度欄位填65535(0xffff),啟用後續4位元組擴充套件長度,最大長度4g(0xffffffff)。

物聯網硬體裝置建議直接忽略擴充套件長度。

srmp請求格式

位元組76

5432

101請求0

單向壓縮

加密保留

1序列號(0~255)

2變長資料長度length(0~65534)

變長位元組數專案s

服務名n

請求引數

srmp響應格式

位元組76

5432

101響應1

錯誤壓縮

加密保留

1序列號(0~255)

2變長資料長度length(0~65534)

變長位元組數專案s

服務名4

響應**

n響應資料

srmp主要分為請求和響應兩種指令。

swoole coroutine協程訊息佇列

首先測試乙個訊息佇列的例子 use swoole coroutine as co channel new co channel 100 co create function use channel var dump channel length swoole event wait 演示結果 可以看到...

訊息與遠端呼叫

二 mq的使用場景 mq的不足是 1 系統更複雜,多了乙個mq元件 2 訊息傳遞路徑更長,延時會增加 3 訊息可靠性和重複性互為矛盾,訊息不丟不重難以同時保證 4 上游無法知道下游的執行結果,這一點是很致命的 典型場景一 資料驅動的任務依賴 什麼是任務依賴,舉個栗子,網際網路公司經常在凌晨進行一些資...

RabbitMQ訊息交換模式簡介

rabbitmq是amqp的乙個典型實現,它訊息發布者的訊息發布到exchange上,同時需要制定routingkey,可以通過指定交換機的不同模式實現不同的行為。direct模式 點對點通訊 direct exchange是rabbitmq預設的交換機模式,也是最簡單的模式,根據key全文匹配去尋...