在 Serverless 应用的架构中,应用中的每个部分都可以由不同的服务来提供,这些服务可以跨越不同的服务提供者和不同的部署单元。如此,跟踪请求的具体路径就变得非常重要,以便快速排查并解决潜在的问题,同时也能让我们更好地了解我们的应用。
由于 Serverless 应用通常由许多微服务组成,因此跟踪应用中的请求变得更加复杂。这时就需要使用分布式跟踪系统,以便在整个应用程序的不同执行层面跟踪和记录请求信息,以便更快地诊断问题和优化应用。
分布式跟踪
分布式跟踪是跨多个服务、进程和系统的请求的记录和跟踪。为了实现分布式跟踪,需要在所有服务中添加跟踪数据。跟踪数据在请求的不同服务中传递,以便我们可以看到每个服务如何响应该请求。通过分析所有这些跟踪信息,我们可以了解整个应用程序的性能及其瓶颈,并对其进行优化。
AWS X-Ray
AWS X-Ray 是 AWS 提供的一种分布式跟踪系统,可以让开发人员分析和 debug 生产应用程序中的分布式应用。AWS X-Ray 可以帮助我们了解应用程序的性能瓶颈,找出错误和异常,识别服务被调用的情况及其閾值等等。
实现步骤
使用 AWS X-Ray 来分析 Serverless 应用程序,您需要执行以下主要步骤:
- 在您的 AWS 应用程序中,在每个服务上安装 AWS X-Ray 代理。
- 让请求通过代理到达目标服务,并在此期间进行跟踪。
- 配置 AWS Lambda 函数来将跟踪数据发送到 AWS X-Ray。
示例代码
在亚马逊 Web 服务控制台上启动内置的示例应用程序。
在此示例中,通过对以下架构的远程访问来分析架构。
[web browser] -> [AWS Application Load Balancer] -> [AWS Lambda] -> [AWS DynamoDB]
通过加载 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