(56)java Spring Cloud+Spring boot+mybatis企业快速开发架构之Spring C...
发布网友
发布时间:21小时前
我来回答
共1个回答
热心网友
时间:20小时前
Zipkin 是一个由 Twitter 开源的分布式跟踪系统,用于收集和查询服务间的调用链信息。通过集成 Zipkin,企业级应用可以直观地追踪服务调用关系和耗时。要部署 Zipkin,首先下载编译好的 jar 包,并使用 java–jar 命令启动服务。访问 localhost:9411/zipkin/ 可以查看管理页面。
在项目中集成 Zipkin 以发送调用链数据,需要在属性文件中配置 Zipkin 的地址,默认为 http://127.0.0.1:9411。启动服务后,通过访问接口,数据会自动发送到 Zipkin 的收集服务中。Zipkin 提供了丰富的 UI 界面,如图 1 到图 4,直观展示调用链信息,包括请求异常的快速发现(图 4)和异常请求的详细信息(图 5)。
当调用接口的次数与 Zipkin 中的数据条数不符时,可能是抽样采集功能在起作用,这是为了在高并发场景下减少数据量。默认情况下,每 10 次调用采集一次数据,这可通过配置调整。同时,Sleuth 支持异步任务,通过配置 @Async 注解开启异步任务,Sleuth 会为该调用创建一个新的 Span。若自定义线程池,需要使用 Sleuth 的 LazyTraceExecutor 包装,以确保 Span 的正确创建。
使用 TracingFilter 可以处理请求和响应,实现扩展需求,如添加自定义标记或将请求 ID 添加到响应头。通过响应头设置请求 ID,可以验证是否成功添加(图 7)。自定义标记功能有助于追踪特定用户的请求,如图 8 所示。此外,通过手动创建 Span,可以监控本地方法的执行时间,如图 9。
若要监控本地方法耗时,可采用埋点方式创建新的 Span。另一种简便方法是在方法上添加注解 @NewSpan(name = "saveLog2")。对于不需要跟踪的请求,可以通过配置 HttpSampler 来过滤,避免资源浪费。
为提高性能和确保数据不丢失,可使用 RabbitMq 代替 Http 发送调用链数据。在服务中添加 RabbitMq 的依赖,并配置连接信息。启动 Zipkin 服务时,需要指定 RabbitMq 的信息以接收数据。数据持久化是通过将收集的数据存储在 Elasticsearch 中实现的,Elasticsearch 在搜索性能方面有优势。启动 Zipkin 时指定存储类型为 ES,并配置 ES 的 URL。通过访问 Elasticsearch 的地址验证数据是否存储成功。
集成 Zipkin 进行服务跟踪,可以显著提升对服务间调用链的监控能力,增强问题定位效率。通过合理配置和选择合适的存储方式,可以进一步优化性能和数据持久性,为企业级应用提供强大的监控支持。