分布式跟踪系统调研
介绍
把分布式系统中各个组件的工作汇总起来,就可以得到一个全面的跟踪系统。
每个公司都会有一套自己的分布式跟踪系统。Google的Dapper,Twitter的zipkin,淘宝的鹰眼,新浪的Watchman,京东的Hydra,唯品会的Microscope,窝窝网的Tracing。
重要的基础设施。
应用场景
一次竞价请求中要经历哪些事情?广告位查不到会怎么样?cookie mapping查不到会怎么样?调用栈。
竞价的平均QPS是多少?最高QPS是多少?波动情况如何?监控QPS。
为什么这个请求很慢?是哪一个环节出了问题?监控latency。
数据库的请求量突然上涨了,如何排查来源是怎么样的?链路分析。
这个操作需要依赖哪些东西?是数据库还是消息队列?如果某个redis挂了,哪些业务会受影响?依赖分析。
架构
(~~stolen from~~)Inspired by 鹰眼
处理过程包括应用内部埋点,日志数据收集,在线和离线的数据分析,结果的存储和展示。
埋点
不能造成性能负担:一个价值未被验证,却会影响性能的东西,是很难在公司推广的!
因为要写log,业务QPS越高,性能影响越重。通过采样和异步log解决。
type Span struct { TraceID int64 Name string ID int64 ParentID int64 Annotation []Annotation Debug bool }
Span代表某个特定的方法调用,有一个名称和一个id。由一系列的标注组成。
type Annotation struct { Timestamp int64 Value string Host Endpoint Duration int32 }
Trace是关联到同一个请求的一系列的Span。
收集
每个机器上有一个deamon做日志收集。业务进程把自己的Trace发到daemon。
daemon把收集Trace往上一级发送。
多级的collector,类似pub/sub架构。可以负载均衡。
对聚合的数据进行实时分析和离线存储。
离线分析需要将同一条调用链的日志汇总在一起。
分析
调用链跟踪:把同一TraceID的Span收集起来,按时间排序就是timeline。把ParentID串起来就是调用栈。
抛异常或者超时,在日志里打印TraceID。利用TraceID查询调用链情况,定位问题。
依赖度量:
- 强依赖:调用失败会直接中断主流程
- 高度依赖:一次链路中调用某个依赖的几率高
- 频繁依赖:一次链路调用同一个依赖的次数多
离线分析按TraceID汇总,通过Span的ID和ParentID还原调用关系,分析链路形态。
实时分析对单条日志直接分析,不做汇总,重组。得到当前QPS,延迟。
存储
数据保留两个星期。
展示
必须能读才有价值。
技术选型
zipkin算是整套的解决方案,但是按照它的get start,装不上!
打算自己组装轮子。尽量采用Go语言的!
埋点肯定是自己做的。可以参考 这个 ,但是性能方面要注意下。
日志收集系统听说有flume/scribe等。知乎开源的kid看了一下,很小巧,redis的pub/sub协议很不错。heka的可扩展性比较好,实时分析应该可以直接做在里面。
展现如果有前端帮忙可以考虑ECharts或D3.js,不懂前端。graphite可以做数据展现。在osx下安装,依赖好麻烦!
初步决定:Heka + Influxdb + Grafana
展望
tracing和monitor的区别。
monitor可分为系统监控和应用监控。系统监控比如CPU,内存,网络,磁盘等等整体的系统负载的数据,细化可具体到各进程的相关数据。这 一类信息是直接可以从系统中得到的。应用监控需要应用提供支持,暴露了相应的数据。比如应用内部请求的QPS,请求处理的延时,请求处理的error数, 消息队列的队列长度,崩溃情况,进程垃圾回收信息等等。monitor主要目标是发现异常,及时报警。
tracing的基础和核心都是调用链。相关的metric大多都是围绕调用链分析得到的。tracing主要目标是系统分析。提前找到问题比出现问题后再去解决更好。
tracing和应用级的monitor技术栈上有很多共同点。都有数据的采集,分析,存储和展式。只是具体收集的数据维度不同,分析过程不一样。
tracing是一期的内容,本次调研用到的各组件都是有机会在其它地方使用的。这些轮子用熟之后,二期可以做更多监控方面的东西。
我们的目标是--让我们的基础设施更加完善和强大!
参考资料
- google的大规模分布式系统的跟踪系统 Dapper ,经典论文
- twitter的 zipkin ,开源,scala的,装不上
- 淘宝的 鹰眼 技术分享PPT,干货!
- 窝窝网介绍Tracing的一篇 博客
- 唯品会 Microscope
- 一个老外写的PPT
- 埋点要用到的轮子
- Kids 知乎开源的日志聚合系统
- 介绍heka的一个PPT
- graphite,Scalable Realtime Graphing
- InfluxDB 是一个开源分布式时序、事件和指标数据库
http://www.open-open.com/lib/view/open1422236665926.html
相关推荐
#### 三、分布式调用跟踪系统设计 ##### 1. 设计目标 - **低侵入性**:尽量不影响业务系统的正常运行,减少开发人员的工作负担。 - **低损耗**:服务调用埋点不会显著降低系统的性能,通常会通过配置采样率等方式...
经过文献调研发现,目前尚无研究成果能够解决高阶异构集群系统在领导者存在已知或未知控制输入、领导者和跟随者均存在未知扰动、有向通信拓扑存在切换等多种因素并存的情况下的输出时变编队跟踪控制问题。...
光伏阵列模拟器通过最大功率点跟踪器(MPPT)来模拟跟随最强光照强度的电力系统装置,以提高光伏发电效率。 5. 风力发电系统的构成:异步风力发电系统通常由风机、传动装置、浆距控制系统和鼠笼式异步发电机等组件...
服务发现系统是现代分布式系统中的关键组件,尤其是在微服务架构中。微服务架构提倡将大型单体应用拆分成一组小型、独立的服务,每个服务都负责特定的业务功能。这种架构模式带来了许多优势,如增强可扩展性、独立...
版本管理系统是软件开发中不可或缺的一部分,它们用于跟踪和管理代码的变更历史,支持团队协作,并确保代码的安全性。以下是对几种常见的版本管理系统的研究: 1. **Visual SourceSafe (VSS)**:VSS是微软推出的一...
市场定位不明确主要表现在:分布式光伏发电企业尚未进行充分的市场调研和统计分析,未能深入理解消费者的不对称信息和落后意识,仍采用传统的营销模式。这导致了市场开拓难题和发展难题,以及营销策略的形式化问题。...
以下是对调研中提到的几种常见版本管理系统的详细介绍: 1. **Visual SourceSafe (VSS)**:由微软公司开发,以Windows界面为主,适合小型团队使用。VSS提供了文件版本追踪、共享、分支和合并功能,但缺乏对异地团队...
- **版本控制**:Git,一个分布式版本控制系统,用于跟踪代码变更历史并协同开发。 #### 三、系统功能需求分析 为了满足用户的需求,研究生调研管理系统应具备以下核心功能: 1. **用户管理**:包括用户注册、...
9. **Sieve** - Sieve是端到端跟踪数据的采样技术,通过注意力机制优化分布式微服务系统的监控。RRCF(Randomized Response Forest)是其背后的技术,用于识别性能瓶颈。 10. **SuanMing** - 这是一个可解释的...
在这个研究生调研管理系统中,可能包含了用户登录注册、调研项目管理、调研进度跟踪、报告上传等功能,这些都可以通过Spring Boot的Controller层实现。 数据库方面,Spring Boot与各种主流数据库如MySQL、Oracle等...
1. **消息中间件**:如IBM的MQSeries,用于在分布式系统中可靠地传递消息,实现异步通信。 2. **交易中间件**:如Tuxedo,支持分布式事务处理,保证数据的一致性和完整性。 3. **集成中间件**:如Oracle Fusion ...
经过调研和分析后,选择合适的系统架构和技术栈,例如采用分布式系统设计,利用云计算资源,以应对高并发访问和大数据处理。 五、功能分析 1. 初步调查:对现有系统进行分析,识别存在的问题和改进空间。 2. 各部...
1. 技术能力:随着云计算技术的多样化,运维人员需掌握包括但不限于虚拟化技术、分布式系统、容器技术、网络配置、存储管理等核心技能。 2. 综合能力:具备良好的问题解决能力、项目管理能力、沟通协调能力和团队...
3. **数据库设计**:数据库设计包括系统调研、需求分析、概念设计、逻辑设计、物理设计等阶段。在需求分析阶段,我们需要明确系统的目标,比如系统应支持哪些预定操作,用户如何查询航班,以及系统如何处理并发预订...
同时,物流跟踪系统也需要整合,以提供实时的订单状态更新。 在实验教程案例中,你可能会接触到实际的项目案例,如模拟一个小型电商平台的搭建,这将帮助你实践上述理论知识。通过模拟操作,你可以学习如何运用工具...
系统支持值班人员管理、事件接报、综合查询、数据可视化、音视频融合、资源需求分析、一键调度、任务跟踪和反馈等。通过这些功能,系统能够实现对应急资源的全面监控、快速调度和有效管理,提升应急处置的效率和效果...
1. 模具管理系统:模具管理系统的目的是对模具进行有效跟踪和控制,包括实物和文档管理。询问当前是否有数据标签(如模具型号、名称、吨位)以及公司是否使用PDM(产品数据管理)、CAPP(计算机辅助工艺规程)、GT...
【调研报告 - 分布式word文档版本管理】 项目背景: 在现代办公环境中,Microsoft Office等文档编辑软件广泛使用,但相应的文档管理工具却相对匮乏。这导致用户在处理多版本文档时面临诸多不便,比如频繁地另存为新...
- **降低成本**:分布式账本减少了中间环节,简化了数据传输和验证的过程,降低了调研成本。 - **数据共享**:基于区块链的调研平台可以实现数据共享,避免了重复收集,进一步降低了成本。 **4. 参与者激励与参与度...