ServiceComb+Zipkin:使用篇
分布式调用链追踪能有效地监控服务间的网络延时并可视化微服务中的数据流转。ServiceComb扩展了zipkin的接口提供了服务内部的链路调用信息,能提供更完整的调用链路信息,更容易定位问题和潜在性能问题。本文将介绍ServiceComb 提供的分布式调用链追踪能力及使用指导。
一. 异常场景示例
我们将使用ServiceComb的入门案例BMI(体质指数应用),展示ServiceComb的调用链追踪和自定义调用链追踪能力。BMI应用程序包含体质指数计算calculator和服务网关webapp两个服务,参见ServiceComb的入门案例BMI指导1。
我们给BMI的calculator微服务增加了异常代码,如下。
public double calculate(double height, double weight) {
// 异常代码:增加一块进程休眠代码(模拟实际工作中调用当前线程处理其他业务的情景)
try{
Thread.currentThread().sleep(5000);
} catch (Exception e){
}
// 正常代码:计算身高体重的bmi值
if (height <= 0 || weight <= 0) {
throw new IllegalArgumentException("Arguments must be above 0");
}
double heightInMeter = height / 100;
double bmi = weight / (heightInMeter * heightInMeter);
return roundToOnePrecision(bmi);
}
参见BMI程序使用指导1,运行bmi程序,出现如下异常结果。
二. 使用Zipkin定位服务级别异常
以上的BMI示例还未开启调用链追踪,下面我们将使用ServiceComb提供的分布式调用链追踪能力定位分析BMI应用的哪个服务发生了异常。
首先需要给BMI程序配置zipkin调用链追踪能力,只需添加两个配置即可。可参考