微服务-服务追踪系统

微服务-服务追踪系统

在一个庞大的微服务系统架构下,如果某一次服务请求出现了问题,那么我们如何定位是哪台机器又或是哪个接口出现了问题。

这时候,我们就需要服务追踪系统来查询。

服务追踪的作用:

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存储。

三. 数据展示

两种方式:调用连路图,调用拓扑图。

 

追问:实时监控系统和服务追踪系统,这两个系统的相同点和区别?

两个系统均由数据采集、数据处理、数据展示三部分。

服务追踪系统是帮助程序员在查看快速定位请求出错在全局的位置,是哪个接口出现问题。

实时监控系统是帮助程序员查看出错接口的具体数据是多少。

posted @ 2018-10-25 10:13  HZ青鱼  阅读(1056)  评论(0编辑  收藏  举报