我试图设计出有针对性的用户在3lac移动聊天应用中使用Java套接字实时聊天应用程序,我已经看到了相关的XMPP服务器和客户端的方式,Node.js的文章与socket.io,但混乱将扩大这么多的用户。是好实现移动平台
可以这样用Java套接字API如此多的用户也可以实现。相比之下,与有关的语言,和解决方案的设计开发人员的技能的时候
我试图设计出有针对性的用户在3lac移动聊天应用中使用Java套接字实时聊天应用程序,我已经看到了相关的XMPP服务器和客户端的方式,Node.js的文章与socket.io,但混乱将扩大这么多的用户。是好实现移动平台
可以这样用Java套接字API如此多的用户也可以实现。相比之下,与有关的语言,和解决方案的设计开发人员的技能的时候
实现语言对解决方案的可扩展性的影响很小。
在聊天程序上工作时,两个主要的扩展挑战是1)C10K problem和2)在社交图中缩放实时通知,即O(numPeople*numPeopleSubscribedToPerson*numDevicesPerPerson*rateOfInteractions)
。
研究facebook,twitter和gmail的设计将帮助您理解扩展消息增长速度以及如何建模网络解决方案的问题(提示:使用推/长轮询web技术并优先考虑阻止异步解决方案同步的是要走的路)。
此链接是一个好的开始How does facebook, gmail send the real time notification?和Varnish记录他们的解决方案的C10K问题here。
至于Java的接去,他们都很好。但是常见的问题是线程处理。避免为每个套接字分配一个线程。这将根据一些因素(包括操作系统配置),在大约1-10k用户遇到扩展问题。使用Java时,请使用Java NIO并确保线程使用率不会随着登录到服务器的用户数量而增长。
像node.js的语言的优点是,他们主张从一开始,在那里好异步技术是晚在Java世界游戏这些最佳做法。但他们确实存在。
我会通过您的链接,非常感谢您的帮助,我会疑惑我是否仍然困惑 – Prakash 2014-11-21 12:10:15
实现语言不如设计重要 – 2014-11-21 10:31:52
您可以在这篇文章的末尾提供一些链接,我可以研究如何给出设计方法 – Prakash 2014-11-21 10:43:06