Serverless 应用中的分布式跟踪

在 Serverless 应用的架构中,应用中的每个部分都可以由不同的服务来提供,这些服务可以跨越不同的服务提供者和不同的部署单元。如此,跟踪请求的具体路径就变得非常重要,以便快速排查并解决潜在的问题,同时也能让我们更好地了解我们的应用。

由于 Serverless 应用通常由许多微服务组成,因此跟踪应用中的请求变得更加复杂。这时就需要使用分布式跟踪系统,以便在整个应用程序的不同执行层面跟踪和记录请求信息,以便更快地诊断问题和优化应用。

分布式跟踪

分布式跟踪是跨多个服务、进程和系统的请求的记录和跟踪。为了实现分布式跟踪,需要在所有服务中添加跟踪数据。跟踪数据在请求的不同服务中传递,以便我们可以看到每个服务如何响应该请求。通过分析所有这些跟踪信息,我们可以了解整个应用程序的性能及其瓶颈,并对其进行优化。

AWS X-Ray

AWS X-Ray 是 AWS 提供的一种分布式跟踪系统,可以让开发人员分析和 debug 生产应用程序中的分布式应用。AWS X-Ray 可以帮助我们了解应用程序的性能瓶颈,找出错误和异常,识别服务被调用的情况及其閾值等等。

实现步骤

使用 AWS X-Ray 来分析 Serverless 应用程序,您需要执行以下主要步骤:

  1. 在您的 AWS 应用程序中,在每个服务上安装 AWS X-Ray 代理。
  2. 让请求通过代理到达目标服务,并在此期间进行跟踪。
  3. 配置 AWS Lambda 函数来将跟踪数据发送到 AWS X-Ray。

示例代码

在亚马逊 Web 服务控制台上启动内置的示例应用程序。

在此示例中,通过对以下架构的远程访问来分析架构。

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

通过加载 http://localhost:3000/load 进行测试该 URL 可以执行示例应用程序的测试。

这将触发代码中的某些请求,共用以下目标:

  • 首先,应用程序使用 Application Load Balancer 将传入的请求路由到 Lambda 上。
  • 然后,Lambda 将请求转发到 DynamoDB,以检索数据。
  • 并且,Lambda 会将这些数据格式化,并通过 Application Load Balancer 将信息返回到浏览器。

在此示例中,我们通过 Node.js 运行 AWS Lambda 子系统,同时运行 AWS X-Ray 代理来记录跟踪。

您可以使用以下示例代码,在 AWS Lambda 中添加 AWS X-Ray 跟踪:

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

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

在服务器端应用代码中,您需要使用 AWS X-Ray SDK 来在 Lambda 函数中记录跟踪。

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

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


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

  -- ---

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

  -- ---

-

结论

当您用于处理带有许多微服务的 Serverless 应用程序时,跟踪不完整或分散的请求会变得很棘手。使用 AWS X-Ray 轻松地了解分布式应用程序的性能和问题。只需简单地遵循上文所述的步骤,就可以为您的 Serverless 应用程序添加分布式跟踪!

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