当前位置: 首页 > 科技观察

分布式追踪在微服务架构中的应用

时间:2023-03-13 13:22:44 科技观察

【.com快译】微服务架构中的分布式追踪是一个新兴的概念,将在基于互联网的商业组织中得到更广泛的应用。微服务架构引入了一种全新的方式来扩展具有多个独立服务的应用程序。与单体架构相比,它确实有助于提高弹性、可扩展性、生产力和效率。然而,这会带来一些自身的复杂性,例如难以追踪错误或监控跨基础设施的流量。因此,为了消除这些复杂性,许多组织采用分布式跟踪方法。这种方法有助于解决高级调试问题并提高网络可见性。它还通过缩小当前遇到的错误(例如端到端延迟、特定服务或功能)来支持开发人员。本文旨在介绍分布式跟踪方法及其对微服务架构的影响。分布式跟踪解释可观察性正在细粒度级别监视基础设施的行为。这有助于最大限度地提高基础架构内的可见性,并支持事件管理团队维护微服务架构的可靠性。可观察性是通过以各种形式(工具)记录系统数据来实现的,例如指标、警报(事件)、日志和跟踪。这些功能可让您深入了解基础设施的内部健康状况。下面分析一下追踪的重要性以及它是如何演变为分布式追踪的。1.TraceTrace是对应用程序流和数据进程的持续监控,通常表示用户在应用程序堆栈中的旅程轨迹。这些使得整个系统的行为和状态更加明显和易于理解。分布式请求跟踪是一种具有可观察性的进化方法,有助于保持云计算应用程序的健康。分布式跟踪是通过微服务架构跟踪事务请求并记录所有相关数据的过程。它以跨行业的结构化格式用于检查和视觉跟踪。这种数据跟踪方法有助于SRE/DevOps团队快速了解和检查导致基础架构异常的技术故障。这可以使用诸如OpenTelemetry(跨云原生应用程序可观察性的标准化框架)之类的工具来完成,它被认为是一种供应商中立的跟踪方法。2.为什么需要分布式追踪?2018年进行的一项研究表明,63%的传统组织正在将其设施转变为微服务架构。由于从单体架构到微服务架构的重大转变,高度分布式系统中对数据跟踪的需求变得更加明显。这种分布式跟踪极大地减少了具有细粒度可观察性功能的监控系统中的常见挑战。以一个在全球拥有数百万用户的互动社交游戏平台为例。当这些用户将某些偏好数据输入平台时,平台必须快速处理数据并提供适当的结果。在这里,分布式跟踪在捕获每个用户的请求方面起着至关重要的作用,各种微服务处理这些请求并在很短的时间内交付预期的结果。了解分布式追踪如何帮助这个社交游戏平台基础设施处理以下一些问题。其中一些功能包括:提供跨基础架构的端到端可见性。在上面提到的游戏平台中,分布式追踪会追踪用户位置和用户数据,并存储在系统中。它遵循用户请求并记录与他们相关的所有必要数据。通过此功能,该平台将在其架构内实现端到端的可见性。提供有关服务依赖性的信息。微服务环境中的每项服务在满足用户请求时将相互依赖。在这里,当玩家更新他们的状态时,它将通过访问中央服务器和架构中的各种其他基于位置的节点来与其他玩家进行通信,以实现这一点。因此,每个服务请求都提供有关其他相关服务的信息。确保系统发生故障时的弹性。考虑一个游戏平台中的应用内购买功能,该功能因无效的用户凭据而失败。通过分布式跟踪,开发人员可以轻松识别支付门户的API流程痕迹以纠正问题,而无需搜索各种日志。通过使用必要的网络数据记录每笔交易来节省大量时间。3.分布式追踪是如何工作的?在查看用户请求期间如何执行分布式跟踪之前,让我们了解一些基本术语。请求:该术语表示各种云计算应用程序、微服务和其他功能如何相互通信。Span:Span会根据一定的时间间隔和相应的元数据告诉服务做什么。这些是跟踪的基本构建块。Trace:这意味着由单个或多个跨度组成的端到端用户请求。标签:这些是与每个跨度相关联的信息(元数据)(沿路径记录),提供跨度期间执行的操作的详细概述。而跟踪由一系列具有关联标签的跨度组成。下面讨论分布式跟踪如何处理请求。(1)当最终用户开始与系统和应用程序交互时,分布式跟踪过程就开始了。例如,如果新用户注册一个互动手游平台,他需要输入一个邮箱ID并设置一个密码。(2)现在,每个用户请求都被转换成一个HTTP请求,并分配一个唯一的跟踪ID(全局ID)。在这里,将获取用户数据并为其分配一个唯一ID。(3)当请求通过主机系统时,每个系统操作被认为是一个跨度,子操作被认为是一个子跨度。跟踪的第一个跨度也称为根跨度。在此示例中,电子邮件ID将是根跨度,密码将是子跨度。(4)每个用户操作都标有三个ID:requesttrackingID、rootspanID、subspanID。(5)来自最终用户的每个唯一请求(跨度)都使用有关处理请求的所有信息(标签)进行编码。这些数据包括:处理用户请求的微服务的名称和地址。执行请求时与流程相关的事件和日志的场景。查询和过滤请求标签,通过会话ID、数据库主机、HTTP方法和各种其他关键标识符指示请求。当系统在处理请求时遇到故障时有关错误消息和堆栈跟踪的信息。所有这些处理过的数据现在都将附加一个全局ID,其中包含有关跟踪从源到目的地的路径的相关信息。最后,在用户请求的行程中跟踪的所有信息都存储在相应的数据存储设备中。在这个游戏平台中,数据会存储在后台服务器的数据库层,以供日后查阅。4.分布式跟踪工具的类型此外,还有跨体系结构进行分布式跟踪的工具,可分为以下三个子类:(1)代码跟踪工具:在计算机程序(代码)执行过程中进行跟踪。这些工具有助于跟踪每一行代码、声明的变量、使用的条件语句、迭代的函数,并最终交付预期的代码输出。这些对于代码分析和诊断目的有很大帮助。代码跟踪工具的一些示例包括OpenTracing、OpenZipkin和Appdash。(2)数据跟踪工具:在使用源系统验证关键数据元素(CDE)或遥测数据期间执行跟踪,并使用统计过程控制(SPC)方法对其进行监控。数据跟踪工具的一些示例包括Datadog、Jaeger、NewRelic、Dynatrace和Lightstep。(3)程序(进程)跟踪工具:在应用程序执行过程中建立跟踪操作。包含已执行指令的索引和执行期间引用的数据的跟踪。这些被开发人员大量用于调试目的。这些工具的一些示例包括Strace、Ltrace、Opensnoop和ValgrindLackey。如何开始对我的基础架构进行分布式跟踪?下面列出了一些有用的链接,可帮助您开始在微服务架构中进行分布式跟踪。要在您的架构中实施分布式跟踪,请按照相关步骤OpenTelemetry(OpenTracing+OpenCensus)进行操作。让Jaeger在Docker上本地运行的组织可以遵循Jaeger文档中提到的步骤。如果使用Java或Docker配置基础设施,请按照相关步骤将OpenZipkin应用到基础设施中。要为微服务架构应用分布式跟踪模式,请参阅分布式跟踪模式。跨基于微服务的Web应用程序实施分布式跟踪,例如IBMGarage方法。要沿网络路径跟踪系统请求并了解系统未按预期工作的原因,您需要了解分布式跟踪指南。要使用分布式跟踪了解微服务架构及其行为,您需要了解使用分布式跟踪的微服务。因此,通过实施或实践上述策略,可以跨任何微服务架构实施分布式跟踪系统。随着越来越多地采用分布式跟踪,随之而来的挑战也随之而来。为了保持可靠性,应在保持最佳实践的同时实施这些功能。在微服务架构中采用分布式跟踪的最佳实践:实施端到端检测并记录所有入站和出站服务调用的跟踪。关注SRE信号,如延迟、流量、错误和饱和(利用率)和RED(响应、错误和持续时间)指标,以在记录所有系统跟踪时设置警报,以及持续时间指标以研究系统行为。始终遵循OpenTelemetry(OpenTracing+OpenCensus)标准化,确保使用的工具符合全球标准。记录所有定制的业务指标和跟踪范围以备将来参考。结论分布式跟踪是监控微服务架构的有效技术。它提供有关网络路径的更精确的数据和信息。通过采用标准化的分布式跟踪工具和SRE信号指标的端到端检测,可以克服实施挑战。原标题:UsingDistributedTracinginMicroservicesArchitecture,作者:BijuChacko,MerlynShelley