文档章节

分布式链路跟踪系统概设

土豆_BIG
 土豆_BIG
发布于 2017/09/12 09:47
字数 538
阅读 189
收藏 4

码上生花,ECharts 作品展示赛正式启动!>>>

架构示意图

架构组件选型

logstash->kafka->consumer->hbase

  • 通过AGENT生成调用链trace日志。 
  • 通过logstash采集日志到kafka。 
  • kafka负责提供数据给下游消费。 
  • 消费端解析trace信息,traceID作为rowkey,将信息插入hbase。 

实现思路

  • Trace头部定义
    • Trace-Id(每次请求的唯一标识,在请求的链路中传递)
    • Rpc-Id(调用链内部的唯一ID,还原调用顺序和调用间的嵌套关系,需要考虑的调用关系包括同步、并发、异步、一对多。)
    • Trace-Status(链路请求状态,整个链路传递,解决没被采样的异常跟踪丢失)
    • Trace-Sampled(调用链采样,因为QPS越高,需要生成的调用日志也就越高。因此,为了降低整体的输出数据量。默认全采集)
  • TraceId组成
    • 毫秒时间(时间戳,13)
    • 顺序数(4)
    • IPv4(8)
    • 进程ID(4)
  • RpcId组成
    • 默认顶级为0
    • 所有RpcId,包含所有父级RpcId(0.1.1他的父级为0.1,0.1的父级为0)
  • 系统整合
    • 针对Http
      • 利用Servlet的FIlter
      • 接收请求时,从header中获取Trace-Id、Rpc-Id、Trace-Sampled,没有则创建Trace对象,并放入ThreadLocal中。
      • 响应时,在header中设置Trace-Status,用来标识本次链路状态,解决没被采样的异常跟踪丢失
    • 针对Dubbo
      • 利用Dubbo的Filter机制
      • 客户端发起请求时,创建新的Trace,将Trace-Id、Rpc-Id、Trace-Sampled放入invocation的attachments中,执行调用,响应后打印日志
      • 服务端接收请求时,从invocation的attachments中获取Trace-Id、Rpc-Id、Trace-Sampled,执行调用,响应后打印日志
  • 数据存储HBase
    • rowkey
      • traceId+endpoint(服务端、客户端)+rpcId
    • value
      • traceType(类型:http、dubbo、redis、MQ等)
      • traceName(具体访问的url、访问的接口方法)
      • appName(应用名称)
      • localIp(本机IP)
      • remoteIp(发起远程调用服务的IP)
      • status(trace的状态)
      • size(请求大小)
      • time(耗时)
      • message(信息:默认响应状态)
    • 检索
      • 使用RowPrefixFilter根据rowkey前缀匹配所有记录

© 著作权归作者所有

土豆_BIG
粉丝 0
博文 5
码字总数 7234
作品 0
朝阳
私信 提问
加载中
请先登录后再评论。
微服务—分布式服务追踪sleuth和zipkin

随着业务的发展,系统规模也会越来越大,各微服务间的调用关系也越来越错综复杂。 通常一个客户端发起的请求在后端系统中会经过多个不同的微服务调用来协同产生最后的请求结果, 在复杂的微服...

osc_k5ta3dng
2018/05/16
10
0
分布式链路追踪中间件 - SOFATracer

SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,服务治理等...

匿名
2018/05/31
3K
3
SOFATracer 发布 3.0.5 版本 | 蚂蚁金服开源分布式系统调用跟踪组件

1、发布 SOFATracer 3.0.5 版本,主要变更如下: i. 兼容 openfeign 9.x 版本 2、SOFATracer 简介 SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 将调用链路中的各种网络调用情...

SOFAStack
2019/05/29
1.5K
8
Spring Cloud第九篇 | 分布式服务跟踪Sleuth

本文是Spring Cloud专栏的第九篇文章,了解前八篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 Spring Cloud第二篇 | 使用并认识Eureka注册中...

osc_1njk964l
04/16
27
0
SOFATracer 2.4.1 发布,分布式系统调用跟踪组件

1、发布 SOFATracer 2.4.1 版本,主要变更如下: 支持自定义埋点 (FlexibleTracer) 支持 Dubbo 2.6.x 日志输出支持非 json 格式(xstringbuilder) Bug fixes Fix BasePreparedStatement init...

SOFAStack
2019/09/09
905
2

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 打死这个下蛋的鸡算了

首页乱弹入口,感谢巴蜀。 【正文】 @莫默磨墨先生 :千万不要想着摆地摊,老老实实写代码去! 别问为什么, 问就是你不合适! 干脆直接卖烤串得了…… 所以现在喊着你摆地摊的, 一定是隔壁...

小小编辑
今天
29
1
Synchronized底层实现

https://blog.csdn.net/qq_35190492/article/details/106180781

JaneRoad
今天
18
0
解决okhttp无法重用连接的问题

解决okhttp无法重用连接的问题 最近在一个程序中使用okhttp调用http接口。开始时一切正常,但是测试运行一段时间后,okhttp就会报告recv失败。同时在调用端机器上,netstat显示很多套接字是T...

tommwq
今天
17
0
入坑Linux-day15(使用DHCP动态管理主机地址)

一、动态主机配置协议(DHCP) #DHCP是一种基于UDP协议且仅限于在局域网内部使用的网路协议,主要用于大型的局域网环境或者存在较多移动办公设备的局域网环境中,其主要用途是为局域网内部的...

宁生写你
今天
8
0
js canvas 旋转90度的整数倍

为了避免出现黑框 效果如下 根据不同的方向,设置宽高和画笔位置等 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"/> <title>Title</title> <style> .img ......

阿豪boy
今天
22
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部