系统设计之----分布式跟踪系统
- 一、设计依据
- 二、设计思路
- 1、核心数据模型字段
- 2、参数透传说明
- 3、日志格式(举例子)
- 4、链路性能指标(处理时间)
- 三、先决条件
- 1、Web Servlet Filter 调用链开始
- 2、Dubbo作为RPC 调用链跟踪
- 3、DB调用跟踪
- 4、Cache调用跟踪
- 5、MQ调用跟踪
- 四、系统对接步骤
- 1、引入相关JAR包
- 2、定义logger
- 3、引入拦截调用链
- 五、遗留问题
- 1、异步传递
- 2、并发访问
- 3、其他
分布式跟踪系统设计
想知道系统哪个地方处理慢么?想优化系统,但不知哪块慢?每个调用耗时多少?xxx,还有N多疑问。好吧,我们先从最简单的跟踪做起。
一、设计依据
谷歌,DAPPER论文。中文翻译链接http://bigbully.github.io/Dapper-translation/ 下面是开头部分。
(当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。
Dapper--Google生产环境下的分布式跟踪系统,应运而生。那么我们就来介绍一个大规模集群的跟踪系统,它是如何满足一个低损耗、应用透明的、大范围部署这三个需求的。当然Dapper设计之初,参考了一些其他分布式系统的理念,尤其是Magpie和X-Trace,但是我们之所以能成功应用在生产环境上,还需要一些画龙点睛之笔,例如采样率的使用以及把代码植入限制在一小部分公共库的改造上。)
二、设计思路
系统是演进的。先满足最小化跟踪。先满足核心调用链跟踪。并只做一件事,如实记录发生时间。
1、核心数据模型字段
tracerNo:全栈跟踪唯一ID(UUID)
serialNo:当前节点跟踪序号(比如上述图的0.1.1等)
上述两个参数为透传系统参数,后续嵌入跟踪系统,需要设置此参数以便处理。
2、参数透传说明
透传需要传递最后一个节点的上述两个字段参数,保证后续serialNo的正确性,连续性。
3、日志格式(举例子)
alipay_tracer_log|ad7d8e36-f032-4e63-9eb7-b49ef39a2c29|0|WEB|ali_box|http://172.30.0.81:8080/TestRedis/session|1449621713215|1449621716120|
alipay_tracer_log|ad7d8e36-f032-4e63-9eb7-b49ef39a2c29|0.1|DUBBO_C|test-redis|null|1449621715234|1449621716119|
alipay_tracer_log|ad7d8e36-f032-4e63-9eb7-b49ef39a2c29|0.1|DUBBO_S|test_Tracer|null|1449650158205|1449650158206|
即按下述格式:alipay_tracer_log|tracerNo|serialNo|tracerType|name|url|startTime|endTime|params
解释如下:alipay_tracer_log|唯一跟踪ID|当前节点序号|跟踪类型|名称|URL|开始时间|结束时间|相关附带参数
其中alipay_tracer_log 为大数据平台标识头。params 为添加进去的附带参数。
4、链路性能指标(处理时间)
整条调用链跟踪下来,计算总耗时:
1、300毫秒以下正常
2、300—500毫秒(语句调优)
3、500—1000毫秒(模块重构)
4、1000—3000毫秒(系统重构)
5、3000毫秒以上(考虑重写)
三、先决条件
JAVA语言系统。后续扩展其他语言系统。
1、Web Servlet Filter 调用链开始
基础库已实现。
2、Dubbo作为RPC 调用链跟踪
基础库已实现。
3、DB调用跟踪
(主流两种ORM框架实现,Hibernate,Mybatis;其他暂未)
4、Cache调用跟踪
(待实现)
5、MQ调用跟踪
(待实现)
四、系统对接步骤
1、引入相关JAR包
a>大数据平台日志接入JAR包。详见(大数据平台日志接入指南)
1 2 3 4 5 6 7 8 9 10 |
|
b>基础库相关JAR包
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
其中,alipay-base-common 为必须依赖包,其他两个根据跟踪类型,选择性加入。
2、定义logger
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
3、引入拦截调用链
1、引入filter,web.xml文件中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
2、引入dubbo,filter;一般在application-dubbo-client.xml或是application-dubbo-server.xml;找到定义的地方即可。
1 2 3 4 |
|
3、引入ORM,Interceptor
a>Hibernate引入下述配置(一般在hibernate-config.xml)
1 2 3 4 5 6 7 8 |
|
b>Mybatis引入下述配置(一般在mybatis-config.xml)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
五、遗留问题
1、异步传递
异步请求转发调用跟踪;
2、并发访问
并发访问跟踪节点对象等;
3、其他
系统设计之----分布式跟踪系统相关推荐
- 大规模分布式跟踪系统的理论
概述 当代的互联网的服务,通常都是用复杂的.大规模分布式集群来实现的.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发.可能使用不同的编程语言来实现.有可能布在了几千台服务器 ...
- 分布式 集群 系统组件架构_分布式跟踪系统的四个组件如何一起工作
分布式 集群 系统组件架构 十年前,基本上只有认真思考分布式跟踪的人是学者和少数大型互联网公司. 如今,对于任何采用微服务的组织来说,它已经变成了赌注. 基本原理是公认的:微服务以令人惊讶且通常是惊人 ...
- 分布式跟踪系统(SpringCloudSluth+OpenZipkin)
当我们构建一个微服务体系结构,并且服务的数量不断增加时,我们面临着在整个系统中调试和跟踪请求的问题.当用户在请求中出现500错误时,会发生什么情况?是什么部门不正确地处理了他的请求?所有这些问题都可以 ...
- java天眼培训_Java天眼大型分布式跟踪系统 附带源码_IT教程网
资源名称:Java天眼大型分布式跟踪系统 附带源码 教程内容: APP: 接入skyeye-client的系统会通过kafkaAppender向kafka写入日志 es-indexer-group: ...
- 分布式跟踪系统 java_Java天眼大型分布式跟踪系统 附带源码
资源名称:Java天眼大型分布式跟踪系统 附带源码 教程内容: APP: 接入skyeye-client的系统会通过kafkaAppender向kafka写入日志 es-indexer-group: ...
- Dapper--Google生产环境下的分布式跟踪系统
Dapper--Google生产环境下的分布式跟踪系统 概述 当代的互联网的服务,通常都是用复杂的.大规模分布式集群来实现的.互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发 ...
- 分布式跟踪系统(一):Zipkin的背景和设计
原文链接: https://blog.csdn.net/manzhizhen/article/details/52811600 2010年谷歌发表了其内部使用的分布式跟踪系统Dapper的论文(htt ...
- Java分布式跟踪系统Zipkin(二):Brave源码分析-Tracer和Span
所有博文均在个人独立博客http://blog.mozhu.org首发,欢迎访问! Brave是Java版的Zipkin客户端,它将收集的跟踪信息,以Span的形式上报给Zipkin系统. (Zipk ...
- JAVA天眼大型分布式跟踪系统
目录 ├─源码SkyEye-master.zip ├─第1课-项目架构与技术点讲解.mp4 ├─第1课-项目架构与技术点讲解.pdf ├─第2课-日志实时采集.mp4 ├─第2课-日志实时采集.pdf ...
最新文章
- 院长齐聚,答疑解惑 | 清华-青岛数据科学研究院“院长接待日”成功举办
- 内部结构透视XRAY
- 报任安书文言现象_语文老师精心总结【文言文常考点】够你从初一用到初四!...
- 程序员常用编程工具: VS Code,那些你不得不知道的小知识!
- Centos6.5 安装Vim7.4
- 修改java bean,java – 以编程方式修改Spring bean
- vs2017安装nuget包生成和管理工具
- sublime text2配置文件详解(转)
- IPMI用户名密码忘记了怎么处理?
- cadence软件用于高分屏笔记本时候显示字体模糊问题解决
- 测绘资质-导航电子地图制作
- 如果你还没冒犯过别人,说明你可能还没做过一件重要的事
- 【EFS】NV65633-LTE搜网能力的NV值、格式、配置
- 免费的中英文翻译软件-自动批量中英文翻译软件推荐大全
- VMware共享文件夹设置
- 第一章 05 Rim 边缘光
- SDK 的下载及安装教程
- Unity开发4 资源、商店、地形的绘制
- Oracle删除链接用户
- 跟李沐学AI-AlexNet论文逐段精读【论文精读】
热门文章
- 三菱M80操作介绍_FANUC/三菱 常用参数对照表
- 在ROS中开始自主机器人仿真 - 1 让turtlebot跑起来
- Dubbo、Spring Cloud和kubernetes该如何选型?
- 技术面试与HR谈薪资技巧
- echarts结合poi-word导出的简单处理
- python语音唤醒_Python实战教程:为女朋友打造一款智能语音闹钟
- 阿里云弹性公网EIP收费价格表(按量/包年包月/配置费)
- 电脑无法识别USB设备(CH340驱动)的解决办法
- maya自动安装脚本
- 计算机内外存储器论文,计算机组成原理探讨论文(2)