分布式系统的监控基础架构Dapper

news2024/11/26 17:21:37

文章目录

  • 基本设计目标
    • 监控系统设计基本要求
    • 三个基本设计目标
  • Dapper监控系统简介
    • 三个基本概念
    • 区间Helper.Call的详细信息
    • 监控信息的汇总
    • 监控数据汇总单独进行的原因
  • 关键性技术
    • 轻量级核心功能库
    • 二次抽样技术
  • 常用Dapper工具
    • Dapper存储API

基本设计目标

监控系统设计基本要求

  1. 广泛可部署性(Ubiquitous Deployment):设计出的监控系统应当能够对尽可能多的Google服务进行监控
  2. 不间断的监控:Google的服务是全天候的,如果不能对Google 的后台同样进行全天候的监控很可能会错过某些无法再现的关键性故障

三个基本设计目标

  • 低开销:监控系统的开销越低,对于原系统的影响就越小
  • 对应用层透明:监控系统对程序员应当是不可见的。如果监控系统的使用需要程序开发人员对其底层的一些细节进行调整才能正常工作的话,这个监控系统肯定不是一个完善的监控系统。
  • 可扩展性:满足集群的需求

Dapper监控系统简介

Dapper 是 Google 公司内部的一个大规模分布式系统跟踪基础设施,设计目的是了解系统行为和性能。尽管 Dapper 的具体实现细节并未公开。但在论文中,Dapper 的目标是提供低开销、应用级的透明和延展性,以便于在大规模分布式系统中跟踪请求流。

Dapper 监控系统的特点:

  1. 全面性:Dapper 设计用于收集分布式系统中所有组件的性能数据,从而为系统提供全面的视图。

  2. 低开销:尽管 Dapper 收集大量数据,但它的设计确保对系统性能的影响最小。这通过各种策略实现,包括采样和异步日志记录。

  3. 应用级透明性:Dapper 设计为对应用程序代码的侵入性最小。对于许多服务,开发者可以在不修改代码的情况下启用 Dapper 跟踪。

  4. 跨语言支持:Google 的系统通常使用多种编程语言编写,因此 Dapper 支持跨语言的数据收集。

  5. 可扩展性:Dapper 能够处理 Google 规模的数据量,这意味着它必须高度可扩展以应对数以百万计的交易和事件。

  6. 分布式跟踪:Dapper 能够跟踪分布式事务,即使这些事务跨越多个系统和服务也能确保数据的一致性和完整性。

  7. 分析和可视化工具:Dapper 收集的数据被用于驱动各种分析和可视化工具,帮助员工诊断问题和了解系统行为。

三个基本概念

在这里插入图片描述

  • 监控树(Trace Tree):一个同特定事件相关的所有消息,按照一定的规律以树的形式组织起来
  • 区间(Span):树里面的节点,实际上就是一条记录,所有的记录联系在一起就构成了对某个事件的完整监控
  • 注释(Annotation):注释主要用来辅助推断区间关系,也可以包含一些自定义的内容

  • 监控id是用来在整个Dapper监控系统中区分不同的监控
  • 一棵监控树中所有区间的监控id是相同的,id随机分配,并且在整个Dapper唯一。
    在这里插入图片描述

区间Helper.Call的详细信息

在这里插入图片描述

  • 一个区间既可以只有一台主机的信息,也可以包含来源于多个主机的信息;
  • 双主机区间:最常见,每个RPC(远程过程调用)区间都包含来自于客户端和服务器端的注释。区间包含了来自客户端的注释信息:<Start>Client SendClient Recv<End>,也包含了来自服务器端的注释信息:Server RecvfooServer Send

监控信息的汇总

在这里插入图片描述

  1. 将区间的数据写入到本地的日志文件
  2. 所有机器上的本地日志文件汇集
  3. 汇集后的数据写入到Bigtable存储库中

监控数据汇总单独进行的原因

监控数据的汇总是单独进行的,而不是伴随系统对用户的应答一起返回的原因。

  1. 一个内置的汇总方案(监控数据随RPC应答头返回)会影响网络动态。一般来说,RPC应答数据规模比较的小,通常不超过10KB。而区间数据往往非常的庞大,如果将二者放在一起传输,会使这些RPC应答数据相对“矮化”进而影响后期的分析。
  2. 内置的汇总方案需要保证所有的RPC都是完全嵌套的,但有许多的中间件系统在其所有的后台返回最终结果之前就对调用者返回结果,这样有些监控信息就无法被收集

关键性技术

轻量级核心功能库

  • 实现对应用层透明的目标
    在这里插入图片描述
  • 最关键的代码基础是基本RPC、线程和控制流函数库的实现
  • 主要功能是实现区间创建、抽样和在本地磁盘上记录日志。
  • 将复杂的功能实现限制在一个轻量级的核心功能库中保证了Dapper的监控过程基本对应用层透明。

二次抽样技术

  • 统一抽样率:不利于流量较低的服务,可能忽略关键性事件
  • 适应性抽样率
  • 利用二次抽样技术可以解决低开销及广泛可部署性的问题
  1. 第一次抽样:实践中,设计人员发现当抽样率低至1/1024时也能够产生足够多的有效监控数据,即在1024个请求中抽取1个进行监控也是可行的,从而可以捕获有效数据【海量数据,关注的事件出现的次数足够多】

  2. 第二次抽样:发生在数据写入Bigtable前。具体方法是将监控id散列(hash,压缩映射)成一个标量z(0≤z≤1),如果某个区间的z小于事先定义好的汇总抽样系数,则保留这个区间并将它写入Bigtable,否则丢弃。

常用Dapper工具

Dapper存储API

  • Dapper的“存储API”简称为 DAPI,提供了对分散在区域Dapper存储库(DEPOTS)的监控记录的直接访问。一般有以下三种方式访问这些记录。
  1. 通过监控id访问 (Access by Trace id):利用全局唯一的监控id直接访问所需的监控数据
  2. 块访问 (Bulk Access):借助MapReduce对数以十亿计的Dapper监控数据的并行访问
  3. 索弓l访问 (lndexed Access):Dapper存储库支持单索引| (Single Index)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1606803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣(leetcode) 42. 接雨水 (带你逐步思考)

力扣(leetcode) 42. 接雨水 &#xff08;带你逐步思考&#xff09; 链接&#xff1a;https://leetcode.cn/problems/trapping-rain-water/ 难度&#xff1a;hard 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多…

「GO基础」在Windows上配置VS Code GO语言开发环境

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

【数据结构(八)上】二叉树经典习题

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你学更多数据结构的知识 目录 1.前言2.经典习题2.1相同的树2.2另一棵子树2.3翻转二叉树2.4平衡二叉树2.5对…

安宝特方案 | AR工业解决方案系列-工厂督查

在工业4.0时代&#xff0c;增强现实&#xff08;AR&#xff09;技术正全面重塑传统工业生产&#xff0c;在工厂监督领域&#xff0c;其应用不仅大幅提升了生产效率、监测准确性和规范执行程度&#xff0c;而且为整体生产力带来了质的飞跃。 01 传统挑战与痛点 在制造业生产流程…

机器视觉系统:磁瓦尺寸瑕疵缺陷检测的精准“裁判”(官网)

在电子、通讯和汽车行业中&#xff0c;磁瓦作为关键组件&#xff0c;其尺寸精度和表面质量至关重要。然而&#xff0c;在生产过程中&#xff0c;由于各种因素的影响&#xff0c;磁瓦可能会出现尺寸上的瑕疵和缺陷&#xff0c;如尺寸不符、厚度不均、边缘破损等。这些缺陷不仅影…

浅析STM32H750启动文件

目录 概述 1 启动文件介绍 1.1 启动文件功能 1.2 汇编语言指令 2 启动代码细节 2.1 分配栈空间 2.2 分配堆空间 2.3 中断向量表 2.4 复位程序 2.5 中断服务程序 2.5.1 CPU内部中断程序 2.5.2 CPU内部扩展中断程序 2.6 用户堆栈初始化 3 总结 概述 本文以startup_stm3…

GreatSQL 死锁案例分析

1.背景概述 客户业务发生死锁的报错&#xff0c;根据业务程序日志及业务流程&#xff0c;发现造成死锁的原因是&#xff1a;事务1 delete insert &#xff0c;事务2 delete insert 2个事务交替执行导致的死锁&#xff1b;由于GAP锁阻塞了插入意向锁&#xff0c;并且当delete…

基于1-wire总线的多路温度监测系统

前言 在现代工业生产和环境监测中&#xff0c;温度是一个关键的参数&#xff0c;它直接影响到生产过程的稳定性和产品质量。为了确保温度控制在安全和有效的范围内&#xff0c;需要一种可靠且高效的多路温度监测系统。随着微电子技术和传感器技术的发展&#xff0c;基于1-Wire…

Redis中的订阅发布(二)

订阅与发布 订阅频道 每当客户端执行SUBSCRIBE命令订阅某个或某些频道的时候&#xff0c;服务器都会将客户端与被订阅的频道 在pubsub_channels字典中进行关联。 根据频道是否已经有其他订阅者&#xff0c;关联操作分为两种情况执行: 1.如果频道已经有其他订阅者&#xff0c…

从零实现诗词GPT大模型:数据集介绍和预处理

专栏规划: https://qibin.blog.csdn.net/article/details/137728228 本章将介绍该系列文章中使用的数据集&#xff0c;并且编写预处理代码&#xff0c;处理成咱们需要的格式。 一、数据集介绍 咱们使用的数据集名称是chinese-poetry&#xff0c;是一个在github上开源的中文诗…

雨润万物生,酒伴谷雨行

谷雨&#xff0c;是中国传统二十四节气之一 标志着中国农历的春季即将结束&#xff0c;夏季即将来临。在古代中国, 谷雨时节是农民开始播种、收获的时节,也是酿酒的好季节。谷雨时节,气温适宜、湿度较高&#xff0c;是酵母繁殖和发酵的好时候。 谷雨时节酿酒不仅仅是普通人们…

37-2 Python 的 requests 库发送 POST 请求

准备 sqlilabs 靶场: 构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、发送 POST 请求 首先使用bp对 sqlilabs 靶场的第12关抓个包,了解这个关卡是如何发包的 打开靶场:本地ip+ /sqli-labs-master/Less-12/ 先随便输入个账号登录如…

Postman之页面简介 V9.31.0

Postman之页面简介 V9.31.0 一、顶部栏二、左部栏三、中部栏四、下部栏 一、顶部栏 &#xff08;1&#xff09;new选项框&#xff0c;生成新建请求、集合、环境等 &#xff08;2&#xff09;import选项框&#xff0c;可以导入文件、文件夹、链接、文本信息等 &#xff08;3&…

(2022级)成都工业学院数据库原理及应用实验四: SQL简单查询

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、成品仅提供参考 3、如果成品不满足你的要求&#xff0c;请寻求其他的途径 运行环境 window11家庭版 Navicat Premium 16 Mysql 8.0.36 实验要求 在实验三的基础上完成下列查询&#xff1a; 1、查询所有…

穿越物联网的迷雾:深入理解MQTT协议

目录标题 1、MQTT简介核心特性 2、MQTT的工作原理通信过程 3、MQTT的消息质量&#xff08;QoS&#xff09;4、安全机制5、实践应用环境准备示例项目发布者客户端订阅者客户端 6、最佳实践7、结论8、参考资料 在物联网&#xff08;IoT&#xff09;的海洋中&#xff0c;数据像水流…

【ACM列表推荐会议 | EI稳定检索】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)

2024年第四届人工智能、自动化与高性能计算国际会议&#xff08;AIAHPC 2024&#xff09; 2024 4th International Conference on Artificial Intelligence, Automation and High Performance Computing 2024第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)将于20…

二叉树的最大深度 - LeetCode 热题 37

大家好&#xff01;我是曾续缘&#x1f61b; 今天是《LeetCode 热题 100》系列 发车第 37 天 二叉树第 2 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最…

麒麟服务器操作系统自动化安装应答文件制作

原文链接&#xff1a;麒麟服务器操作系统自动化安装应答文件制作 Hello&#xff0c;大家好啊&#xff01;今天我们将探讨如何为麒麟服务器操作系统制作自动化安装应答文件。在部署大量服务器时&#xff0c;自动化安装是提高效率和确保安装一致性的关键技术。通过使用应答文件&a…

【计算机网络】ip子网划分--超详细例题解析

Hello!这一篇主要是计算机网络中的ip地址子网划分的例题&#xff0c;这里例举了四个题型。保证即便从0也可以掌握&#xff01;(前面是一些预备知识&#xff0c;不熟悉的小伙伴一定要看下学习下哦&#xff5e;) 这也是博主的学习过程&#xff0c;做题中仅仅我的理解哦。若文章中…

【k8s】:kubectl 命令设置简写启用自动补全功能

【k8s】&#xff1a;kubectl 命令设置简写&启用自动补全功能 1、设置kubectl命令简写2、启用kubectl自动补全功能 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; Kubernetes&#xff08;K8s&#xff09;是一个强大的容器编排平台&#…