RPC实战与核心原理之分布式环境下如何快速定位问题

分布式环境下如何快速定位

回顾

如何建立可靠的安全体系,关键点就是“鉴权”,我们可以通过统一的鉴权服务动态生成秘钥,提高 RPC 调用的安全性。

分布式环境下定位问题有哪些困难

举例:

一个分布式的应用系统,在这个应用系统中,我启动了 4 个子服务,分别是服务 A、服务 B、服务 C 与服务 D,而这 4 个服务的依赖关系是 A->B->C->D,而这些服务又都部署在不同的机器上。如果出现问题,该怎么定位

分布式环境下定位问题的难点就在于,各子应用、子服务间有着复杂的依赖关系,我们有时很难确定是哪个服务的哪个环节出现的问题。简单地通过日志排查问题,就要对每个子应用、子服务逐一进行排查,很难一步到位;若恰好再赶上跨团队跨部门,那头就更大了

如何做到快速定位问题?

方法 1:借助合理封装的异常信息

  • RPC 框架打印的异常信息中,是包括定位异常所需要的异常信息的

方法 2:借助分布式链路跟踪

  • 分布式链路跟踪系统。从字面上理解,分布式链路跟踪就是将一次分布式请求还原为一个完整的调用链路,我们可以在整个调用链路中跟踪到这一次分布式请求的每一个环节的调用情况,比如调用是否成功,返回什么异常,调用的哪个服务节点以及请求耗时等等。

  • RPC 在整合分布式链路跟踪需要做的最核心的两件事就是“埋点”和“传递”

    • 所谓“埋点”就是说,分布式链路跟踪系统要想获得一次分布式调用的完整的链路信息,就必须对这次分布式调用进行数据采集,而采集这些数据的方法就是通过 RPC 框架对分布式链路跟踪进行埋点。
    • 那所谓“传递”就是指,上游调用端将 Trace 信息与父 Span 信息传递给下游服务的服务端,由下游触发埋点,对这些信息进行处理,在分布式链路跟踪系统中,每个子 Span 都存有父 Span 的相关信息以及 Trace 的相关信息。
posted @ 2022-02-13 18:43  牛犁heart  阅读(232)  评论(0编辑  收藏  举报