В предыдущей статье мы построили распределенную среду трассировки на базе SkyWalking, а сегодня поговорим об использовании SkyWalking для мониторинга наших микросервисов (DUBBO)
Сервисный кейс
Предположим, у вас есть микросервис заказов со следующими компонентами
Подтаблица базы данных MySQL (2 набора)
Продюсер (2 шт.) dubbo-provider
потребительский даббо-потребитель
Топология сети следующая
Ключевой код производителя
@Service
public class OrderServiceImpl implements OrderService {
@Autowired
protected OrderMapper orderMapper;
@Override
public OrderVO getById(long id) {
OrderVO orderVO = new OrderVO();
Order order = orderMapper.selectById(id);
BeanUtils.copyProperties(order,orderVO);
return orderVO;
}
}
код ключа потребителя
@RestController
public class OrderController {
@Reference(retries = 0)
private OrderService orderService;
@GetMapping("/order/{id}")
public OrderVO getOrder(@PathVariable long id){
return orderService.getById(id);
}
}
фиктивный запрос Доступ в браузереhttp://localhost:9090/order/1184489161562816511, несколько вызовов, чтобы загрузка вступила в силу; измените параметр идентификатора заказа, чтобы вызов охватывал разные базы данных
Просмотр эффекта Посетить адрес наблюдения за ходьбой по небуhttp://192.168.136.129:8080/Проверьте эффект мониторинга
В этой части давайте сначала рассмотрим принцип цепочки вызовов:
Когда поступает запрос, генерируется глобальный TraceID, и вся цепочка вызовов может быть соединена последовательно через TraceID, а TraceID представляет собой запрос.
В дополнение к TraceID, SpanID также требуется для записи вызывающих отношений родитель-потомок. Каждая служба записывает Parent id и Span id, с помощью которых может быть организована связь родитель-потомок в полной цепочке вызовов.
Чтобы просмотреть полный вызов, вам нужно только найти все записи вызовов в соответствии с TraceID, а затем организовать отношения родитель-потомок всего вызова по Parent id и Span id.
Именно потому, что TraceID так важен, мы надеемся, что TraceID этой цепочки вызовов может быть выведен в файл журнала.Как только обнаружен ненормальный вызов, мы можем напрямую искать TraceID на платформе анализа журнала, чтобы получить все связанные журналы, что значительно повышает нашу способность эффективно решать проблемы.
Только начинается, когда приобретение меньше, чем TraceID, поэтому TID отображается как N/A, вызывает запрос, после него снова начинается смотреть консоль, найти логи, на всех ссылках отмечен TraceID.
С помощью нескольких простых шагов вы можете добавить мониторинг цепочки вызовов в свои микросервисы. Почему бы вам не попробовать?