云计算及应用课件:大规模分布式系统的监控基础架构Dapper_第1页
云计算及应用课件:大规模分布式系统的监控基础架构Dapper_第2页
云计算及应用课件:大规模分布式系统的监控基础架构Dapper_第3页
云计算及应用课件:大规模分布式系统的监控基础架构Dapper_第4页
云计算及应用课件:大规模分布式系统的监控基础架构Dapper_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

基本设计目标

Dapper监控系统简介

关键性技术

常用Dapper工具

Dapper使用经验用户将一个关键字通过Google的输入框传到Google的后台,在我们看来很简单的一次搜索实际上涉及了众多Google后台子系统,这些子系统的运行状态都需要进行监控

广泛可部署性不间断的监控监控系统设计两个基本要求

设计目标

030201广泛可部署性的必然要求。监控系统的开销越低,对于原系统的影响就越小,系统的开发人员也就越愿意接受这个监控系统

Google的服务增长速度是惊人的,设计出的系统至少在未来几年里要能够满足Google服务和集群的需求如果监控系统的使用需要程序开发人员对其底层的一些细节进行调整才能正常工作的话,这个监控系统肯定不是一个完善的监控系统

低开销

应用层透明

可扩展性

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

基本设计目标

Dapper监控系统简介

关键性技术

常用Dapper工具

Dapper使用经验基本概念

图中,用户发出请求X,前端A发现该请求的处理需要涉及服务器B和服务器C,因此A又向B和C发出两个RPC(远程过程调用)。B收到后立刻做出响应,但是C在接到后发现它还需要调用服务器D和E才能完成请求X,因此C对D和E分别发出了RPC,D和E接到后分别做出了应答,收到D和E的应答之后C才向A做出响应,在接收到B和C的应答之后A才对用户请求X做出一个应答X

在监控系统中记录下所有这些消息不难,如何将这些消息记录同特定的请求(本例中的X)关联起来才是分布式监控系统设计中需要解决的关键性问题之一典型分布式系统的请求及应答过程

方案一黑盒(BlackBox)方案——方案比较轻便,但在消息关系判断过程中,主要是利用一些统计学知识来进行推断,有时不是很准确方案二基于注释的方案

——利用应用程序或中间件给每条记录赋予一个全局性的标示符,借此将相关消息串联起来(Google最终选择)基本概念

Dapper监控系统中三个基本概念:监控树(TraceTree)、区间(Span)和注释(Annotation)

图示是一个典型的监控树,实际上就是一个同特定事件相关的按照一定的规律以树的形式组织起来所有消息,每一个节点称为一个区间(一条记录),所有记录联系在一起就构成了对某个事件的完整监控。

每个区间包括如下的内容:区间名(SpanName)、区间id(Spanid)、父id(Parentid)和监控id(Traceid)

监控树监控id图中并没有列出,一棵监控树中所有区间的监控id相同,随机分配且唯一区间Helper.Call的详细信息

图中区间包含来自客户端的注释信息:“<Start>”、“ClientSend”、“ClientRecv”和“<End>”,也包含来自服务器端的注释信息:“ServerRecv”、“foo”和“ServerSend”。

除“foo”是用户自定义的注释外,其他的注释信息都是和时间相关的信息。

Dapper不但支持用户进行简单的文本方式的注释,还支持键-值对方式的注释基本概念

监控信息的汇总监控信息汇总

监控信息汇总(1)将区间的数据写入到本地的日志文件(2)所有机器上的本地日志文件汇集(3)汇集后的数据写入到Bigtable存储库中

监控数据汇总是单独进行的,而不是伴随系统对用户的应答一起返回的,如此选择主要原因:

内置的汇总方案(监控数据随RPC应答头返回)会影响网络动态

内置的汇总方案需要保证所有的RPC都是完全嵌套

安全问题

应用层注释提供一种方便的选择机制(Opt-inMechanism):应用程序开发者可以将任何对后期分析有益的数据和区间关联起来

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

基本设计目标

Dapper监控系统简介

关键性技术

常用Dapper工具

Dapper使用经验Dapper三个设计目标中,实现难度最大的是?应用层透明怎么实现应用层透明轻量级的核心功能库

二次抽样技术

轻量级核心功能库

将Dapper的核心监控实现限制在一个由通用线程(UbiquitousThreading)、控制流(ControlFlow)和RPC代码库(RPCLibraryCode)组成的小规模库基础上

其中最关键的代码基础是基本RPC、线程和控制流函数库的实现,主要功能是实现区间创建、抽样和在本地磁盘上记录日志二次抽样技术

第一次抽样——实践中,设计人员发现当抽样率低至1/1024时也能够产生足够多的有效监控数据,即在1024个请求中抽取1个进行监控也是可行的,从而可以捕获有效数据第二次抽样——发生在数据写入Bigtable前,具体方法是将监控id散列成一个标量z(0≤z≤1),如果某个区间的z小于事先定义好的汇总抽样系数,则保留这个区间并将它写入Bigtable,否则丢弃大规模分布式系统的监控基础架构Dapper

基本设计目标

Dapper监控系统简介

关键性技术

常用Dapper工具

Dapper使用经验Dapper存储API

Dapper的“存储API”简称为DAPI,提供了对分散在区域Dapper存储库(DEPOTS)的监控记录的直接访问。一般来说,有以下三种方式可以对这些记录进行访问:

(1)监控id访问(AccessbyTraceid)

利用全局唯一的监控id直接访问所需的监控数据

(2)块访问(BulkAccess)

借助MapReduce对数以十亿计的Dapper监控数据的并行访问

(3)索引访问(IndexedAccess)

Dapper存储库支持单索引(SingleIndex)根据不完全统计,目前大约有三个基于DAPI的持久应用程序,八个额外的基于DAPI的按需分析工具及大约15~20个使用DAPI框架构建的一次性分析工具

Dapper用户界面

(1)选择监控对象(起止时间、区分监控模式的信息及一个衡量开销的标准)(2)用户对这些执行模式进行排序并选择某个查看更多细节

Dapper用户界面

(3)分布式执行模式图形化描述呈现给用户

(4)根据最初选择的开销度量标准,Dapper以频度直方图的形式将步骤(3)中选中的执行模式的开销分布展示出来

Dapper用户界面

(5)用户选择了某个监控样例后,就会进入所谓的监控审查视图(TraceInspectionView)

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

基本设计目标

Dapper监控系统简介

关键性技术

常用Dapper工具

Dapper使用经验新服务部署中Dapper的使用

利用Dapper对系统延迟情况进行一系列的跟踪,进而发现存在的问题定位长尾延迟(AddressingLongTailLatency)

因此发现关键路径上的网络延迟常常就能够发现端到端性能表现不佳的原因。利用Dapper恰恰能够比较准确的发现关键路径Dapper使用经验关键路径网络延迟对于端到端性能表现的影响确定不同服务的网络使用情况

利用Dapper平台构建了一个连续不断更新的控制台,用来显示内部集群网络通信中最活跃的应用层终端

Dapper使用经验推断服务间的依存关系(InferringServiceDependencies)

Google的“服务依存关系”项目使用监控注释和DPAI的MapReduce接口实现了服务依存关系确定的自动化利用Dapper进行“火拼”(FirefightingwithDapper)

“火

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论