我有多個守護進程(一個網關和多個服務,全部運行在同一節點上),其中一些服務守護進程需要在「軟實時」響應網絡上的到達請求,我的拱門就像我有一個網關守護進程,它將基於協議標記的傳入數據包路由到相應的服務守護進程。服務守護進程處理這些請求並將響應發送回放在線路上的gw守護進程。所有的工作都很好,但我沒有達到「軟實時」並看到滯後。Linux上進程之間共享套接字
我打算在下面以這種方式即興發揮,共享網關和服務守護程序之間的網絡連接,我將有一個通知方案,通過該方案,當數據包到達連接時,gw守護程序不會退出來自套接字隊列的數據包在接收到服務守護進程抓取二進制信號量並從套接字隊列中取出隊列數據的通知時查看協議頭並「通知」相應的服務守護進程「數據已到達」。會有2個這樣的信號量用於寫入,另一個用於讀取。當服務守護進程需要發送數據時,它會抓取寫入信號併發送數據。當它從網關守護進程收到「數據到達」通知時,它會抓取讀取的信號並從套接字中取出數據。在每個新的連接請求上,網關守護進程都會使用「sendmsg」將連接發送到服務守護進程。
任何時候有沒有任何機構試過這個方案?你看到這種方法有什麼問題嗎?請發表評論/建議。
是否建立網關和服務守護程序之間的複製開銷造成您的問題?如果你還沒有,是什麼讓你覺得這會有所幫助? –
您目前使用的是什麼IPC,並且處理是否需要按照嚴格的FIFO順序進/出網關連接? – Duck
#Provost,當數據從gw守護進程傳遞到服務守護進程時,整個想法是避免用戶空間和內核空間之間的數據副本。我相信這是一個重要的頭腦,不用說很多文章都談到過它,很多程序試圖避免這種情況。仍然回答你的問題,我還沒有找到它。 –