我目前正在开发的应用需要可扩展的实时通信。我们一直在研究和尝试Firebase实时数据库和Firestore。似乎Firebase实时数据库更成熟、经过测试,而Firestore仍处于beta阶段,这就是为什么我们倾向于使用实时数据库的原因。
然而,在我们的情况下,我们担心其扩展能力。我们的查询主要基于用户位置的地理空间。根据Firebase simultaneous realtime connections to my database和https://firebase.google.com/pricing/#faq-simultaneous,最大并发用户数为100,000,这对我们的需求来说太低了。
根据他们的文档,似乎数据库分片是超过100,000个并发用户的扩展方式https://firebase.google.com/docs/database/usage/sharding。由于我们的查询基于用户的位置,我们可以将数据分组到区域中,例如美国西部,美国中部和美国东部,并为这三个地区的每个地区设置一个数据库实例。
虽然这种方法可能有效,但设置起来似乎非常麻烦。我们可能需要一个服务,用户最初连接到该服务以便被重定向到适合用户所在地区的正确数据库实例。此外,它还应处理用户移动到另一个地区的情况,并因此被重定向到包含该特定地区数据的另一个数据库实例。另一个复杂的任务将是将数据分发到正确的数据库实例中。
是否有更简单的方法来扩展超过100,000个用户,或者是否可以增加单个Firebase实时数据库的并发连接数?对我来说,如果需要自己做这么多的“负载”平衡,使用Firebase几乎是一种浪费。
然而,在我们的情况下,我们担心其扩展能力。我们的查询主要基于用户位置的地理空间。根据Firebase simultaneous realtime connections to my database和https://firebase.google.com/pricing/#faq-simultaneous,最大并发用户数为100,000,这对我们的需求来说太低了。
根据他们的文档,似乎数据库分片是超过100,000个并发用户的扩展方式https://firebase.google.com/docs/database/usage/sharding。由于我们的查询基于用户的位置,我们可以将数据分组到区域中,例如美国西部,美国中部和美国东部,并为这三个地区的每个地区设置一个数据库实例。
虽然这种方法可能有效,但设置起来似乎非常麻烦。我们可能需要一个服务,用户最初连接到该服务以便被重定向到适合用户所在地区的正确数据库实例。此外,它还应处理用户移动到另一个地区的情况,并因此被重定向到包含该特定地区数据的另一个数据库实例。另一个复杂的任务将是将数据分发到正确的数据库实例中。
是否有更简单的方法来扩展超过100,000个用户,或者是否可以增加单个Firebase实时数据库的并发连接数?对我来说,如果需要自己做这么多的“负载”平衡,使用Firebase几乎是一种浪费。