文档章节

分布式链路跟踪系统概设

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

架构示意图

架构组件选型

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
朝阳
私信 提问
分布式链路追踪中间件 - SOFATracer

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

匿名
2018/05/31
0
0
各大厂分布式链路跟踪系统架构对比

随着互联网架构的扩张,分布式系统变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用,这些组件共同构成了繁杂的分布...

james8888
2018/04/19
0
0
告别日志查询 | 阿里云发布链路追踪服务Tracing Analysis

近日,在杭州云栖大会上,阿里云发布了链路追踪服务Tracing Analysis,成本是自建链路追踪系统的1/5或更少,可为分布式应用的开发者提供完整的调用链路还原、调用请求量统计、链路拓扑、应用...

中间件小哥
2018/09/25
0
0
几种分布式调用链监控组件的实践与比较(一)实践

引言:最近在调研与选型分布式调用链监控组件。选了主要的三种APM组件进行了实践与比较。本来打算一篇文章写完的,篇幅太长,打算分两篇。本文主要讲下链路traceing的基本概念和几种APM组件的...

aoho
2017/11/10
0
0
分布式调用跟踪系统架构设计与实践

0、前言 随着美团点评的业务发展,公司的分布式系统变得越来越复杂,我们亟需一个工具能够梳理内部服务之间的关系,感知上下游服务的形态。比如一次请求的流量从哪个服务而来、最终落到了哪个...

大数据之路
2015/01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Cookie 显示用户上次访问的时间

import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.serv......

gwl_
今天
1
0
网络编程

第14天 网络编程 今日内容介绍  网络通信协议  UDP通信  TCP通信 今日学习目标  能够辨别UDP和TCP协议特点  能够说出UDP协议下两个常用类名称  能够说出TCP协议下两个常用类名称...

stars永恒
今天
1
0
二进制相关

二进制 众所周知计算机使用的是二进制,数字的二进制是如何表示的呢? 实际就是逢二进一。比如 2 用二进制就是 10。那么根据此可以推算出 5的二进制等于 10*10+1 即为 101。 在计算机中,负数以...

NotFound403
昨天
3
0
day22:

1、写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务: 1)使用格式:getinterface.sh [-i interface | -I ip] 2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项...

芬野de博客
昨天
2
0
Spring Cloud Alibaba基础教程:使用Nacos实现服务注册与发现

自Spring Cloud Alibaba发布第一个Release以来,就备受国内开发者的高度关注。虽然Spring Cloud Alibaba还没能纳入Spring Cloud的主版本管理中,但是凭借阿里中间件团队的背景,还是得到不少...

程序猿DD
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部