我需要在Java中实现一个可以水平扩展的聊天服务器API。我目前正在使用tomcat + jersey + postgresql服务器端来实现类似REST的层,并且建议的解决方案可以使用这些技术,但如果我相信最好的解决方案在于其他Java技术,它可以讨论。
我一直在寻找websockets和一些聊天样本,从tomcat websockets聊天开始,但是它们是有状态的,并且不适合扩展。
我看到它的方式,使用websockets方法我可以将状态从每个节点中取出,通过将其存储在数据库中,但是我需要某种pub / sub机制来让所有节点将新消息推送到他们所约束的客户参加聊天室。
由于我不想重新发明轮子,我希望能够通过编写现有的和尝试过的技术来实现解决方案。提前谢谢。
答案 0 :(得分:1)
如果你不想重新发明轮子,我建议使用像ejabberd或Openfire这样的Jabber / XMPP服务器(如果你真的想要一个Java解决方案)。它不是RESTful,而是一个行业标准的聊天服务器,可以横向扩展。
答案 1 :(得分:1)
查看Cettia - Java服务器的quick start guide和clustering section,它旨在满足这些用法。
cettia应用程序设计用于在Grizzly,Netty,Play,Servlet,Vert.x等上运行,并且不需要在服务器之间共享任何内容以便于扩展(pub-sub系统就足够了)。
以下是您的一些示例:
我是该项目的作者。如果您认为它处于alpha阶段,您可能需要尝试Atmosphere,这与Cettia类似但提供GA。
答案 2 :(得分:0)