avg变量的定义 avg什么意思( 四 )


基本上,CAT的所有报表模型都可以进行增量计算 。可以分为计数、计时、关系处理三种 。计数可分为算术计数和集合计数两类 。典型的算术计数有:总数(count)、总和(sum)、平均值(avg)、最大值/最小值(max/min)、吞吐量(tps)和标准差(std)等 。其他的比较直观,标准差稍微复杂一点 。你可以自己推导出如何做增量计算 。然后集合操作,比如95行(代表95%请求的完成时间)和999行(代表99.9%请求的完成时间),稍微复杂一点,系统开销也大一点 。
报表建模
每个CAT报告通常有多个维度 。以交易报告为例 。它有五个维度 , 即应用、机器、类型、名称和分钟级分布 。如果全维建模灵活,成本会很高 。选择卡特彼勒固定维度建模可以理解为将这五个维度组织成深度为5的树 。访问总是从根开始,一层一层往下 。
卡特彼勒服务器为每个报告分别分配一个线程,因此不会出现锁问题 。所有报表模型都是非线程安全的,并且它们的数据是可变的 。这具有简单和低成本的优点 。
利用自主开发的maven插件自动生成CAT报表建模 。所有报告都可以合并和裁剪 , 两个或更多的报告可以很容易地合并成一个报告 。在报告处理代码中,CAT大量使用了访问者模式 。
性能分析报告
故障发现报告
实时业务指标监控 :核心业务都会定义自己的业务指标,这不需要太多,主要用于24小时值班监控 , 实时发现业务指标问题,图中一个是当前的实际值,一个是基准值,基准值是根据历史趋势计算的预测值 。如下图就是当时出故障,直观看到支付业务出问题的故障 。
系统报错大盘实时数据库大盘、服务大盘、缓存大盘等
存储设计
卡特彼勒系统中有两个主要的存储部分 。
CAT的报表的存储CAT原始logview的存储
报告是根据logview实时计算的用于业务分析的报告 。默认报告为小时模式、天模式、周模式和月模式 。卡特彼勒实时处理报告都生成每小时统计数据,每小时报告将包含最小分钟粒度的统计数据 。日、周、月和其他报告是每小时合并报告的结果 。
原始日志视图每天存储大约300TB的数据 。由于数据量大,存储必须压缩 , 需要根据messageId读取原始logview 。在这种情况下,存储的总体要求是批量压缩和随机读取 。当时还没有成熟的系统来支持这样的特性,所以我们开发了一个基于文件的存储来支持CAT,这一直是存储中最难的问题,我们也一直在不断的改进和优化 。
消息ID的设计
每个CAT消息都有一个惟一的ID,这个ID是在客户端生成的,后续的CAT通过这个ID搜索消息内容 。例如,在分布式调用中,RPC消息需要串在一起 。例如,当A调用B时,A端会生成一个MessageId 。在A呼叫B的过程中,MessageId作为一个调用传递到B端 。在B执行过程中,B使用context传递的MessageId作为当前监控消息的MessageId 。
猫报文的MessageId格式为ShopWeb-0a010680-375030-2,猫报文分为四段 。
第一段是应用名shop-web第二段是当前这台机器的ip的16进制格式 , 01010680表示10.1.6.108第三段的375030,是系统当前时间除以小时得到的整点数第四段的2,是表示当前这个客户端在当前小时的顺序递增号
存储数据的设计
存储消息是CAT最具挑战性的部分 。关键是消息数量多且大 。目前美团点评每天处理约3000亿条消息,大小约300TB,单个物理机每秒要处理约200MB流量 。CAT server根据这个流量进行实时计算 , 也需要对这些数据进行压缩并写入磁盘 。
整体存储结构如下
CAT数据文件分为两种 , 一种是索引文件,一种是数据文件 。
data文件是分段GZIP压缩,每个分段大小小于64K,这样可以用16bits可以表示一个最大分段地址一个MessageId都用需要48bits的空间大小来存索引,索引根据MessageId的第四段来确定索引的位置 , 比如消息MessageId为ShopWeb-0a010680-375030-2,这条消息ID对应的索引位置为2*48bits的位置48bits前面32bits存数据文件的块偏移地址 , 后面16bits存数据文件解压之后的块内地址偏移CAT读取消息的时候,首先根据MessageId的前面三段确定唯一的索引文件 , 在根据MessageId第四段确定此MessageId索引位置,根据索引文件的48bits读取数据文件的内容,然后将数据文件进行GZIP解压,在根据块内偏移地址读取出真正的消息内容 。
服务器设计总结
就卡特彼勒分布式实时而言,主要归结于以下因素:
去中心化,数据分区处理基于日志只读特性,以一个小时为时间窗口,实时报表基于内存建模和分析,历史报表通过聚合完成基于内存队列,全面异步化,单线程化,无锁设计全局消息ID,数据本地化生产 , 集中式存储组件化、服务化理念

推荐阅读