Solon rpc 之 SocketD 協議
阿新 • • 發佈:2021-01-09
> Solon rpc 之 SocketD 協議
> [Solon rpc 之 SocketD 協議 - 概述](https://www.cnblogs.com/noear/p/14255823.html)
> [Solon rpc 之 SocketD 協議 - 訊息上報模式](https://www.cnblogs.com/noear/p/14256062.html)
> [Solon rpc 之 SocketD 協議 - 訊息應答模式](https://www.cnblogs.com/noear/p/14256436.html)
> [Solon rpc 之 SocketD 協議 - 訊息訂閱模式](https://www.cnblogs.com/noear/p/14256270.html)
#### 1. 簡介
SocketD 是一種二進位制的點對點通訊協議,是一種新的網路通訊第七層協議。旨在用於分散式應用程式中。從這個意義上講,SocketD可以是RSocket等其他類似協議的替代方案。它的訊息協議規範具有非同步,背壓的雙向,多路複用,斷線重連,基於訊息等特性。暫時只提供Java實現,目前做為Solon rpc的sockte通道協議。
#### 2. 背景
說到這裡就有一些疑問了,為什麼要搞這個協議?難道程式設計師吃飽了撐得搞點新東西折騰自己?上面提到了RSocket。如果你對這個規範不熟悉就可補下課。但它用起來還是比較複雜,尤其是類似RxJava的介面風格,感觀上更利於做響應式計算。而SockteD更適應傳統使用習慣,更專一的面向服務請求。
#### 3. 特性
特性與RSocket非常像,這裡簡單總結一下:
* 具有語言無關性的二進位制通訊協議
* 非同步非阻塞訊息驅動通訊,高效能
* 實現了網路通訊的背壓處理,在此基礎上進行流量控制、連線恢復
* 天然支援雙向通訊。如:單鏈接雙向RPC
* 更加適合分散式通訊場景
#### 4. SocketD三種互動模型
SocketD定義了三種互動模型來彌補Http協議的不足之處:
* Send(msg):只發送不響應。在不需要響應時非常有用,例如非關鍵事件日誌記錄。
* SendAndResponse(msg):傳送並等待響應。類似Http的請求/響應模型。它是非同步和多路複用的。
* SendAndCallback(msg, (msg2)->{}):傳送並在有響應時回撥。類似Ajax非同步回撥。
#### 5. SocketD兩種協議模型
容器訊息,用於實現訊息加密或壓縮之類非業務處理。內容訊息,用於承載業務內容。
![](https://img2020.cnblogs.com/blog/1885228/202101/1885228-20210109182818097-2056992548.png)
#### 6.部分演示示例
* Rpc 框架演示: [solon_socketd_rpc](https://gitee.com/noear/solon_demo/tree/master/demo28.solon_socketd_rpc)
* Message 通讀演示:[solon_socketd_message](https://gitee.com/noear/solon_demo/tree/master/demo28.solon_socketd_message)
#### 附:專案原始碼
* [https://gitee.com/noear/solon](https://gitee.com/noear