Skip to content

Library helps to generate a trace ID string for the cross-microservice communication.

License

Notifications You must be signed in to change notification settings

Calabonga/Calabonga.Microservices.Tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Что такое TraceId .NET Core

В микросервисной архитектуре много сервисов по определению. Значит одна бизнес-операция может "пролегать" через несколько сервисов, а значит множество REST-запросов "полетят" по разным WebAPI. Например, оплата в интернет-магазине товара является бизнес-операцией, которая может состоять из нескольких запросов: оплата счета, отправка уведомлений, сбор статистики и т.д. И каждый из перечисленных запросов может (и должен) обрабатываться отдельным сервисом. Вопрос, как фильтровать все запросы для одной бизнес-операции чтобы отследить результаты? Ответ - надо чтобы все запросы были помечены одной и той же меткой (идентификатором). Такой идентификатор обычно называют CorrelationId (я называю TraceId, потому что так короче и писать проще).

Как это работает

Работает система на базе заголовков (headers) запросов. И в REST-запросах, и в MessageQueue-запросах... Почему используются "заголовки"? Перефразирую вопрос, почему нельзя сделать ViewModel, к котором будет TraceId? Тезисно:

  • Потому что эта операция стоит над бизнес-логикой и, следовательно, не должна смешиваться.
  • Потому что ваши ViewModels будут меняться, появляться, исчезать, а запросы изменяются очень и очень редко.
  • Потому что обработка TraceId происходит в том числе и другими сервисами. Например, для сбора статистики или мониторинга. А ваши ViewModels никто "залезать" не будет.

Как реализовать в ASP.NET Core?

Уже готовых решений в интернете полным-полно. Я использую библиотеку Calabonga.Microservices.Tracker, которой решил поделиться совершенно недавно. Как это работает.

  • Установливаете nuget-пакет
  • Настраиваете пару параметров
  • И вуаля!

Инструкция по применению

Library helps to generate a trace ID string for the cross-microservice communication.

About

Library helps to generate a trace ID string for the cross-microservice communication.

Resources

License

Stars

Watchers

Forks

Packages

No packages published