出於測試目的,我想創建一個套接字服務器,它將包含1000多個並行套接字連接,它們遍佈在AWS上的X個ec2實例上(仍然使用JXCore,Java或Erlang來決定node.js)。這些套接字將每隔10秒將消息隨機發送到另一個套接字。我只是無法理解如何有效地存儲和讀取這些套接字。存儲大量插座的最佳做法是什麼?
我可以看到的兩個選項是將套接字對象存儲在應用程序本身中的地圖中,或將套接字存儲在快速數據庫(如Redis)中。將套接字存儲在應用程序內部的數據結構中的問題是它將能夠擴展,變得健壯,以及當數百萬套接字需要找到另一套時,讀取性能如何。如果我將它們存儲在像redis這樣的數據庫中,每次都必須有一個網絡調用,因爲Socket A需要知道Socket B發送消息的位置。我擔心這會大大降低性能。
我在想可擴展套接字服務器的最佳做法是什麼,因爲我無法在互聯網上找到任何回答此問題的東西。我在網上找到的每個套接字服務器都簡單地向每個其他套接字廣播,而不是具有特定的套接字,只包含10個套接字。
您需要調查非阻塞IO解決方案;沒有什麼會處理你想要的套接字連接的數量。 – spudone
非阻塞解決方案?您需要調查服務器場。 –
他沒有說他的ec2實例的X是什麼,但我敢打賭,足夠投入來處理10mil的插座可能不是他想要的解決方案。 – spudone