应用性能监控1

背景

应用性能管理(Application Performance Management)是一个比较新的网络管理方向,主要指对企业的关键业务应用进行监测、优化,提升企业应用的可靠性和质量,保证用户获得良好的服务,下降IT总拥有成本(TCO)。使用全业务链的敏捷APM监控,可以使一个企业的关键业务应用的性能更强大,能够提升竞争力,并取得商业成功,所以,增强应用性能管理(APM)能够产生巨大商业利益。国内外的APM有Compuware、iMaster、博睿Bonree、听云、New Relic、云智慧、OneAPM、AppDynamics等。spring

      如今的互联网公司都根据本身的业务特色,开发了各自的apm产品。zipkin(twitter)、鹰眼(阿里)、hydra(京东)、tracing(窝窝)、cat(点评),在spring cloud中,采用Sleuth与zipkin实现无缝集成。数据库

微服务性能监控

  Zipkin 是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper 的论文设计而来,由 Twitter公司开发贡献。其主要功能是汇集来自各个异构系统的实时监控数据,用来追踪微服务架构下的系统延时问题。应用系统须要进行装备(instrument)以向 Zipkin 报告数据。Zipkin 的用户界面能够呈现一幅关联图表,以显示有多少被追踪的请求经过了每一层应用。Zipkin 以 Trace 结构表示对一次请求的追踪,又把每一个 Trace 拆分为若干个有依赖关系的 Span。json

  在微服务架构中,一次用户请求可能会由后台若干个服务负责处理,那么每一个处理请求的服务就能够理解为一个 Span(能够包括 API 服务,缓存服务,数据库服务以及报表服务等)。固然这个服务也可能继续请求其余的服务,所以 Span 是一个树形结构,以体现服务之间的调用关系。Zipkin 的用户界面除了能够查看 Span 的依赖关系以外,还显示了每一个 Span 的耗时状况,能够一目了然的看到各个服务的性能情况。后端

zipkin的架构模型

主要组件说明

instrument: 用于性能日志数据的收集api

Reporter: 将采集的数据发送到zipkin服务端缓存

Transport: 收集被trace的services的spans,而且传输给zipkin的collector,有三个主要传输:HTTP,Kafka和Scribe。网络

collector: 负责将各系统报告过来的追踪数据进行接收架构

storage: 默认的存储方式为in-memory,即不会进行持久化操做。若是想进行收集数据的持久化,能够存储数据在Cassandra,由于Cassandra是可扩展的,有一个灵活的模式,而且在Twitter中被大量使用,咱们使这个组件可插入。除了Cassandra,咱们原生支持ElasticSearch和MySQL。其余后端可能做为第三方扩展提供。app

API: 查询服务用来向其余服务提供数据查询的能力,是以json api格式提供分布式

UI: Web服务是官方默认提供的一个图形用户界面