本文概述
- 它是如何工作的?
- 后台功能的生命周期
文章图片
移动和Web应用程序需要后端代码来执行任务, 例如发出通知或处理长时间运行的任务。在过去的十年中, 此后端代码在服务器上运行。
最近, Google的Firebase推出了一项名为Cloud Functions的新服务。借助Cloud Functions, Firebase提供了可扩展的解决方案, 用于在云中运行后端代码。
Firebase的云功能使我们能够自动执行后端代码, 以响应通过HTTPS请求和Firebase功能触发或引起的事件。我们的代码存储在Google的云中, 并且在托管环境中运行, 无需管理和扩展自己的服务器。
在云中运行代码具有多种优势, 如下所示:
- 无需运行和维护我们自己的服务器。
- 对于后端代码, 我们有隔离的代码库。
- 我们只得到代码实际执行时间的账单。
- 云的基础架构具有高度可扩展性。
- 当发生有趣的事情时通知用户。
- 执行实时数据库维护和清理。
- 在云中执行密集任务, 而不是在我们的应用程序中执行。
- 与API和第三方服务集成。
Cloud Function用于使用户参与并及时了解有关应用程序的相关信息。例如, 考虑一个允许用户跟踪应用程序中彼此活动的应用程序。在这样的应用程序中, 由实时数据库触发的功能将写入以存储新的关注者。这些关注者可以创建Firebase Cloud Messaging, 以使知道他们已经获得新关注者的适当用户。
\
文章图片
- 此函数写入存储跟随者的实时数据库路径。
- 消息由功能组成, 通过FCM发送。
- 通知消息通过FCM发送到用户的设备。
通过使用Cloud Functions数据库事件处理, 我们可以保持系统清洁和最新, 并根据用户行为修改实时数据库。例如, 在基于实时数据库的聊天室应用程序中, 我们可以跟踪书写事件并清除用户消息中不适当或亵渎的文字。
文章图片
- 该函数的数据库事件处理程序侦听特定路径上的写事件, 并检索包含任何聊天消息文本的事件数据。
- 为了检测并清除任何不适当的语言, 该函数将处理文本。
- 该函数在数据库的背面写入更新后的文本。
用户可以利用Cloud Functions来执行Google Cloud资源密集型任务(繁重的CPU或网络), 实际上这不可能在用户的设备上运行。
例如, 我们编写了一个函数来侦听将图像上传到存储设备, 运行该功能, 将图像下载到实例, 然后将其上传并修改回存储设备。我们所做的修改可能包括裁剪, 调整图像大小等。为了使这项工作更容易, 我们将ImageMagick命令行工具与Cloud Functions一起使用。
文章图片
- 将图像文件上传到云存储后, 将触发一个功能。
- 该功能创建图像的缩略图版本并下载图像。
- 缩略图位置通过写入数据库, 以便客户端应用可以找到它或使用它。
- 该功能将该缩略图上传回新位置的存储中。
- 该应用程序下载缩略图链接。
云端功能可通过调用和公开Web API来帮助我们的应用与其他服务很好地配合使用。例如, 一个应用程序用于协作开发, 可以将GitHub发送到工作组聊天室。
文章图片
- 用户将提交推送到GitHub存储库。
- HTTPS函数通过GitHub webhook API触发。
- 该函数通知提交给团队松弛通道
当负载增加或减少时, Google会通过迅速扩展运行我们的功能所需的虚拟服务器实例的数量来做出响应。每个功能在其自己的环境中以自己的配置分别运行。
后台功能的生命周期 开发人员为新功能编写代码, 定义该功能应在何种条件下执行, 并选择事件提供程序(例如, 实时数据库)。
开发人员将部署该功能, 该功能将通过firebase连接到选定的事件提供程序。
当事件提供程序生成符合函数条件的事件时, 将调用该代码。
如果该功能忙于处理许多事件, 则Google会创建更多实例来快速处理工作;如果函数空闲, 则清理实例。
当开发人员通过部署更新的代码来更新功能时, 旧版本的所有实例将被清除并通过新实例进行替换。
【Firebase云功能】事件提供程序与功能之间的连接已删除, 开发人员删除功能后将清除所有实例。
推荐阅读
- Firebase创建和部署云功能
- Firebase触发器
- Firebase托管
- Firebase在云端存储中上传文件
- 从Cloud Storage下载文件
- Firebase在云存储中创建引用
- Firebase云存储设置和配置
- Firebase(云存储)
- 在Firestore中更新和删除