簡體   English   中英

如何進行簡單,可靠的網絡消息傳遞?

[英]How to do simple, reliable network messaging?

我現在正在使用套接字在各個進程之間進行通信。 一切都在同一台機器上運行,因此沒有數據包丟失,而且我也沒有收到讀取超時等信息。消息通常是小的數據塊(JSON,有時是二進制)。現在,我想進行跨機器通信。 客戶端/服務器連接通常如下所示:客戶端告訴服務器開始一些處理(傳遞任務描述),服務器完成工作並回傳進度,客戶端可以選擇在兩者之間發送終止消息。 完成后,在客戶端完全斷開連接的同時,服務器仍在偵聽(即,會話完成,開始新任務將啟動新會話)。

我應該如何實現溝通? 我可以輕松地繼續通過網絡使用套接字,但是我的理解是,我現在需要添加許多錯誤處理,以識別消息何時沒有通過並將其以某種方式傳達給服務器。 我想要的只是send(message, target)並放心完整的消息會被傳輸; 當另一側死亡時,再加上一些通知。 我已經看到有一些像zero-mq這樣的庫聲稱可以做到這一點,但還有更多,我不確定是否真的需要這樣的消息傳遞庫。 是否有一些易於使用的庫可以進行一些基本的交流?

我使用的是C ++和Python,BSD樣式許可絕對是庫的首選。 庫也應該相當穩定,因為通信部分並沒有真正重要的意義,我希望能夠堅持使用一種解決方案。

TCP保證所有小包都傳遞到目標[如果沒有,它將為您重新發送]。 因此,如果您使用它-與單機相比,可能會花費更多時間,但是msg傳輸的正確性仍然存在。

您應該簽出ZeroMQ 與純BSD插槽相比,它具有更簡單的界面,更輕便的功能以及出色的文檔資料。

簽出networkComms.net以獲取開源網絡通信庫。

聽起來您需要一個消息隊列。

解決方案很多,其中只有一種是redis: http: //redis.io

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM