如何在 tomcat + jersey 之上在 java 中实施可扩展聊天 API?
How can I implement a scalable chat API in java, on top of tomcat + jersey?
我需要在 Java 中实现一个聊天服务器 API,使其能够水平扩展。我目前正在使用 tomcat + jersey + postgresql 服务器端来实现类似 REST 的层,建议的解决方案与这些技术一起使用会很好,但如果我认为最好的解决方案在于其他java技术可以讨论
我一直在研究 websockets 和一些聊天示例,从 tomcat websockets 聊天开始,但它们是有状态的,不太适合扩展。
我的看法是,通过使用 websockets 方法,我可以通过将状态存储在数据库中来获取每个节点的状态,但是我需要某种 pub/sub 机制让所有节点能够将新消息推送给他们绑定到参与聊天室的客户。
因为我不想重新发明轮子,所以我希望能够通过组合现有的和经过尝试的技术来制定解决方案。提前致谢。
请查看解决方案:
或此处:
如果您不想重新发明轮子,我建议使用 Jabber/XMPP 服务器,例如 ejabberd 或 Openfire(如果您真的想要 Java 解决方案)。它不是 RESTful,而是一个行业标准的聊天服务器,并且可以水平扩展。
看看 Cettia - Java 服务器的 quick start guide and clustering section,它是为满足这种用法而设计的。
cettia 应用程序旨在 运行 在 Grizzly、Netty、Play、Servlet、Vert.x 等上,并且在服务器之间不共享任何内容以便于扩展(pub-sub 系统就足够了).
这里有一些例子供您参考:
- Servlet 3 and Java WebSocket API 1 对于 Tomcat
- JAX-RS 2 Atmosphere2 球衣
- Hazelcast 3 缩放
- jGroups 3 缩放
我是该项目的作者。如果您介意它处于 alpha 阶段,您可能想尝试 Atmosphere,它与 Cettia 类似但提供 GA。
我需要在 Java 中实现一个聊天服务器 API,使其能够水平扩展。我目前正在使用 tomcat + jersey + postgresql 服务器端来实现类似 REST 的层,建议的解决方案与这些技术一起使用会很好,但如果我认为最好的解决方案在于其他java技术可以讨论
我一直在研究 websockets 和一些聊天示例,从 tomcat websockets 聊天开始,但它们是有状态的,不太适合扩展。
我的看法是,通过使用 websockets 方法,我可以通过将状态存储在数据库中来获取每个节点的状态,但是我需要某种 pub/sub 机制让所有节点能够将新消息推送给他们绑定到参与聊天室的客户。
因为我不想重新发明轮子,所以我希望能够通过组合现有的和经过尝试的技术来制定解决方案。提前致谢。
请查看解决方案:
或此处:
如果您不想重新发明轮子,我建议使用 Jabber/XMPP 服务器,例如 ejabberd 或 Openfire(如果您真的想要 Java 解决方案)。它不是 RESTful,而是一个行业标准的聊天服务器,并且可以水平扩展。
看看 Cettia - Java 服务器的 quick start guide and clustering section,它是为满足这种用法而设计的。
cettia 应用程序旨在 运行 在 Grizzly、Netty、Play、Servlet、Vert.x 等上,并且在服务器之间不共享任何内容以便于扩展(pub-sub 系统就足够了).
这里有一些例子供您参考:
- Servlet 3 and Java WebSocket API 1 对于 Tomcat
- JAX-RS 2 Atmosphere2 球衣
- Hazelcast 3 缩放
- jGroups 3 缩放
我是该项目的作者。如果您介意它处于 alpha 阶段,您可能想尝试 Atmosphere,它与 Cettia 类似但提供 GA。