分布式服务跟踪实现方法与流程

文档序号:12182440阅读:来源:国知局

技术特征:

1.一种分布式服务跟踪实现方法,包括日志采样模块、日志收集模块、日志存储模块、统计报表模块、前端模块,所述日志采样模块利用拦截器拦截技术或面向切面编程技术拦截分布式调用链中的进程行为,所述日志收集模块定期实时读取文件,并将有用的日志信息发送到日志存储模块,所述统计报表模块定期进行日志统计,前端模块提供用户交互界面;整体架构称为Cicada;

对于请求发起进程的设为客户端,服务提供进程的设为服务端,同一次请求的所有相关调用的情况称作分布式调用链,记为Trace,每个分布式调用链拥有一个全局唯一的ID来标识,其中所述服务端调用其他进程时成为该调用中的的客户端,该跨进程的一次调用记为Span;

在客户端的前端请求到达服务器时,应用容器在执行实际业务处理之前,会先执行Cicada的埋点逻辑,埋点逻辑为这个前端请求分配一个全局唯一的调用链ID,称为TraceId,埋点逻辑把TraceId放在一个调用上下文对象Span里面,而调用上下文对象会存储在ThreadLocal里面,ThreadLocal能够基于线程进行数据的存储和读取,能在同一次请求的多个本地处理方法间传递信息。

2.根据权利要求1所述的分布式服务跟踪实现方法,其特征在于:所述Span包括客户端Span和服务端Span,一个远程调用对应两个span,多条Span形成树形结构,组合成一次Trace追踪记录,在Span中的标注点用于记录整个Span时间段内发生的事件,用特殊标注点记录用户自定义事件。

3.根据权利要求2所述的分布式服务跟踪实现方法,其特征在于:所述标注点的属性包括timestamp、type、ip、port,分别表示记录行为发生时间、记录行为类型、IP地址、端口;所述特殊标注点的属性包括timestamp、type、ip、port、key、value,分别表示记录行为发生时间、记录行为类型、IP地址、端口、用户定义属性名、用户定义属性值;所述Span的属性包括traceId、Id、parentId、appName、serviceName、methodName、subSpanNum、annotations、binaryAnnotations,分别表示分布式调用唯一id、Span唯一id、Span父id、应用名、类名、方法名、子span数量、调用信息、补充信息或异常信息。

4.根据权利要求1所述的分布式服务跟踪实现方法,其特征在于:在调用上下文时设置有第二种ID,称作spanId,用于区分同一个调用链下的多个网络调用的发生顺序和嵌套层次关系;

对于前端收到请求,生成的spanId固定都是1,当这个前端执行业务处理需要发起RPC调用时,RPC调用客户端Dubbo会首先从当前线程ThreadLocal上面获取之前设置的调用上下文,然后,把spanId递增一个序号,并使用多级序号来表示spanId;

之后,调用上下文会作为附件随这次请求一起发送到远程的Dubbo服务器,远程的Dubbo服务端收到这个请求之后,会从请求附件里取出调用上下文,并放到当前线程ThreadLocal上面;

如果服务A在处理时,需要调用另一个服务,则会重复以上步骤,并将spanId递增一个序号再传过去,服务A的逻辑全部处理完毕之后,Dubbo在返回响应对象之前,会把这次调用情况以及traceId、spanId都打印到它的访问日志之中,同时,会从ThreadLocal清理掉调用上下文。

5.根据权利要求1所述的分布式服务跟踪实现方法,其特征在于:当服务发生时,所述日志采样模块拦截分布式系统各组成部分的处理行为,记录行为日志并将日志通过Http Post异步发送到日志收集模块,将收集好的日志发送到远程服务器时采用批处理和异步发送的方法,并增加了连接超时设置和传输超时设置,将超过一定时长的日志直接扔掉,同时对单位时间内抓取的日志量过多的情况进行了限流处理。

6.根据权利要求1所述的分布式服务跟踪实现方法,其特征在于:所述日志收集模块分日志接收子系统和日志汇总子系统,所述日志接收子系统为nginx集群,所述nginx接收到客户端POST过来的消息数据,直接记录本地文件;所述日志汇总子系统从nginx日志中读取最新数据,记录读取进度并进行数据清洗,将异步数据存储到Elastic Search。

7.根据权利要求1所述的分布式服务跟踪实现方法,其特征在于:所述统计报表模块进行定期日志统计,统计项包括以下:

avgDuration:平均响应时间;

minDuration:最快响应时间;

maxDuration:最慢响应时间;

line95Duration:95%line最大响应时间;

line999Duration:99.9%line最大响应时间;

failureRate:请求失败率;

提供统计结果以及Trace数据访问的RESTful接口。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1