1. 程式人生 > >Solon rpc 之 SocketD 協議

Solon rpc 之 SocketD 協議

> 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