CAT_source_analyze
CAT_source_analyze copied to clipboard
CAT大众点评监控系统源码分析
### Cat Server 主要类介绍 Server的主要入口是cat-core包中的RealTimeConsumer类 RealTimeConsumer类以及RealTimeConsumer的依赖类层级结构如下  Cat Server功能为解码消息,解码后按照固定时间间隔分片,将消息分发到各个Analyzer的消费队列中,然后由各自的Analyzer进行消费 ## TCPSocketReceiver,DefaultMessageHandler TCPSocketReceiver主要负责使用netty建立server端,接受到tcp请求后将其解码,通过DefaultMessageHandler将Message交由RealTimeConsumer消费 ## RealTimeConsumer 在内部初始化PeriodManager,并启动periodManager的线程,该线程会不断根据时间间隔生成新的Period对象,并启动Period对象内的多个PeriodTask线程,PeriodTask线程会根据持有的Anaylyzer和MessageQueue进行消费 当RealTimeConsumer终止时会调用doCheckPoint方法 ## PeriodManager,PeriodStrategy PeriodManager主要是以时间切片作为策略来拆分整体数据的,所以PeriodManager中包含的List类型是根据PeriodStrategy中的时间策略获得的。PeriodManager实现Task接口,他的主要任务是在规定的存活期内,每隔一段固定的时间都会创建新的Period对象,并启动Period对象内的多个消费线程 ## Period Period中主要包含了一个类型为Map < String, List < PeriodTask > >的属性,该属性根据MessageAnalyzerManager构建。Map <...
### Motan Cluster Motan的client主要由Registry,Cluster,Transport,Protocol等几个模块组成 因为其他模块介绍比较多,所以本文暂时只介绍Cluster和Registry相关模块 Client端启动流程基本如下  ## RefererConfig RefererConfig类是RefererConfigBean的父类,RefererConfigBean负责实现spring bean的接口。 RefererConfig中比较重要的属性是 ``` JAVA List clusterSupports ``` ClusterSupport是封装了Cluster的类,RefererConfig主要的功能就是根据Config创建Cluster的实例们 其中createClusterSupport就是用来建立实例的方法,在createClusterSupport中调用SimpleConfigHandler的buildClusterSupport创建Cluster。 ## SimpleConfigHandler SimpleConfigHandler类主要有两个方法:buildClusterSupport,refer buildClusterSupport主要负责创建Cluster实例 refer负责根据代理handler组件referer对象 ## ClusterSupport ClusterSupport持有属性如下 ```java private static...
### TaskConsumer介绍 后台的Analyzer在归档时会生成Task的记录到数据库中,server在CatConsumerModule中初始化过程中启动了TaskConsumer线程来处理数据库中的记录  ## ReportFacade 此类会在初始化时,将注册在plexus的所有builder加载到m_reportBuilders中,在执行builderReport时,根据传入的task的reportName查找对应的TaskBuilder,根据时间片,domain以及reportName查询已经入库的report基本记录,再将report的基本记录合并,并将合并后的report,生成的graph入库。 在生成聚合report的过程中,会根据层级树自上至下归并递归生成,比如月的根据周,周根据日,日根据小时生成。 ## EventReportBuilder 基于时间片,调用EventService实现入库聚合报表,入库聚合graph的功能 ## EventService 基于domain实现报表插入,报表查询等功能,是业务执行的基本单元
### DumpAnalyzer介绍 CatServer中,可以定时把消息存储到hdfs中,dumpAnalyzer就是用来支持这种功能的  ## LocalMessageBucketManager ConcurrentHashMap m_buckets主要根据持久化的日志路径保存LocalMessageBucket对象 BlockingQueue < MessageBlock > m_messageBlocks 保存MessageItem经过gzip压缩的block ConcurrentHashMap < Integer, LinkedBlockingQueue < MessageItem > > m_messageQueues 在内存中持有各个gzip执行线程压缩队列对象,根据线程的index作为索引 BlockDumper负责将gzip压缩过的block持久化到本地文件 MessageGzip负责定时压缩MessageItem LogviewUploader负责上传logview到hdfs * archive 把传入时间范围内的,将bucket已经压缩到block,但是没有flush的MessageBlock放入m_messageBlocks消费队列中,供BlockDumper,LogviewUploader消费...
### EventAnalyzer介绍 Cat server中,以PeriodTask为消费单元,使用MessageAnalyzer进行消息消费,本篇介绍一下EventAnalyzer的功能,并捎带介绍一下MessageAnalyzer的实现 MessageAnalyzer接口实现结构如下  ## MessageAnalyzer 由MessageAnalyzer得知,实现该接口必须实现三个功能 1. analyze,对消息队列的内容进行消费 2. doCheckpoint 对已经消费生成报表的内容做checkpoint进行归档 3. initialize 初始化,加载已经本地化的报表 ## AbstractMessageAnalyzer analyzer的模板类,主要实现analyze和initialize功能 analyze会调用具体实现的process来消费 initialize负责设置analyzer的starttime和duration,并调用loadReports ## EventAnalyzer EventAnalyzer中聚合了EventDelegate,ReportManager,ServerFilterConfigManager,EventTpsStatisticsComputer几个类 Analyzer主要实现process,doCheckpoint,loadReports ## EventDelegate EventDelegate负责EventReport的生成,多个EventReport之间的聚合,建立报表分析任务几个功能。EventDelegate使用了EventReportMerger,EventReportTypeAggregator,EventReportCountFilter,EventTpsStatisticsComputer等类实现了在内存中对报表进行聚合、统计的功能。 EventDelegate并不管理Report,只会根据传入的Report进行操作...
### Cat基本功能介绍 CAT是基于JAVA开发的业务监控,异常监控的分布式监控平台。 CAT可以提供以下几种模型的监控: * Transaction 适用于记录程序跨系统边界进行的访问行为,比如远程调用,数据库调用,长时间的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。 * Event 适用于记录事件的发生,比如系统异常的记录,相比于Transaction缺少时间的统计 * Heartbeat 适用于记录程序内定期产生的统计信息,如CPU,MEM,连接池状态,系统负载等 * Metric 用于记录业务指标,包含对一个指标记录次数或其他统计 * Trace 用于记录基本的trace信息 ### Cat Client 主要类介绍 Client的主要入口是cat-client包中的Cat类 Cat类以及Cat的依赖类层级结构如下  从图中可以看出,Cat client从上到下总共分为三层 ## 接口层...