簡易遠程消息交換協議SRMP

一、SRMP目標定位

經過十多年實戰經驗積累以及多方共同討論,新生命團隊(https://github.com/newlifex)制訂了一種簡單而又具有較好擴展性的RPC(Remote Procedure Call)協議。全稱:簡易遠程消息交換協議,簡稱:SRMP(Simple Remote Messaging Protocol)


SRMP主要定位於以下場景:

  1. 內網高速通信,大吞吐量(>100萬tps)、低延遲(<1ms)
  2. 外網遠程通信,穩定可靠,海量連接(>10萬)
  3. 物聯網硬件設備,容易簡單實現協議

 

二、SRMP基礎格式

協議格式1 Flag + 1 Sequence + 2 Length + N Payload
1個字節標識位,標識請求、響應、錯誤、加密、壓縮等;
1個字節序列號,用於請求響應包配對;
2個字節數據長度N,小端字節序,指示後續負載數據長度(不包含頭部4個字節),解決粘包問題;
N個字節負載數據,數據內容完全由業務決定,最大長度65534=64k-1。

負載數據大於等於64k時,數據長度字段填65535(0xFFFF),啓用後續4字節擴展長度,最大長度4G(0xFFFFFFFF)。

物聯網硬件設備建議直接忽略擴展長度。


SRMP請求格式
偏移 1 2
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
0 保留 單向 請求0 序列號(0~255)
2 數據長度Length(0~65534)
4 擴展長度(可選,Length=65535時啓用)
4/8
字節數 項目
1~4 名稱長度S
S 服務名
1~4 參數長度N
N 參數
SRMP響應格式
偏移 1 2
0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7
0 保留 錯誤 響應1 序列號(0~255)
2 數據長度Length(0~65534)
4 擴展長度(可選,Length=65535時啓用)
4/8
字節數 項目
1~4 名稱長度S
S 服務名
4 響應代碼
1~4 響應數據N
N 響應長度

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、SRMP遠程調用

SRMP主要分爲請求和響應兩種指令。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章