目前,我正在摆弄一个应用程序,有一个建立匹配的下聊天的比喻:

  • 聊天的一个目的是,保持在存储器,并包含一系列的聊天 消息
  • 聊天呈现在若干浏览器windows和更新 拉在与a4j:推

该方案设置这样的:一个实例,一个聊天室对象,与它的消息之间共享页范围内的接缝部件在不同的会议。现在,当任何一届会议的员额新消息,即修改聊天对象,所有缝的部件,应被通知的新消息,以使新的国家可以转到用户界面上的所有客户。

我能想到的三种方式实现这一点:

  1. 缝的事件与聊天ID作为参数,然后每个组件检查ID并更新或忽略消息
  2. JMS队列或一个JMS主题,每个分listenes上一个过滤器只是聊天
  3. 一个纯粹的Java听众的机构在共享聊天物体,即每个缝件寄给它的通知是纯粹和直接java

为了辩论假设的数聊天的是大(几十万)和数量的用户小(让我们所说的2-10).

怎么每个扩展性能明智吗?你有任何其他建议,如何使这与煤层和执行?

因为我看到它,(1)将合并清理,但最终你会通知的数十万的部件在那里只有几个实际上需要它。所以它可能不会规模。

(2)将综合和仅仅取决于表现的JMS提供商(它可以交换)和也将工作中的集群环境中没有修改。我不确定有关绩效的JMS在这里,即几百邮件和万的听众不同过滤器或多或没有?

(3)将是快速的,因为只有所需的组件,将通知和该通知是纯粹和直接java。然而,并发/访问可能会出现问题,因为一些交叉届会议/组件/螺纹完成。

(1)和(3)一个解决方案,支持聚类必须加入手,如果需要在某一点。

有帮助吗?

解决方案

我建议2).我还建议切割JMS出的公式-即使它将使你能够换消息提供者,它也将使防止你从使用更先进的功能的邮件系统。如果您使用Oracle数据库 AQ 会做一个明智的选择(它支持JMS顺便说一句.).否则我建议使用最近我们成功应该可以通过 Boss消息 或者一个第三方解决方案喜欢 RabbitMQ.

因为你清楚地有一个通讯问题你应该选择采用一个消息解决方案。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top