【问题标题】:How the Connection is calculated in Firebase如何在 Firebase 中计算连接
【发布时间】:2013-10-19 13:27:23
【问题描述】:

连接是如何计算的?

假设我有一个 Web 应用程序,其中一个负载向所有连接的客户端发送消息,假设我有 5 个连接的客户端。这是否意味着只要带有 Web 应用程序的浏览器选项卡打开,它将计为 1 个连接,这意味着我将有 6 个并发连接,这将计入您在定价页面中定义为“连接”的内容?

如果不是,请说明您如何计算“连接”。谢谢

【问题讨论】:

  • 是的,如果在任何给定时间有 6 个浏览器选项卡(或设备)连接到 Firebase,则将被计为 6 个连接。定价页面列出了您在任何给定时间可以同时打开的最大连接数。
  • 不会是 5 个常设连接(每个客户端一个)和 5 个 Web 应用的临时连接(每个请求一个)吗?

标签: firebase


【解决方案1】:

自从我浏览 thinkster.io angular+firebase 教程以来,这个问题一直困扰着我,我看到我的 firebase 分析选项卡显示并发峰值为 6,尽管我只记得打开了一页。我回顾了代码,并认为这可能与教程如何为您的 firebase 中的每个位置创建一个新的 Firebase(url) 有关。

我想测试创建新 Firebase(url) 与获取根引用然后访问 .child() 位置之间的区别。我的理论是 new Firebase(url) 每次都会创建一个新的连接,而 .child() 会重新使用现有的连接。

设置

  • 创建了两个新的 Firebase,每个都有相同的数据
  • 使用 yeoman 设置 angularjs 项目
  • 包括角火

代码

为简单起见,我只是将所有内容放在生成代码的主控制器中。

为了测试使用 new Firebase() 创建的连接,我执行了以下操作:

$scope.fb_root = $firebase(new Firebase(FBURL_NEW));
$scope.fb_root_apps = $firebase(new Firebase(FBURL_NEW + '/apps'));
$scope.fb_root_someApp = $firebase(new Firebase(FBURL_NEW + '/apps/someApp'));
$scope.fb_root_users = $firebase(new Firebase(FBURL_NEW + '/users'));
$scope.fb_root_mike = $firebase(new Firebase(FBURL_NEW + '/users/mike'));

为了测试使用 ref.$child() 创建的连接,我执行了以下操作:

$scope.fb_child = $firebase(new Firebase(FBURL_CHILD));
$scope.fb_child_apps = $scope.fb_child.$child("apps");
$scope.fb_child_someApp = $scope.fb_child_apps.$child("someApp");
$scope.fb_child_users = $scope.fb_child.$child("users");
$scope.fb_child_mike = $scope.fb_child_users.$child("mike");

然后我将这些对象绑定到我的视图中以便我可以看到它们,然后我尝试通过我的 firebase forge 更新数据并在我的应用程序上实时观看数据更新。

结果

我将本地应用程序打开为 17 个浏览器选项卡,希望大量选项卡会夸大连接方法之间的任何差异。

我发现每个选项卡只为每个 firebase 数据库打开了一个返回到 firebase 的 Web 套接字连接。因此,在测试结束时,两种方法都产生了相同的 17 个连接的峰值。

结论

从这个简单的测试来看,我认为 Firebase JS 库在管理其连接方面做得很好。

无论您的代码多次调用 new Firebase(),还是通过 .child() 引用子位置,就您的计量而言,该库只会创建一个连接。只要您的应用处于打开状态,该连接就会一直在线。

所以在您的示例中 - 是的,我相信您会看到 6 个并发连接,1 个用于有人发送消息的应用,5 个用于接收消息的应用。

更新

另一件值得一提的事情是,Firebase 根据当月 95% 的使用率来衡量付费计划的连接。这列在他们定价页面的常见问题解答部分@https://www.firebase.com/pricing.html

2016 年 3 月 11 日更新:Firebase 似乎不再根据 95% 来衡量连接。相反,第 101 个并发连接被拒绝。

https://www.firebase.com/pricing.html

我们所有的计划都对数据库连接数有硬性限制。 我们的 Free 和 Spark 计划限制为 100 个。限制不能 提高。所有其他计划的数据库数量限制为 10,000 连接。这可以删除以永久允许无限 如果您通过 firebase-support@google.com 向我们发送电子邮件,则可以连接。 我们施加此礼貌限制的原因是为了防止滥用并确保 我们准备好处理我们最大的客户。请联系 我们至少提前 24 小时,以便我们可以取消此限制并确保 我们有足够的容量满足您的需求。

【讨论】:

  • 如果我想与 5000 个用户建立类似 whatsapp 的组,那么它是否可以在 100 个连接中工作。
  • @PratikButani,我认为只要不超过 100 个用户打开群聊应用程序,它就可以工作,并且您的应用程序无法在后台保持与火力库的连接以获取任何新消息,因为将被视为一个连接。
猜你喜欢
  • 1970-01-01
  • 2015-03-18
  • 1970-01-01
  • 1970-01-01
  • 2013-09-05
  • 1970-01-01
  • 2022-10-01
  • 2022-01-20
  • 2018-04-25
相关资源
最近更新 更多