竹笋

首页 » 问答 » 灌水 » Springboot整合OpenT
TUhjnbcbe - 2025/3/4 17:47:00
石家庄治白癜风最好的医院 https://news.sina.cn/gn/2017-04-26/detail-ifyetxec6600750.d.html

1分布式追踪系统

随着大量公司把单体应用重构为微服务,对于运维人员的责任就更加重大了。架构更复杂、应用更多,要从中快速诊断出问题、找到性能瓶颈,并不是一件容易的事。因此,也随着诞生了一系列面向DevOps的诊断与分析系统,主要是以下三个系统:

集中式日志系统(Logging)集中式度量系统(Metrics)分布式追踪系统(Tracing)三者相互交织重叠如下:

技术栈上的成熟框架有,

Logging:Log4j、ELK等,

Metrics:Prometheus、InfluxDB、Grafana等

Tracing:Jaeger和Zipkin等。

分布式追踪系统在Google发表一篇文章Dapper,aLarge-ScaleDistributedSystemsTracingInfrastructure后快速发展。Tracing系统一般核心步骤有三个:代码埋点、数据存储、查询展示。

历史洪流滚滚向前,大浪淘沙,现在比较流行的有Jaeger和Zipkin。

2OpenTracing

由于Tracing的技术发展迅速,为了解决兼容性问题,有了OpenTracing规范。它是一个轻量级的标准化层,连接应用、类库和追踪系统。

OpenTracing的优势:

(1)OpenTracing已经进入CNCF(云原生计算基金会,口号是坚持和整合开源技术来编排容器作为微服务架构的一部分),正在为全球的分布式追踪,提供统一的概念和数据标准。

(2)OpenTracing通过提供平台无关、厂商无关的API,使得开发人员能够方便添加和更换追踪系统的实现。

2.1相关概念

Trace:贯穿一个分布式系统的事务追踪描述,其实就是由许多个Span组成的有向无环图。

Span:被命名的与记录时间的调用操作,如一个HttpGET请求;Span有嵌套关系,如果一个请求会调用其它服务,就会生成子Span。

Tag:一组由键值对构成的标签集合,键值类型必须为字符串。它可以带上许多有用信息,如请求方法、请求URL、返回状态码等。

Log:一组Span的日志集合。

2.2OpenTracing的实现

Jaeger是Uber推出的一款开源分布式追踪系统,兼容OpenTracingAPI。架构如下:

Zipkin是由Twitter推出的开源的分布式追踪系统,架构图如下:

3实战整合

本文以Springboot为Web项目,分别整合Jaeger和Zipkin。

3.1Springboot项目准备

项目中的Controller,提供了两个Endpoint,tracing和open;在访问open时,代码会调用tracing。

为了能够方便看出调用时长信息,特别在代码中增加了延时Thread.sleep()。

配置Web应用的端口和服务名字:

server.port=80spring.application.name=opentracing-demo

3.2整合Jaeger

3.2.1Springboot整合

引用依赖:

配置连接属性:

3.2.2Docker运行Jaeger

为了方便,使用docker来运行Jaeger:

以上端口的信息如下:

3.2.3运行与访问UI

启动Web应用和Jaeger后,访问服务:

localhost/openlocalhost/tracing

访问JaegerUI界面localhost:/,设置好查询条件后点击FindTraces,就能查看到Trace信息了,具体如下:

选择一条Trace点进去后,可以看到详细信息,非常有利于我们分析,具体如下:

3.3Zipkin

3.3.1Springboot整合

引用相关依赖:

配置相关连接信息:

opentracing.zipkin.enabled=trueopentracing.zipkin.

1
查看完整版本: Springboot整合OpenT