經過十多年實戰經驗積累以及多方共同討論,新生命團隊(制訂了一種簡單而又具有較好擴充套件性的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全文匹配去尋...