我目前正在开发的应用程序需要可扩展的实时通信。我们一直在研究和试用Firebase实时数据库和firestore。似乎Firebase实时数据库更加成熟并经过测试,而firestore仍处于测试阶段,这就是我们倾向于实时数据库的原因。
然而,我们担心它在我们的环境中的扩展能力。我们的查询主要是基于用户位置的地理空间。根据{{3}}和Firebase simultaneous realtime connections to my database,最大并发用户数为100.000,这对我们的需求来说太低了。
根据他们的文档,似乎数据库分片是扩展到超过100.000个并发用户https://firebase.google.com/pricing/#faq-simultaneous的方法。由于我们的查询基于用户的位置,因此我们可以将数据分组到区域,例如美国西部,美国中部和美国东部,并为这三个地区中的每一个都有一个数据库实例。
虽然这种方法可行,但设置它似乎非常麻烦。我们可能需要有一个用户最初连接的服务,以便重定向到适合用户所在区域的正确数据库实例。此外,它应该处理用户移动到另一个区域的情况,以及因此,应该重定向到包含该特定区域的数据的另一个数据库实例。 另一个复杂的任务是将数据分发到正确的数据库实例中。
是否有更简单的方法可以扩展到超过100.000个用户,或者是否可以增加单个Firebase实时数据库的并发连接数量? 对我来说,使用Firebase似乎几乎是浪费,如果它需要你自己做很多“负载”平衡。
答案 0 :(得分:1)
100K并发连接是Firebase实时数据库的硬上限。
您使用两步连接描述的方法非常惯用。第一步通常很简单。事实上,对于许多应用程序来说,它是其身份验证流程的一部分,或者基于其结果。例如,许多应用程序将用户的分片基于其UID的哈希。
在您的情况下,您可以在注册时将用户区域注入其令牌custom claim。然后,当他们登录时,您会获得该声明,并可以将其重定向到他们的分片。您还可以在首次连接时在客户端中保留分片信息,这样您只需为每个客户端/设备确定一次。
答案 1 :(得分:0)