由于本人從事行業關系,Linux環境下的低延遲通信是我關注的技術之一,要達到極端的低延遲,當然同機器內IPC比網路通信快,而Linux IPC方式中無疑是共享記憶體延遲最低,不過相對于TCP這種通用的通信方式來說,共享記憶體缺少了一些控制層的協議,比如行程A和B通過一個基于共享記憶體的訊息佇列通信,A很難知道佇列另一端的B是否存在,具體的說就是基于共享記憶體的簡單訊息佇列缺少了連接建立和斷開的控制,
另一方面,相對于SHM(共享記憶體)來說,使用TCP也有些自己的痛點:除了延遲以外,重連恢復是個所有應用場景下都不可避免的問題,我們知道,由于網路問題或行程崩潰,TCP連接斷開是很常見的事情,斷開前發送方發出的資料可能沒有被接收,也可能接收了還沒被處理接收方就掛了,所以為了確保不丟失資訊,發送方的應用程式需要保存已發送的資訊,即使自己并不需要,等收到對方的確認訊息才能丟棄,也就是說,一個真正可靠的TCP應用程式需要做很多無關業務的控制層的事情,而這個問題SHM并不存在,只要機器不掉電,程式的崩潰與重啟對于SHM是透明的,也就是說崩潰前已寫入且未讀取的資料還會在那里,程式重啟后不需做任何資料重傳之類的事情,
于是我想,如果TCP和SHM分別彌補了上述各自的缺點,那么它們使用起來將會及其相似:就像一個帶連接屬性的持久化訊息佇列,用戶可以像操作一個普通訊息佇列一樣push和pop訊息,對于發送方來說已經push的訊息不需要自己保存副本,對于接受方來說沒有pop的訊息不會丟失,同時雙方都能知道對方是否還活著,這樣一個抽象的訊息佇列可以基于TCP,以支持遠程通信,也可以基于SHM, 以提供超低延遲,這對于用戶來說可以完全透明,
TCPSHM就是這樣一個解決方案,TCPSHM是一個Linux下的輕量級高性能的C++模板類別庫開源專案,提供了客戶端和服務端的框架,同時高度可配置和可定制,歡迎感興趣的同學了解一下,并提出寶貴的意見,謝謝~

鏈接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g 提取碼:x2p5
免費分享,但是X度限制嚴重,如若鏈接失效點擊鏈接或搜索加群 群號744933466,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/84899.html
標籤:C++
上一篇:Linux低延遲服務器系統調優
下一篇:C++程式的耦合性設計
