在移动平台上使用套接字在java中实现实时聊天应用是一件好事

我正试图devise一个移动聊天应用程序,目标用户超过3lac,我已经看到有关XMPP服务器和客户端的方法,node.js与socket.io的文章,但混乱,这将扩大为这么多的用户。

对于这么多的用户,这也可以使用java socket api来实现。

与开发人员使用相关语言的技能和解决scheme的devise相比,实现语言对解决scheme的可伸缩性几乎没有影响。

在聊天程序上工作的两个主要的缩放挑战是1) C10K问题和2)在社交图中缩放实时通知,即O(numPeople*numPeopleSubscribedToPerson*numDevicesPerPerson*rateOfInteractions)

研究facebook,twitter和gmail的devise将帮助你理解如何扩展消息增长速度以及如何为webbuild立一个解决scheme的问题(提示:使用push / long轮询web技术和倾向于asynchronous解决scheme来阻止同步的解决scheme是路要走)。

这个链接是一个很好的开始Facebook,Gmail如何发送实时通知? 和光油在这里logging他们对C10K问题的解决scheme。

至于Java套接字去,他们很好。 但是常见的问题是线程处理。 避免为每个套接字分配一个线程。 这将根据一些因素(包括操作系统configuration),在1-10k用户范围内出现扩展问题。 使用Java时,请使用Java NIO,并确保线程使用率不会随着login到服务器的用户数量而增长。

像node.js这样的语言的优点是,他们从一开始就倡导这些最佳实践,在Java世界里,很好的asynchronous技术已经迟到了。 但他们确实存在。