微服务-服务追踪系统
微服务-服务追踪系统
在一个庞大的微服务系统架构下,如果某一次服务请求出现了问题,那么我们如何定位是哪台机器又或是哪个接口出现了问题。
这时候,我们就需要服务追踪系统来查询。
服务追踪的作用:
1.定位请求出错的位置
2.优化系统调用瓶颈,可以分析每一个接口的调用延时,从而优化相应的接口。
3.优化请求链路调用,在服务追踪系统中,我们可以看到每个接口调用另一个接口的信息,查看在逐个调用中是否存在着不合理的跨区域的调用。
4.生成网络拓扑图,通过网络拓扑图,可以分析出整个RPC的架构和性能信息。
5.透明传输数据,做A/B测试。
注:什么是A/B测试?同时发布两个版本的内容供用户使用,调研这两个版本哪个更受用户欢迎及采用哪个版本。
服务追踪系统的原理
最原始的是由Google发表的Dapper论文。
核心理念是产生一个请求的完整调用链,通过一个在请求的第一层产生一个全局的ID,在整个请求过程中传递,最后通过ID还原出整个的请求链路。
有名的服务追踪系统:Zipkin;鹰眼;MTrace。
三个基础概念:
traceId:用于表示某一个请求在全局的唯一ID。由请求在RPC调用网络中的第一层生成。
spanId:用于标识一次RPC调用在分布式请求中的位置,调用了哪台机器的哪个接口。
annotation:业务自定义的埋点,上传在请求处理过程中,需要后台记录的信息。
服务追踪系统架构
一. 数据采集层
在业务的代码中进行埋点,并将数据进行上报。
二. 数据处理
数据处理分为两类:实时计算需求,离线计算需求
1. 实时计算需求
一般采用Storm或者Spark Streaming进行流式处理方式进行实时的聚合加工,采用OLTP数据仓库(HBase)。
2. 离线数据处理
采用MapReduce或者Spark批处理程序计算,采用Hive存储。
三. 数据展示
两种方式:调用连路图,调用拓扑图。
追问:实时监控系统和服务追踪系统,这两个系统的相同点和区别?
两个系统均由数据采集、数据处理、数据展示三部分。
服务追踪系统是帮助程序员在查看快速定位请求出错在全局的位置,是哪个接口出现问题。
实时监控系统是帮助程序员查看出错接口的具体数据是多少。