2011-04-26 98 views
2

我目前正在使用多臺服務器(機器)開始開發聊天(實際移植較舊的單服務器版本)的舞臺上。java多服務器聊天架構

我想用java的NIO庫。

我之所以這樣做是因爲當大量客戶端連接(大約10k)時,當前實現工作非常緩慢,當前實現也基於IO套接字庫。我還估計在一年內有大約40到50K的現場客戶。

所以..我有幾個問題:

  1. 多少客戶,你認爲/估計NIO可以處理,因爲我聽到的是較老的套接字實現更好?
  2. 你有什麼想法,或者你可以指向我已經實現的一些使用多服務器聊天的架構。
  3. 使用多服務器架構時可能會遇到哪些主要問題?

在此先感謝

+0

JBoss HornetQ JMS消息代理會提供一個選項嗎?在Linux上,他們提供了消息持久性的AIO,他們聲稱其速度非常快:http://community.jboss.org/wiki/HornetQFeatures - 使用發佈/訂閱通信模型,聊天可以輕鬆實現。它可以聚集。 – mjn 2011-04-26 15:01:38

回答

3

我不認爲這是從視NIO庫點的任何限制。在一天結束時,性能取決於您的服務器和網絡配置。


您可能想看看NIO框架的 Apache MINA Project

Apache MINA是一個網絡應用程序框架,可幫助用戶輕鬆開發高性能和高可擴展性的網絡應用程序。它通過Java NIO提供了各種傳輸(如TCP/IP和UDP/IP)上的抽象·事件驅動的異步API。

Apache MINA通常被稱爲:
。 NIO框架庫,
。客戶端·服務器框架·庫,或
。一個網絡套接字庫。

2

如果沒有性能測試,估計很難給出;您可以支持的客戶端數量將根據內存,處理器速度/負載,帶寬/容量,延遲要求,存儲要求等因素而有所不同...

有幾種方法可用於在服務器之間共享數據;我會選擇廣播/多播UDP,因爲它是最具擴展性的方法。

您可能面臨的最大問題是應對服務器中斷,並正確處理負載平衡。

編輯 如果你不依賴於NIO服務器到服務器,JMS的發佈/訂閱模式可能是一個很好的解決方案。