Firebase实时数据库 - 如何扩展到超过10万个并发连接

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

1

100K并发连接是Firebase实时数据库的硬性上限。

您描述的两步连接方法非常惯用。第一步通常很简单。事实上,对于许多应用程序来说,它是其身份验证流程的一部分,或者基于此结果。例如,许多应用程序将用户的分片基于其UID的哈希值。

在您的情况下,当用户注册时,您可以将用户区域作为自定义声明注入到其令牌中。然后,当他们登录时,您将获得该声明,并可以将其重定向到其分片。您还可以在客户端首次连接时将分片信息持久化,以便每个客户端/设备仅需确定一次。


0
有没有更简单的方法来扩展到超过100,000个用户,或者增加单个Firebase实时数据库的并发连接数量?
是的。使用Firestore数据库。
完全自动化地扩展。目前,缩放限制为:
- 约1百万个并发连接和10,000次写入/秒。(他们计划在未来增加这些限制)(来源: source)
- 向文档的最大写入速率为每秒1次。(来源:source)
于2019年1月31日正式推出(source)。

Firestore有一些不擅长的事情。 它的定价模式很糟糕。 不能用于IOT设备。 如果要制作实时游戏,否则它将比RTDB花费更多。 因此,仅扩展不是问题。 但是用例也是如此。 当有频繁的数据流时,RTDB在这种用例中很方便。 但是在其中存储数据成本更高。 - Harkal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接