CPU 和带宽密集型是不是直接使用 Firebase Cloud Messaging 发送推送通知?

Posted

技术标签:

【中文标题】CPU 和带宽密集型是不是直接使用 Firebase Cloud Messaging 发送推送通知?【英文标题】:Is CPU and bandwidth intensive sending push notifications directly with Firebase Cloud Messaging?CPU 和带宽密集型是否直接使用 Firebase Cloud Messaging 发送推送通知? 【发布时间】:2018-05-13 18:18:03 【问题描述】:

据我了解,当从 https://console.firebase.google.com/u/0/project/[projectname]:api-project-[senderID]/notification/compose 从 Firebase 撰写消息控制台发送通知时,只消耗来自 Google 服务器的 CPU 和带宽,因为通知是直接从 Google 服务器发送的,而不是从我的服务器发送的,对吗?如果我使用 cURL 从我的服务器触发推送通知,它仍然会使用 Firebase 和 Google 服务器来发送和传递通知,并且它不会消耗我服务器的 CPU 和带宽,对吗?

我正在尝试完全了解是否直接使用 Firebase 云消息传递而不使用 Urban Airship 等第三方解决方案发送推送通知是否会占用我服务器上的 CPU 和带宽。我不确定第三方推送通知解决方案提供的部分功能/优势是否是处理 CPU/带宽密集型任务,或者这是否是 Google 服务器在直接使用 Firebase Cloud Messaging 连接和发送推送通知时直接处理的事情。

我知道 *** 不适用于引起争论的问题,尤其是关于架构和内部与第三方软件解决方案的问题,但我的问题的主要目的是了解当推送通知发送到时谁处理 CPU 和带宽密集型工作成千上万的设备,是谷歌服务器(Firebase 云消息服务器),还是提供推送通知服务的软件公司的服务器,例如 Urban Airship,或者在 Firebase 云消息配置为时触发推送通知的服务器在没有第三方解决方案的情况下自行构建?谢谢。

编辑:Why and how is push-notification (like GCM) battery efficient? 的答案包括以下段落:“android 设备保持与 GCM 服务器打开的单个连接以侦听通知”。但是,它仍然没有回答我的问题,因为即使我知道 Firebase Cloud Messaging 服务器负责发送推送通知,我仍然试图了解我的服务器是否根本不需要提供 CPU 功率或带宽,即使例如,如果我使用 cURL 使用 php cURL 函数和 cron 作业从我的服务器触发推送通知。如果我可以打个比方,想象一下通过直接从https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js 导入库而不是下载 jquery.min.js 文件然后将其放在您的服务器上来使用 jQuery。如果您使用https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js,您将使用来自 Google 服务器的资源,而不是来自您自己服务器的资源。如果您将 jquery.min.js 下载到您的服务器,那么访问者将使用来自您自己服务器的资源,而不是来自 Google 的服务器。这是我的类比,所以对于使用 Firebase 云消息传递而没有第三方解决方案(如 Urban Airship)的推送通知,我想知道谁提供 CPU 能力和带宽,是您自己的服务器还是 Google 的服务器。谢谢。

【问题讨论】:

Why and how is push-notification (like GCM) battery efficient?的可能重复 嗯,发送推送通知需要考虑很多部分 * 管理推送令牌 * 处理 ack,* 处理来自对方的油门并重试 * 跨平台(APNS 与 GCM) * 管理折叠键等等所以这取决于您尝试做的事情的复杂性,以及您想要维护解决方案的控制程度可能会有所不同。 @roostertech 最初,我想根据他们订阅的内容使用两个频道或细分,每天一次或两次向我所有的数千名订阅者发送简单的推送通知。我已经通过 Urban Airship 实现了这一目标,但我正在评估仅在没有 Urban Airship 的情况下使用 Firebase Cloud Messaging。 在这种情况下,它应该相当简单,因为如果您使用像 GCM 主题这样的机制。它不应该是 CPU 密集型的,因为您不会发送给每个单独的用户,而只是向该主题发送一个广播,并让 Google 完成繁重的工作。 developers.google.com/cloud-messaging/topic-messagingfirebase.google.com/docs/cloud-messaging/android/… @roostertech 这很有意义。您可以将此作为您的答案,而不仅仅是作为评论,以便我可以选择一个答案并将问题报告为已解决。谢谢。 【参考方案1】:

在这种情况下,如果您使用像 GCM 主题这样的机制,它应该是相当简单的。它不应该是 CPU 密集型的,因为您不会发送给每个单独的用户,而只是向该主题发送一个广播,并让 Google 完成繁重的工作。

https://developers.google.com/cloud-messaging/topic-messaging https://firebase.google.com/docs/cloud-messaging/android/topic-messaging

【讨论】:

以上是关于CPU 和带宽密集型是不是直接使用 Firebase Cloud Messaging 发送推送通知?的主要内容,如果未能解决你的问题,请参考以下文章

一文读懂MySQL调优

嵌套 PHP 是不是包含 CPU/内存密集型?

多个 CPU 是不是竞争相同的内存带宽?

开发 CPU 密集型移动应用程序是不是值得?

CPU上下文切换(上)

nodeSelector:Pod 定向调度