分布式应用全链路跟踪实现

APM —全链路追踪 全链路追踪目的 微服务背景下 1.故障快速定位 跨语言实现开发中在业务日志中添加调用链ID,可以通过调用链结合业务日志快速定位错误信息。 2.各个调用环节的性能分析 分析调用链的各个环节耗时,分析系统的性能瓶颈,找到系统的薄弱环节针对性优化 3.数据分析 分析用户的行为路径,经过了哪些服务器上的哪个服务加以应用。 4.调用拓扑图 Trace系统设计目标... 阅读详情

随着分布式和微服务架构的发展,应用系统和服务组件之间的调用关系愈发复杂。如何精确的展示和快速定位服务单元之间的调用关系,实时观测应用系统整体链路情况,对应用系统的监控运维提出了挑战。本文简要介绍分布式应用链路跟踪的实现方式、OpenTracing规范以及对比不同全链路开源组件的实现。


1、全链路跟踪介绍
1.1 全链路跟踪背景

随着分布式和微服务技术的发展演进,越来越多的系统从单体应用向分布式微服务架构转型。在微服务架构下应用服务被拆分为不同的服务模块,这些服务模块之间的调用关系也变得错综复杂,客户端的连接请求可能需要在多个不同的服务单元之间进行流转。此时如果某个服务单元或者模块出现异常,很难快速直观的去定位到异常点,以及对整个系统的影响范围和影响程度、爆炸半径等。如下图所示为典型的微服务架构:

在这里插入图片描述

为了分析和解决分布式架构下故障的快速定位分析、故障影响的精确判断、服务模块之间的依赖关系和调用关系以及整个应用系统调用链路的整体观测性,引入了全链路跟踪技术。全链路跟踪技术可以将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等等。全链路跟踪的主要有以下功能点:

  • 故障快速定位:通过调用链结合业务日志可以快速定位错误信息,迅速发现和解决问题。
  • 链路性能可视化:各个阶段的链路耗时、服务依赖关系可以通过可视化界面展现出来,帮助开发人员更好地了解系统的运行状态和性能情况。
  • 链路分析:通过分析链路耗时、服务依赖关系可以得到用户的行为路径,汇总分析应用在很多业务场景下。

下图是一个简单的微服务架构下的完整调用链路视图:

在这里插入图片描述

1.2 全链路跟踪实现原理

链路跟踪最早由Google提出,并发表了一篇论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》,介绍Google自研的分布式链路跟踪系统Dapper的实现原理和设计实现。随后出现了一众开源产品如Zipkin、Jaeger等,但是各个开源的分布式链路跟踪方案互不兼容,为了统一标准接口,诞生了OpenTracing。OpenTracing于2016年10月加入CNCF基金会,它是一个中立的(厂商无关、平台无关)分布式追踪的 API 规范,提供统一接口,可方便开发者在自己的服务中集成一种或多种分布式追踪的实现。

OpenTracing是一个分布式跟踪系统,它提供了一个平台无关、厂商无关的API,使得开发人员能够方便地添加(或更换)追踪系统的实现。在全链路跟踪中,OpenTracing通过在HTTP头中注入唯一标识符(trace ID)来实现追踪。这个唯一标识符可以关联所有的HTTP请求,从而形成一个完整的调用链。

1.2.1 Tracing定义

在应用系统中,Tracing指的是使用特定的日志记录程序的执行信息,与之相近的还有metrics和logging两个概念。

  • Tracing:指使用特定的日志记录程序的执行信息,记录单个请求的处理流程,包括服务调用和处理时长等信息,用于诊断和优化分布式系统。
  • Metrics:可聚合的数据,通常包括计数器(Counter)、量表(Gauge)和直方图(Histogram)等,用于度量和观察系统的行为。Metrics可以用来衡量一个系统的性能,例如请求的数量、响应的时间等。
  • Logging:用于记录离散的事件,包含程序执行到某一点或某一阶段的详细信息。Logging可以用来记录程序的行为,帮助开发人员调试和解决问题。

在这里插入图片描述

Tracing、Metrics和Logging这三种监控类型交集的情况比较常见:

  • Logging&Metrics:Metrics提供系统层面的统计数据,如系统总请求量、响应时间等;logging则提供系统的详细行为,比如统计某段时间SQL各类请求访问的总数等;
  • Metrics&Tracing:Metrics可以看做是宏观层面的tracing,tracing更关注微观层面某个请求的处理流程、处理时间等,比如单个请求中SQL执行时长、gpc调用次数等;
  • Tracing&Logging:Logging记录的是一些离散的事件、tracing则是记录的这些请求的处理过程,比如在请求过程中详细的处理记录日志等信息。

在分布式系统中,Tracing、Metrics和Logging作为三种不同类型的监控方式,侧重点不同,并且有不同的工具来实现:Tracing基于OpenTracing规范实现请求流程的链路分析、Metrics基于Prometheus实现应用系统指标的监控分析、Logging基于ELK或EFK实现日志数据的采集和分析。

1.2.2 OpenTracing规范

OpenTracing的出现主要是为了解决不同的分布式链路追踪平台的API兼容问题,通过提供与平台和厂商无关API的方式,使得开发人员能够很方便地切换追踪系统。在OpenTracing中有几个基本概念:

在这里插入图片描述

1)Span

Span是分布式跟踪的主要构建块,表示分布式系统中完成的单个工作单元。Span之间通过嵌套或者顺序排列建立逻辑因果关系。在OpenTracing中的一条Trace被认为是一个由多个Span组成的有向无环图(DAG)。每个Span根据OpenTracing规范封装了以下状态:

  • 一个操作名称
  • 开始时间戳和结束时间戳
  • Span Tag:一组键值对构成的Span标签集合,其中键必须为字符串类型,值可以是字符串、bool值或者数字;
  • Span Log:一组Span的日志集合;
  • SpanContext:Trace的全局上下文信息;
  • References:Span之间的引用关系;

在OpenTracing的一条Trace中,一个Span可以和多个Span之间存在因果关系,在OpenTracing中定义了ChildOf和FollowsFrom两种引用关系,如下所示:

  • ChildOf关系:一个Span可能是一个父级Span的孩子,即为ChildOf关系。比如在一个http请求中调用服务端产生的span和发起调用的客户端的span,就构成ChildOf关系。
  • FollowsFrom关系:在分布式系统中,一些上游系统不依赖于下游系统的执行结果,比如上游系统通过消息队列异步方式向下游系统发送消息,这样下游系统对应的子Span和上游系统对应的父Span之间就是FollowsFrom关系。
Causal relationships between Spans in a single Trace
        [Span A]  ←←←(the root span)
            |
     +------+------+
     |             |
 [Span B]      [Span C] ←←←(Span C is a `ChildOf` Span A)
     |             |
 [Span D]      +---+-------+
               |           |
           [Span E]    [Span F] >>> [Span G] >>> [Span H]
                                       ↑
                         (Span G `FollowsFrom` Span F)

2)Tags

每个Span可以有多个键值对形式的Tags,Tags是没有时间戳的,只是为Span添加一些简单解释和补充信息。

3)Logs

每个Span可以进行多次Logs操作,每一次Logs操作,都需要带一个时间戳,以及一个可选的附加信息。

4)SpanContext

SpanContext表示进程边界,在跨进调用时需要将一些全局信息,例如TraceId、当前SpanId等信息封装到Baggage中传递到另一个进程中。

备注:在OpenTracing官网上看到OpenTracing相关的技术已经迁移到OpenTelemetry上。OpenTelemetry是OpenTracing和OpenCensus两个项目的合并,是一个更加强大的监控解决方案。它可以收集所有类型的遥测数据,如日志、指标和调用链,并且是一个开箱即用的API、SDK和库的合集。其中一条trace如下所示:

{
  "name": "hello-greetings",
  "context": {
    "trace_id": "0x5b8aa5a2d2c872e8321cf37308d69df2",
    "span_id": "0x5fb397be34d26b51"
  },
  "parent_id": "0x051581bf3cb55c13",
  "start_time": "2022-04-29T18:52:58.114304Z",
  "end_time": "2022-04-29T22:52:58.114561Z",
  "attributes": {
    "http.route": "some_route2"
  },
  "events": [
    {
      "name": "hey there!",
      "timestamp": "2022-04-29T18:52:58.114561Z",
      "attributes": {
        "event_attributes": 1
      }
    },
    {
      "name": "bye now!",
      "timestamp": "2022-04-29T18:52:58.114585Z",
      "attributes": {
        "event_attributes": 1
      }
    }
  ]
}

其中包括span_id和parent_id、traceid、start_time和end_time、attributes和events等信息。

1.2.3 全链路Trace示例

回到1.1中微服务架构下的完整调用链路视图,在服务调用的时候加上spanid、traceid和parentid,其中traceid为链路请求全局唯一id。如下所示:

在这里插入图片描述

  • 节点Service1:SpanID=AAA1,ParentID=null,接收到客户端请求并发送请求到Service 2
  • 节点Service2:SpanID=BBB1,ParentID=AAA1,接收到Service 1的请求并发送请求到下一步
  • 节点缓存服务:SpanID=CCC1,ParentID=BBB1,接收到Service2的请求并返回结果
  • 节点Service3:SpanID=DDD1,ParentID=BBB1,接收到Service2的请求并发送请求到下一步
  • 节点Service4:SpanID=EEE1,ParentID=BBB1,接收到Service2的请求并发送请求到下一步
  • 节点数据库服务:SpanID=FFF1,ParentID=DDD1,接收到Service3的请求并返回结果;SpanID=GGG1,ParentID=EEE1,接收到Service4的请求并返回结果

通过ParentID找到父节点,并通过全局唯一的traceID实现链路跟踪。

1.3 全链路跟踪开源组件

自Google Dapper系统开放以来,出现很多分布式链路跟踪的产品,如Pinpoint、Zipkin、Skywalking、Jaeger等,接下去将简要介绍对比。

1)Pinpoint

Pinpoint是由一个韩国团队实现并开源,针对Java编写的大规模分布式系统设计,通过JavaAgent的机制做字节代码植入,实现加入traceid和获取性能数据的目的,对应用代码零侵入。

在这里插入图片描述

官方网站:https://github.com/pinpoint-apm/pinpoint

2)SkyWalking

SkyWalking是一款国产的开源框架,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计的分布式系统的应用程序性能监视工具,包括了分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。SkyWalking支持Java、.Net Core、PHP、NodeJS、Golang等多种语言探针,支持Envoy + Istio构建的Service Mesh。

SkyWalking的客户端通过HTTP或gRPC方式向SkyWalking收集器发送链路调用数据。SkyWalking收集器对接收到的链路信息进行分析和聚合,并存储到服务端数据库,支持的存储组件有ES、H2、MySQL、TiDB和Sharding Sphere等。SkyWalking UI则提供了链路调用信息的可视化和检索。以下为Skywalking架构图:

在这里插入图片描述

官方网站:http://skywalking.apache.org/

3)Zipkin

Zipkin是由Twitter开源,是分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。Zipkin基于Google的Dapper论文实现,主要完成数据的收集、存储、搜索与界面展示。Zipkin组件如下图所示,包括Collector、Storage、Search和Web UI:

  • Collector:Zipkin的一个常驻进程组件,主要负责提供对外部系统的接口,以收集、校验、存储以及索引追踪数据。
  • Storage:存储模块,真正服务于Zipkin收集到的追踪数据的存储。默认情况下,Zipkin将这些信息存储在内存中,也可以修改存储策略,通过使用其他存储组件将追踪信息存储到数据库或ElasticSearch中。
  • Zipkin Query Service(API):通过这个API组件提供外部访问接口,用于查找和检索链路调用信息。
  • Web UI:Zipkin查询链路追踪的界面,用户可以通过简洁直观的web UI来检索数据和查看调用链路。

在这里插入图片描述

官方网站:https://zipkin.io/

4)云原生链路监控组件Jaeger

Jaeger是CNCF云原生项目之一,由Uber开源的分布式追踪系统,兼容Open Tracing API。Jaeger主要用于微服务的监控和请求追踪,支持分布式上下文传播、请求报错分析、服务的调用网络分析以及性能/延迟优化。Jaeger在架构上支持分布式追踪和性能监控,包括多个组件和模块,以实现数据收集、存储、查询和可视化等功能。如下图所示:

  • jaeger-client:Client是应用程序的一部分,它负责在每个服务或应用中注入追踪代码。这个代码收集有关请求的元数据,例如开始时间、结束时间、服务名称等,并将其发送到Jaeger Agent。Client库有不同的版本,针对不同的编程语言,如Java、Python、Go等。
  • jaeger-agent:Agent是一个运行在每个服务实例中的代理程序,它负责接收并转发从Client发送来的追踪数据。Agent通过UDP将收集到的追踪信息批量发送给Collector。
  • jaeger-collector:Collector是Jaeger的核心组件之一,它负责接收从Agent发送来的追踪数据,并进行处理。这些数据首先会被验证和索引,然后被转换并存储在DB中。
  • DB:Jaeger中用于存储追踪数据的组件。Jaeger支持多种存储后端,例如Kafka、Elasticsearch和Cassandra。数据在DB中以trace ID为单位进行存储,每个trace ID下都会保存该请求的完整调用链路信息。
  • jaeger-query:用于检索链路调用信息,通过这个接口查询和展示存储在DB中的追踪数据。

在这里插入图片描述

官方网站:https://www.jaegertracing.io/

5)各种全链路跟踪方案对比

在这里插入图片描述

对比上述四种组件,Zipkin本身实现相对简单,指标的分析和展示需求需要二次开发工作;Jaeger是对Zipkin的优化,在WebUI和传输协议上进行了改进,但也无告警功能;Pinpoint不支持OpenTracing规范,并且不支持查询单个调用链,二次开发难度较高;SkyWalking功能较为齐全,探针性能损耗低,同时也支持多种语言的客户端,并且中文社区非常活跃。

接下去将重点介绍基于Skywalking的全链路跟踪实现。


参考资料:

  1. https://opentelemetry.io/docs/concepts/signals/traces/
  2. https://www.cnblogs.com/dalianpai/p/12853683.html
  3. https://blog.youkuaiyun.com/fegus/article/details/126498887
  4. https://blog.youkuaiyun.com/eight_eyes/article/details/117330608
  5. https://segmentfault.com/a/1190000040364737
自实现分布式链路追踪 方案&实践 排查问题是程序员的基本能力也是必须要会的,在开发环境,我们可以debug,但是一旦到了服务器上,就很难debug了,最有效的方式就是通过日志揪出bug,而一次请求的日志如果没有一个唯一的链路标识(我们下边称他为traceId),单靠程序员人工分析的话,费时费力,尤其是请求量高频的接口,更是雪上加霜,排查问题效率大打折扣,作为程序员,低效的方式是忍不了的!!!本文我将用一次实战演练,来演示常用框架/中间件/多服务 之间如何传递traceId。 阅读详情

相关推荐

可视化全链路日志追踪

传统的ELK方案是一种滞后的业务追踪,需要事后从大量离散的日志中搜集和筛选出需要的日志,并人工进行日志的串联分析,其过程必然耗时耗力。而分布式会话跟踪方案则是在调用执行的同时,实时地完成了链路的动态串联,但由于是会话级别且仅关注于调用关系等问题,导致其无法很好地应用于业务追踪。因此,无论是传统的ELK方案还是分布式会话跟踪方案,都难以满足日益复杂的业务追踪需求。

weixin_43576901的博客 1698

Skywalking全链路追踪使用说明

随着系统的复杂度也越来越高,我们软件架构也进入了分布式阶段,一次请求可能横跨多个服务模块、项目,依赖的中间件也越来越多,其中任何一个节点出现异常,都可能导致业务出现波动或者异常。而传统的日志监控等方式无法很好满足调用链路跟踪,排查问题等需求,这就导致定位/诊断服务异常变得异常复杂。因此面对复杂的调用链路,我们需要一款具体如下功能全链路追踪工具,提高我们对业务的掌控度: ①请求链路追踪,快速定位故障;②可视化链路各阶段的耗时,进行性能分析;③ 梳理服务依赖关系;④ 系统指标监控,吞吐量、响应时间及错误记录等

张维鹏的博客 3万+

全链路内容分享(一):什么是全链路监控?

在分布式微服务架构中,系统为了接收并处理一个前端用户请求,需要让多个微服务应用协同工作,其中的每一个微服务应用都可以用不同的编程语言构建,由不同的团队开发,并可以通过多个对等的应用实例实现水平扩展,甚至分布在横跨多个数据中心的数千台服务器上。单个用户请求会引发不同应用之间产生一串顺序性的调用关系,如果要对这些调用关系进行监控,了解每个应用如何调用,这就产生了全链路监控。

之乎者也·的博客 3573

【全链路追踪】全链路追踪介绍

实现日志跟踪的基本方案没有太大难度,重在实践中发现问题并一层一层解决问题的思路。

DreamSun的博客 2739

K8S如何基于Istio实现全链路HTTPS

基于Istio实现全链路HTTPS实操指南

CharlesYan的博客 1859

云原生分布式应用性能监控实践-天眼全流程调用链

一、概述 天眼是中国联通IT生产运营支撑平台,对生产运营领域提供端到端、云化架构全层级的运维工具支撑,融合人工智能与大数据技术,实现传统运维向自动化生产、智慧化运营的转变,保障4亿级用户规模系统稳定运行,支撑一体化生产运营体系落地,支持“平台+应用”模式,聚焦集约、赋能省分,助力中国联通IT运营全面数字化转型。 天眼全流程调用链(Skyeye Call Chain)是为解决云原生环境下应用运维问题,基于Google Dapper论文,开发的分布式应用性能监控系统,实现从SaaS到IaaS全层级根因定位,

weixin_40926179的博客 2806

基于Skywalking的全链路跟踪实现

本文重点介绍基于Skywalking的全链路实现,包括Skywalking的整体架构和基本概念原理、Skywalking环境部署、SpringBoot和Python集成Skywalking监控实现等

牧羊人的方向 2016

Pinpoint对Kubernetes关键业务模块进行全链路监控

在分布式微服务架构中,系统为了接收并处理一个前端用户请求,需要让多个微服务应用协同工作,其中 的每一个微服务应用都可以用不同的编程语言构建,由不同的团队开发,并可以通过多个对等的应用实例实现水平扩展,甚至分布在横跨多个数据中心的数千台服务器上。单个用户请求会引发不同应用之间产生 一串顺序性的调用关系,如果要对这些调用关系进行监控,了解每个应用如何调用,这就产生了全链路监控。全链路监控说的是对代码的监控,对代码调用的监控。

悦分享 286

分布式应用全链路压测:技术选型、落地实践与案例解析

本文系统介绍了全链路压测的核心概念、技术选型与落地实践。主要内容包括:1)全链路压测的定义与价值,强调其在分布式系统中的性能保障作用;2)主流压测工具对比与架构方案选型,推荐影子流量压测和全量模拟压测两种模式;3)详细落地步骤,涵盖环境搭建、数据预热、场景设计等关键环节,并以电商系统为例给出具体实施方案。文章为分布式系统性能优化提供了完整的方法论指导。

没事学AI的博客 1314

SpringCloudZipkin链路跟踪系统

Spring Cloud是一个非常流行的微服务框架,它提供了很多的组件可以帮助开发者快速构建分布式应用,包括配置中心、服务发现等。在实际生产环境中,由于各个服务之间的调用关系复杂,需要对服务之间的数据流进行监控,以便定位问题和优化系统性能。Spring Cloud Sleuth组件就是基于Apache Skywalking、Zipkin等开源项目实现了基于Spring Cloud的分布式链路跟踪功能。本文将会详细介绍一下Spring Cloud Zipkin链路跟踪系统。

AI天才研究院 1362

【SAM2系列】windows单GPU复现时的bug解决记录

windows运行sam2,就感觉在开一艘破破烂烂的船,每走一步报一个错,bug源源不断的冒出来😭😭😭😭😭。

weixin_43571113的博客 1317

企业级分布式应用服务主要作用

提供应用容器框架,可以对应用提供全生命周期的托管。服务治理分布式应用服务平台提供管理控制台对每个应用发布和订阅的服务进行管理,提供精细化的路由规则控制,通过接口级、方法级,甚至参数值域级的服务路由控制,引导服务请求流量;提供必备的服务治理能力,包括服务自动注册与发现、服务鉴权、限流降级、服务分组、服务权重、服务市场等一系列服务治理能力。企业级分布式应用服务是围绕应用和微服务的PaaS平台,为企业提供高可用与分布式的支撑平台,提供分布式服务框架、服务治理、统一配置管理、分布式链路追踪、高可用及数据化运营等。.

m0_60258751的博客 532

Zemax操作33--5倍激光扩束器

5倍扩束

lzy750750的博客 2929

全链路监控

什么是全链路监控 在分布式微服务架构中,系统为了接收并处理一个前端用户请求,需要让多个微服务应用协同工作,其中的每一个微服务应用都可以用不同的编程语言构建,由不同的团队开发,并可以通过多个对等的应用实例实现水平扩展,甚至分布在横跨多个数据中心的数千台服务器上,单个用户请求会引发不同应用之间产生一串顺序性的调用关系,如果要对这些调用关系进行监控,了解每个应用如何调用,这就产生了全链路监控 为什么要进行全链路监控? 在微服务架构中,服务会被拆分成多个模块,这些模块可能由不同的开发团队开发、维护,也

weixin_50801368的博客 839

数据标注的下一代SOP,可能不是Word,而是一段Prompt

再给几个反例:“这个只是正常纹理,不算。真正用于数据生产的Prompt,可能至少包含:任务定义、正例、反例、边界案例、优先级、输出格式、验收逻辑。一个项目100个人,如果100个人对这句话有100种理解,最后返工的就不是一个框,而可能是几十万帧数据。一个项目启动以后,项目经理先研究SOP,培训组长,组长再培训标注员,最后几百个人按照同一套规则干活。实际上一个成熟的项目经理,最重要的能力之一,就是:把客户的业务语言翻译成生产规则。真正让项目难交付的,从来不是80%的普通数据,而是那20%的长尾数据。

AI数据标注猿 293

【FPGA教程案例49】控制案例1——基于FPGA的PID控制器verilog实现

PID控制器产生于1915年,PID控制律的概念最早是由LYAPIMOV提出的,到目前为止,PID控制器以及改进的PID控制器在工业控制领域里最为常见。PID控制器(比例-积分-微分控制器),由比例单元 P、积分单元 I 和微分单元 D 组成。通过Kp,Ki和Kd三个参数的设定。PID控制器主要适用于基本线性和动态特性不随时间变化的系统。图1为PID控制器的基本结构框图。PID控制器以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。...

FPGA/MATLAB学习教程/源码/项目合作开发 4525

阿里云中间件团队首次解密企业级分布式应用服务EDAS

7月22日,阿里云正式对外发布了企业级互联网架构解决方案,该服务由EDAS应用框架、ONS消息队列、DRDS分布式数据库组成,能有效解决企业上云后网站过载、性能瓶颈、重复开发等问题。 云栖大会武汉站,阿里云中间件团队首次解密这一企业级互联网架构解决方案。 EDAS,企业级分布式应用服务 EDAS(企业级分布式应用服务,Enterprise Distrib...

weixin_34257076的博客 241

Dify 第 4 篇 Dify 示例:数据库执行Agent

本文介绍了如何在Dify平台创建一个能够执行SQL查询的数据库Agent。通过安装并配置"通义千问"和"数据库"两个插件,实现自然语言到SQL语句的转换和执行。关键步骤包括:1)安装插件并配置API Key;2)设置默认数据库连接(建议使用只读账号);3)准备测试数据表结构。该Agent支持通过工具调用查询表结构、转换自然语言为SQL、执行查询并返回结果,同时提供了CSV查询和HTTP API接口功能。文中还提供了MySQL测试数据表的创建脚本和示例数据。

甘蓝的专栏 1156

Mercury:唯品会全链路应用监控系统解决方案详解

姚捷,唯品会平台架构部高级架构师,加入唯品会前有超过 10 年的金融/保险互联网技术架构和团队管理经验,擅长以产品思维设计和构建系统。现专注于互联网基础架构,负责唯品会全链路监控/分析平台的开发,管理,推广和运维落地工作。对大数据体系,实时计算,微服务体系,消息系统有深入研究和实践。 我来自唯品会平台架构部,非常感谢高可用架构在上海组织了这么一场高逼格的活动。唯品会平台架构部是长期致力...

527

嵌入式工程师成长之路(0)----认识元件

在电子设计与维修中,认识元件是成功的关键!面对琳琅满目的电阻、电容、电感与二极管,样子形式千奇百怪,你是否也曾陷入困难? 本文基于行业权威分类标准,结合十年工程师实战经验,深度解析4大类、30+子类电子元件的核心特性、应用场景与避坑指南,助你从“小白”秒变“电子高手”!

云轩阁 11万+

Python教程:一文了解Python的深拷贝与浅拷贝

理解 Python 中的深拷贝(deep copy)和浅拷贝(shallow copy)是非常重要的,特别是在处理嵌套结构的数据时。让我们深入探讨这两个概念,并通过代码示例进行说明。

旦莫的博客 3967

cat全链路监控_CAT分布式监控系统(一):CAT功能介绍 CAT监控系统是什么、能做什么?...

CAT分布式监控系统(一):CAT监控系统功能介绍本文概要:1、CAT监控系统是什么。2、CAT监控系统能做什么,能监控些什么。下面有些截图是CAT 2.0版本的,但和3.0版本没什么区别的。一、简介 CAT(Central Application Tracking)是美团开源的基于Java开发的实时分布式应用监控平台,提供了全面的监控服务和业务决策支持。CAT监控系统的定位:cat本质上一个实时...

weixin_39603050的博客 1485

微信开发 - 最新第三方网站接入微信登录、微信支付时,本地 redirect_uri 参数错误导致无法调试的解决方案(微信开放平台)完美解决每次都需要部署到线上测试,在本地使用本地 ip 就能轻松调试

redirect_uri参数错误,微信第三方登录,没有服务器时的测试方法,微信开放平台的回调域名怎么设置为本地域名IP,微信登录微信支付每次调试都需要放到服务器上怎么办,微信登录支付业务在本地调试不了怎么办,在本地怎么测试微信支付和登录,微信第三方登陆本地测试,怎么在本地进行测试,微信回调域怎么设置为本地IP,微信扫码登录redirect_uri参数错误,微信开放平台,微信开放平台开发的第三方登录和支付,vue2,nuxt2,vue3,nuxt3,uniapp,微信开放平台,公众号,微信支付,微信登录授权,

🏆 前端领域优质创作者 8790

全链路跟踪之Pinpoint

一、前言 1.1、缘由 随着项目扩大和升级,系统架构也从最开始的单机模式进化到分布式架构,各个系统维护起来也比较费劲了,当遇到问题时无法快速定位问题点,这时迫切需要通过某些方法定位和跟踪系统,以及监控系统性能。 实现方法有很多,可以自定义开发相关框架,也可以使用第三方开源的框架。如果是完全自己开发,短期内还无法完成,所以考虑使用第三方框架。 1.2、调研 调研了市面上几个同类框架,有: ...

山之良者 7618

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【转载】PinPoint(开源APM)全链路监控环境搭建

PinPoint(开源APM)全链路监控 简介 Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具,用于基于java的大规模分布式系统,基于Google Dapper论文。 仿照 Google Dapper , Pinpoint 通过跟踪分布式应用之间的调用来提供解决方案, 以帮助分析系统的总体结构和内部模块之间如何相互联系。 如今的服务通常由很多不同模块组成,前端向后台发起一个查询请求,后台服务可能要调用多个服务,每个服

行走的数据智能 1192

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

全链路监控之pinpoint

一、pinpoint出现与其他相似概念比较 (1)、pinpoint概念 pinpoint是由java/PHP编写而成的,用来对大规模的分布式系统提供应用性能管理。pinpoint可以解决复杂架构下的拓扑解析与性能分析。 (2)、pinpoint的特点 分布式事务追踪,跟踪跨分布式应用的消息; 自动检测拓扑,帮助搞清楚应用架构; 水平扩展可以支持大规模服务器集群; 提供代码级别的可见性,轻松定位失败点和瓶颈; 使用字节码增强技术,添加新功能是无需修改代码...

Romanticn_chu的博客 8981

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 数据库系列之MySQL中Join语句优化问题
下一篇: 基于Skywalking的全链路跟踪实现
solihawk
博客等级 码龄17年 7995粉丝 184原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值