Spring Cloud Sleuth 实现微服务链路跟踪

为什么要实现微服务链路追踪

    一个完整的微服务系统一般由成百上千,甚至几万、几十万、几百万的服务实例构成。在这种规模下,如果出现问题,则准确跟踪问题点会十分困难。所以,需要用链路跟踪工具来监控微服务状态,当出现问题时能及时定位问题点,快速解决问题。
    总体来说,实现微服务链路追踪主要有一下需求。

  1. 实现监控
    万倍的监控系统可以提供及时、准确的性能报告,可以了解请求的路径、请求耗费的时间、网络延迟状况、单个业务逻辑耗费时间等指标。

  2. 决策
    我们可以分析系统瓶颈、解决系统存在的问题,以及为当前和未来的决策提供基础数据。

  3. 避免技术债务
    系统会根据业务需求不断地进行演变,如果过去遗留的问题没有处理好,则会对新的功能产生影响。如果没有跟踪技术,则会产生大量技术债务。技术债务的累计会对修改或升级带来更多的问题。

  4. 快速定位故障
    如果要解决问题,则首先需要发现问题,然后定位问题的故障点、及时采取措施解决问题。发现、定位、解决问题都非常重要。如果任何一点没有能及时得到解决,则在发生故障后解决惠花费非常长的时间。

在微服务结构中,能在出现问题前预警问题,在出现问题后快速定位故障点非常重要。如果缺少这种快速定位故障点的机制,则关键业务停止或出现性能问题会对业务影响极大。一个完备的系统需要提供快速检测(预警)、隔离和修复问题的方式。

微服务链路跟踪的技术要求

    在明确了链路追踪的必要性后,就可以设计和规划链路追踪技术了。一个好的链路追踪技术应该满足一下要求。

  1. 低消耗
    跟踪系统本质是发现某个系统的性能或故障问题,所以它不能反过来影响被监控系统的性能,至少需要做到“链路跟踪的价值要比使用链路跟踪对性能的影响要大很多”,或者影响可以忽略,否则就没有使用链路系统的价值,因此低消耗是必需的。

  2. 应用透明
    应用透明即要求链路追踪技术对业务系统是透明的,没有侵入性,不会影响开发人员业务,或者不会因为开发人员的疏忽而失效。可以把代码植入控制流、RPC库等公共组件中。

  3. 延展性
    链路追踪系统应能满足业务系统的发展需求。当系统越来越庞大和复杂后,链路跟踪技术依然能快速地跟踪产生的数据,并及时地对数据进行统计和生成报表。

  4. 可控采样率
    可以通过设置采样率来平衡性能消耗和采样质量。

  5. 可视化
    具有可视化的控制台也是链路追踪的一个重要需求。

你可能感兴趣的:(Spring,Cloud,微服务,java)