MongooseIM可以在PostgreSQL后端上处理多少个用户?

时间:2018-12-29 18:03:38

标签: sql postgresql nosql mongoose-im

我正在以PostgreSQL为后端的MongooseIM服务器上工作。我需要所有的基本功能,例如:

  1. 与存在进行一对一聊天。
  2. 群聊(仅限Muc light)
  3. MAM存储和所有其他基本功能。

我可以通过群集扩展MongooseIM(使用Mnesia来存储会话)。但是我觉得使用PostgreSQL可能会从后端面对瓶颈。无需在Riak之类的No-sql上进行转换就可以由PostgreSQL处理的用户数量的大致估计是多少。因为我不想从可伸缩性的角度弄乱后端。

示例-假设我需要处理超过1000万用户。我可以使用PostgreSQL吗?如果是,那么我是否需要特殊的技术(如Postgresql中的分片)才能继续使用它,或者在某个时候我必须转向Riak或其他Nosql。您有什么建议?

1 个答案:

答案 0 :(得分:1)

这是一件复杂的事情。首先,它很大程度上取决于您在MongooseIM中启用的功能集,因此其他人进行的任何负载测试都可能无法反映您的特定配置和环境。

此外,要实际上能够监视覆盖数万用户的系统中的所有重要参数,您可能需要客户端性能跟踪(交付确认,往返时间)-XMPP XEP并未对此进行标准化但是,实现方式会有所不同。

这就是说,Postgres可能只会允许您扩展到成千上万的在线用户。它可能需要使用XMPP联合身份验证跨MongooseIM群集的表分片和用户分片,以允许所有用户之间进行通信。此体系结构中的DB节点与MIM群集关联,因此不会跨群集边界共享数据。这些生产线上的设置已知可以在生产中使用。

如果必须处理数百万个用户,则很可能必须从PostgreSQL切换到可以更容易扩展的数据库。 MongooseIM supports Cassandra,目前看来是最好的选择。就个人而言,我很想知道TiKV(如果您尝试过这种情况,请告诉我)在这种设置中的表现。它伪装成MySQL,因此也应该与MongooseIM一起使用,但是在操作上与Cassandra类似:自动复制,集群可伸缩性,容错等。

不过,最终,您只会通过测试自己才能知道。 Instagram大规模分享了有关Postgres的some有趣的stories,显示了所需的维护量。遗憾的是,由于云成本的原因,达到数百万用户的负载测试非常昂贵,因此这种测试结果并不常见。