2014-09-26 49 views
1

這個問題涉及的Java應用程序的設計,從幾十UDP套接字讀取和處理大量的數據,但我認爲這是有關其他語言和環境。像上面所描述的我應該使用操作系統套接字緩衝區作爲消息隊列嗎?

我看到網絡應用已經用於讀數據關閉套接字緩衝儘快,它重新入在應用程序內,然後在一個單獨的線程處理它的專用螺紋(或多個)。

這有什麼錯留在套接字緩衝區中的數據,直到你的處理線程已準備好接收下一個數據的?在應用程序內部快速讀取數據並重新進行數據讀取是否有優勢?

如果處理邏輯不夠快,緩衝區將填滿。但是,如果處理邏輯對於處理入站數據來說太慢,那麼數據排隊的位置似乎並不重要。在入站數據突然激增的情況下,套接字緩衝區應該足夠大來處理它。

回答

2

在網絡棧接收UDP數據包緩衝區的大小是有限的。如果緩衝區已滿,則某些數據包將丟失。

如果知道處理UDP數據包的軟件,它可能需要一段時間才能處理數據包,那麼儘快讀取數據包,釋放網絡堆棧緩衝區並實現您自己的緩衝區是有意義的或者對數據包進行排隊,在這些數據包中它們可以被緩存直到處理資源實際可用。

相關問題