Serverless 开发中如何处理多个事件源?

简介

Serverless 架构基于事件驱动,在 Serverless 架构中,开发者只专注于具体的业务处理,而整个应用的其他方面(如保证高可用性,伸缩性等)由云服务商托管。但在实际的应用中,往往会出现多个事件源同时触发同一个 Serverless Function 的情况。本文将详细介绍在 Serverless 开发中如何处理多个事件源。

处理多个事件源的种类

在 Serverless 开发中,有多种事件源可以触发 Serverless Function,比如:

  • API 请求
  • 对象存储服务的上传事件
  • 批处理作业状态
  • 定时器触发事件
  • 云消息队列触发事件等

上述事件源不止一种,因此在 Serverless 开发中处理多个事件源是必要的。

如何处理多个事件源

要正确处理多个事件源,开发者需要了解如何利用 Cloud Function 框架的注册机制,并通过注册不同的事件源来触发同一个 Serverless Function。以下是一个示例代码:

----- ---------- - ----------------------------------
----- ----------- - ------------------------------------
----- --- - -------------------------------------
----- ------------------ - ------------------------------------
----- --------------- - ---------------------------------

----- ---------- - --- -------------
----- -------- - --- ------------------------
----- --- - --- ------

----- ---------- - --------------
----- ------------ - ---------------

----- ------------- - -
  ------------------- ----- -------- ------- -------- -
    ----- ------ - -----------------
    ----- --- - ---------------------
    ----- ---------------------------- ------------- -----
  --
  ---------------- ----- -------- ------- -------- -
    --------------------- --- -------- -----------------------
    ----- ------- - --------------
    ----- ---------------------------- ------------- ---------
  --
  ------------------ ----- -------- ------- -------- -
    ----- ------ - -----------------
    ----- --- - --------------------------
    ----- ---------------------------- ------------- -----
  --
--

----- -------------------- ------- ------------------ -
  ----- ----------------------- ------------- ------ -
    ----- --------------- - --- -----------------
      ----
      -------------
      ---------- ----------
      ------- ---------------------
    ---
    ----- ------ - ----- ------------------------------
    ---------------------- --------
  -
-

----- -------------------- - --- -------------------------------- ----------
------------------------------------------------------------

-------------- - -
  -------- --------------------------------------------------------
--

备选方案:使用 EventBridge

EventBridge 是 AWS 的事件总线服务,可将来自多个来源(如应用程序、SaaS 和 AWS 服务)的数据安全地路由到各种目标(如 AWS Lambda 函数、AWS Kinesis streams、AWS SQS、AWS ELK 等)。

EventBridge 可以帮助 Serverless 应用程序处理以下方面:

  • 应用程序事件 - 应用程序服务间的数据流和通信
  • AWS 服务事件 - AWS 服务内和服务间通信的数据流
  • SaaS 事件 - SaaS 应用程序产生的事件。

使用 EventBridge,可以为每个事件源创建规则,并将其与 Serverless Function 关联。这样,当事件源被触发时,EventBridge 将发送该事件到与其关联的函数。

然而,EventBridge 需要付费,对多数中小型应用程序来说,上述示例可能已经是足够简单而有效的一种解决方案。

结论

在 Serverless 开发中,处理多个事件源可以通过注册多个事件钩子来实现。拿上述示例测试你自己的 Serverless 应用程序,一定会逐步掌握技巧。如果您希望将其推到另一个级别,则可以尝试使用 EventBridge 等更复杂的方案来简化您的应用程序的技术部分,让您更专注于业务逻辑。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/672ca96eddd3a70eb6d8f5ce