我想優化一個UDP服務器來處理更多的吞吐量,它基於Java IO數據報套接字(而不是NIO)。當這個UDP服務器收到一個UDP包時,它需要處理這個包,並將處理後的數據發送到後臺資源,然後響應客戶端。 目前這個服務器將爲每個傳入數據包分配一個線程進行處理。使用數據報通道相比於數據報套接字有什麼優勢
我讀過一些文章,我明白了 某些情況下,例如,聊天服務器基於TCP:需要 同時管理成千上萬打開的連接,每個只發送一個小的數據,實現服務器在NIO中可能是一個優勢。 很少有線程可以處理大量連接(Thread Per Request),因爲只有少數連接在給定的時間點向服務器發送請求。所以,我們不需要爲每個連接維護一個線程。 這是使用Java TCP NIO的巨大優勢。在UDP中,每個數據包(數據報)實際上都是一個自包含的消息,每個數據包可以被認爲是一個請求,即使我們使用NIO數據報通道,我們仍然需要爲每個請求創建一個線程。
那麼,使用NIO Datagram通道有什麼好處呢?
感謝EJP的迴應!服務器不是迴應服務器,也不是時間服務器。當這個UDP服務器接收到一個UDP數據包時,它需要處理這個數據包,並將處理後的數據發送到後臺MQ,然後響應客戶端。目前,該服務器爲每個傳入UDP數據包創建一個新線程來處理它。我的問題是,如果我們使用NIO數據報通道,優勢和差異是什麼。 – Zhi
根據你的描述,很少或沒有。 – EJP