MongooseIM 可以在 PostgreSQL 后端处理多少用户?
How many users can MongooseIM handle on the PostgreSQL backend?
我正在使用 PostgreSQL 作为后端开发 MongooseIM 服务器。我需要所有基本功能,例如:
- 在线一对一聊天。
- 群聊(仅限 Muc 灯)
- MAM 存储和所有其他基本功能。
我可以使用集群扩展 MongooseIM(使用 Mnesia 来存储会话)。但我觉得我可能会从后端使用 PostgreSQL 面临瓶颈。 PostgreSQL 可以处理的用户数量的粗略估计是多少,而不必像 Riak 那样必须在 No-sql 上进行轮班。因为从可扩展性的角度来看,我不想弄乱后端。
示例 - 假设我需要处理超过 1000 万用户。我可以为此使用 PostgreSQL 吗?如果是,那么我是否需要像 Postgresql 中的分片这样的特殊技术才能继续使用它,或者在某些时候我必须转移到 Riak 或其他 Nosql。你有什么建议?
这是一个复杂的问题。首先,它在很大程度上取决于您在 MongooseIM 中启用的功能集,因此其他人完成的任何负载测试可能无法反映您的特定配置和环境。
此外,要真正能够监控覆盖数万用户的系统中的所有重要参数,您可能需要客户端性能跟踪(交付确认、往返时间)——这不是由虽然是 XMPP XEP,但实现方式各不相同。
也就是说,Postgres 可能只允许您扩展到数十万在线用户。它可能需要 table 使用 XMPP 联合跨 MongooseIM 集群进行分片和用户分片,以允许所有用户之间的通信。此架构中的数据库节点与 MIM 集群相关联,因此不会跨集群边界共享数据。众所周知,按照这些路线进行的设置可以在生产中使用。
如果您必须处理数百万用户,您很可能必须从 PostgreSQL 切换到一个本身可以更容易扩展的数据库。 MongooseIM supports Cassandra, which currently seems to be the best bet. Personally, I'd curious to find out how TiKV(请让我知道,如果你尝试那个)在这种设置中的票价。它伪装成 MySQL 在线,因此也应该与 MongooseIM 一起工作,但在操作上与 Cassandra 类似:自动复制、集群可扩展性、容错等。
不过,最终,您只能通过测试自己来知道。 Instagram 分享了 some interesting stories 大量关于 Postgres 的信息,显示了所需的维护量。 las,由于云成本,达到数百万用户的负载测试非常昂贵,因此这样的测试结果并不常见。
我正在使用 PostgreSQL 作为后端开发 MongooseIM 服务器。我需要所有基本功能,例如:
- 在线一对一聊天。
- 群聊(仅限 Muc 灯)
- MAM 存储和所有其他基本功能。
我可以使用集群扩展 MongooseIM(使用 Mnesia 来存储会话)。但我觉得我可能会从后端使用 PostgreSQL 面临瓶颈。 PostgreSQL 可以处理的用户数量的粗略估计是多少,而不必像 Riak 那样必须在 No-sql 上进行轮班。因为从可扩展性的角度来看,我不想弄乱后端。
示例 - 假设我需要处理超过 1000 万用户。我可以为此使用 PostgreSQL 吗?如果是,那么我是否需要像 Postgresql 中的分片这样的特殊技术才能继续使用它,或者在某些时候我必须转移到 Riak 或其他 Nosql。你有什么建议?
这是一个复杂的问题。首先,它在很大程度上取决于您在 MongooseIM 中启用的功能集,因此其他人完成的任何负载测试可能无法反映您的特定配置和环境。
此外,要真正能够监控覆盖数万用户的系统中的所有重要参数,您可能需要客户端性能跟踪(交付确认、往返时间)——这不是由虽然是 XMPP XEP,但实现方式各不相同。
也就是说,Postgres 可能只允许您扩展到数十万在线用户。它可能需要 table 使用 XMPP 联合跨 MongooseIM 集群进行分片和用户分片,以允许所有用户之间的通信。此架构中的数据库节点与 MIM 集群相关联,因此不会跨集群边界共享数据。众所周知,按照这些路线进行的设置可以在生产中使用。
如果您必须处理数百万用户,您很可能必须从 PostgreSQL 切换到一个本身可以更容易扩展的数据库。 MongooseIM supports Cassandra, which currently seems to be the best bet. Personally, I'd curious to find out how TiKV(请让我知道,如果你尝试那个)在这种设置中的票价。它伪装成 MySQL 在线,因此也应该与 MongooseIM 一起工作,但在操作上与 Cassandra 类似:自动复制、集群可扩展性、容错等。
不过,最终,您只能通过测试自己来知道。 Instagram 分享了 some interesting stories 大量关于 Postgres 的信息,显示了所需的维护量。 las,由于云成本,达到数百万用户的负载测试非常昂贵,因此这样的测试结果并不常见。