如何在java中实现可扩展的聊天API,在tomcat + jersey之上?

时间:2015-04-01 22:09:44

标签: java tomcat websocket jersey chat

我需要在Java中实现一个可以水平扩展的聊天服务器API。我目前正在使用tomcat + jersey + postgresql服务器端来实现类似REST的层,并且建议的解决方案可以使用这些技术,但如果我相信最好的解决方案在于其他Java技术,它可以讨论。

我一直在寻找websockets和一些聊天样本,从tomcat websockets聊天开始,但是它们是有状态的,并且不适合扩展。

我看到它的方式,使用websockets方法我可以将状态从每个节点中取出,通过将其存储在数据库中,但是我需要某种pub / sub机制来让所有节点将新消息推送到他们所约束的客户参加聊天室。

由于我不想重新发明轮子,我希望能够通过编写现有的和尝试过的技术来实现解决方案。提前谢谢。

3 个答案:

答案 0 :(得分:1)

如果你不想重新发明轮子,我建议使用像ejabberd或Openfire这样的Jabber / XMPP服务器(如果你真的想要一个Java解决方案)。它不是RESTful,而是一个行业标准的聊天服务器,可以横向扩展。

答案 1 :(得分:1)

查看Cettia - Java服务器的quick start guideclustering section,它旨在满足这些用法。

cettia应用程序设计用于在Grizzly,Netty,Play,Servlet,Vert.x等上运行,并且不需要在服务器之间共享任何内容以便于扩展(pub-sub系统就足够了)。

以下是您的一些示例:

我是该项目的作者。如果您认为它处于alpha阶段,您可能需要尝试Atmosphere,这与Cettia类似但提供GA。

答案 2 :(得分:0)