簡易遠程消息交換協(xié)議SRMP
一、SRMP目標定位
經(jīng)過十多年實戰(zhàn)經(jīng)驗積累以及多方共同討論,新生命團隊(https://github.com/newlifex)制訂了一種簡單而又具有較好擴展性的RPC(Remote Procedure Call)協(xié)議。
全稱:簡易遠程消息交換協(xié)議,簡稱: SRMP(Simple Remote Messaging Protocol)
SRMP主要定位于以下場景:
- 內(nèi)網(wǎng)高速通信,大吞吐量(>100萬tps)、低延遲(<1ms)
- 外網(wǎng)遠程通信,穩(wěn)定可靠,海量連接(>10萬)
- 物聯(lián)網(wǎng)硬件設(shè)備,容易簡單實現(xiàn)協(xié)議
二、SRMP基礎(chǔ)格式
協(xié)議格式:
1 Flag + 1 Sequence + 2 Length + N Payload
1個字節(jié)標識位,標識請求、響應、錯誤、加密、壓縮等;
1個字節(jié)序列號,用于請求響應包配對;
2個字節(jié)數(shù)據(jù)長度N,小端字節(jié)序,指示后續(xù)負載數(shù)據(jù)長度(不包含頭部4個字節(jié)),解決粘包問題;
N個字節(jié)負載數(shù)據(jù),數(shù)據(jù)內(nèi)容完全由業(yè)務決定,最大長度65534=64k-1。
負載數(shù)據(jù)大于等于64k時,數(shù)據(jù)長度字段填65535(0xFFFF),啟用后續(xù)4字節(jié)擴展長度,最大長度4G(0xFFFFFFFF)。
物聯(lián)網(wǎng)硬件設(shè)備建議直接忽略擴展長度。
| 字節(jié) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||||
| 1 | 請求0 | 單向 | 壓縮 | 加密 | 保留 | |||||||||
| 1 | 序列號(0~255) | |||||||||||||
| 2 | 變長數(shù)據(jù)長度Length(0~65534) | |||||||||||||
| 變長 |
|
|||||||||||||
| 字節(jié) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | ||||||||
| 1 | 響應1 | 錯誤 | 壓縮 | 加密 | 保留 | |||||||||||
| 1 | 序列號(0~255) | |||||||||||||||
| 2 | 變長數(shù)據(jù)長度Length(0~65534) | |||||||||||||||
| 變長 |
|
|||||||||||||||
三、SRMP遠程調(diào)用
SRMP主要分為請求和響應兩種指令。
我不相信神話,我只相信汗水!我不相信命運,我只相信雙手!

浙公網(wǎng)安備 33010602011771號