微博客户端客户端全链路日志监控系统

2020-05-01  本文已影响0人  dengbinhero


无所不在的部署 && 持续的监控

一:技术背景

1:我们遇到了什么问题?

  在一个微服务的架构系统中,客户端每一个请求,都会形成一个复杂的、很长的调用链路,每一次请求涉及到查询各种API和多种服务请求。例如:客户端app发起一次搜索请求,大概流程如下:

1):客户端通过调用mapi发起请求

2):mapi收到请求后向平台发起多个请求,查询私信聊天记录、查询联系人、查询群聊天记录,而每个环节都可能出问题,但是对客户端来说,都是mapi请求错误,并不知道具体是哪个环节出问题。

二:目标要求

1:记录整个链路所有环节耗时

2:记录整个链路的所有错误

3:可视化

4:数据分析

5:错误快速定位

6:合理的采样率

三:实现方案

1:调用示意图 a 2:调用过程追踪-怎么串联整个链路

3:采样率 

1:调用示意图

1):当用户发起一个请求时,首先到达前端A服务,然后分别对B服务和C服务进行RPC调用;

2):B服务处理完给A做出响应,但是C服务还需要和后端的D服务和E服务交互之后再返还给A服务,最后由A服务来响应用户的请求;

2:调用过程追踪-怎么串联整个链路

1):traceId:本次请求的唯一ID,贯穿整个请求链路,使用uuid做为唯一标志符。

2):spanId:链路中每个请求单元的id,例如一次语音的分片上传,一条语因分为1、2、3三片,三次上传请求,每一次分片上传都有自己对应的spanId,而每个分片都是同一个traceId 3):parentId:上一个请求的spanId,例如分片2的parentId则是分片1的spanId,这样整个链路的层级顺序都串起来了。

3:采样率

主要采取三个采样策略:

1):错误日志全部上采样上传

2):vip用户全采样上传

3):普通用户采用1/1000的采样率上传 

文章引用:

Google Dapper系统

全链路监控-简书

上一篇 下一篇

猜你喜欢

热点阅读