[发明专利]分布式服务跟踪实现方法有效
申请号: | 201610949434.5 | 申请日: | 2016-10-26 |
公开(公告)号: | CN106487596B | 公开(公告)日: | 2019-12-13 |
发明(设计)人: | 张若飞;朱鹏程;赵泽成 | 申请(专利权)人: | 宜人恒业科技发展(北京)有限公司 |
主分类号: | H04L12/24 | 分类号: | H04L12/24;H04L29/08 |
代理公司: | 11359 北京高文律师事务所 | 代理人: | 徐江华 |
地址: | 100022 北京市朝阳*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供一种分布式服务跟踪实现方法,在前端请求到达服务器时,应用容器在执行实际业务处理之前,会先执行Cicada的埋点逻辑,埋点逻辑为这个前端请求分配一个全局唯一的调用链ID,称为TraceId,埋点逻辑把TraceId放在一个调用上下文对象Span里面,而调用上下文对象会存储在ThreadLocal里面,ThreadLocal能够基于线程进行数据的存储和读取,能在同一次请求的多个本地处理方法间传递信息。本发明能够透明的传递调用上下文,理解系统行为,理清后端调用关系,实现调用链跟踪,调用路径分析,帮助业务人员定位性能瓶颈,排查故障原因等;同时,需要对用户尽量透明,减少对业务代码的侵入性。 | ||
搜索关键词: | 分布式 服务 跟踪 实现 方法 | ||
【主权项】:
1.一种分布式服务跟踪实现方法,包括日志采样模块、日志收集模块、日志存储模块、统计报表模块、前端模块,所述日志采样模块利用拦截器拦截技术或面向切面编程技术拦截分布式调用链中的进程行为,所述日志收集模块定期实时读取文件,并将有用的日志信息发送到日志存储模块,所述统计报表模块定期进行日志统计,前端模块提供用户交互界面;整体架构称为Cicada;/n对于请求发起进程的设为客户端,服务提供进程的设为服务端,同一次请求的所有相关调用的情况称作分布式调用链,记为Trace,每个分布式调用链拥有一个全局唯一的ID来标识,其中所述服务端调用其他进程时成为该调用中的的客户端,该跨进程的一次调用记为Span;/n所述Span包括客户端Span和服务端Span,一个远程调用对应两个span,多条Span形成树形结构,组合成一次Trace追踪记录,在Span中的标注点用于记录整个Span时间段内发生的事件,用特殊标注点记录用户自定义事件;/n在客户端的前端请求到达服务器时,应用容器在执行实际业务处理之前,会先执行Cicada的埋点逻辑,埋点逻辑为这个前端请求分配一个全局唯一的调用链ID,称为TraceId,埋点逻辑把TraceId放在一个调用上下文对象Span里面,而调用上下文对象会存储在ThreadLocal里面,ThreadLocal能够基于线程进行数据的存储和读取,能在同一次请求的多个本地处理方法间传递信息;/n在调用上下文时设置有第二种ID,称作spanId,用于区分同一个调用链下的多个网络调用的发生顺序和嵌套层次关系;/n对于前端收到请求,生成的spanId固定都是1,当这个前端执行业务处理需要发起RPC调用时,RPC调用客户端Dubbo会首先从当前线程ThreadLocal上面获取之前设置的调用上下文,然后,把spanId递增一个序号,并使用多级序号来表示spanId;/n之后,调用上下文会作为附件随这次请求一起发送到远程的Dubbo服务器,远程的Dubbo服务端收到这个请求之后,会从请求附件里取出调用上下文,并放到当前线程ThreadLocal上面;/n如果服务A在处理时,需要调用另一个服务,则会重复以上步骤,并将spanId递增一个序号再传过去,服务A的逻辑全部处理完毕之后,Dubbo在返回响应对象之前,会把这次调用情况以及traceId、spanId都打印到它的访问日志之中,同时,会从ThreadLocal清理掉调用上下文。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于宜人恒业科技发展(北京)有限公司,未经宜人恒业科技发展(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610949434.5/,转载请声明来源钻瓜专利网。