Skip to content

Троттлящие хелсчеки - отличная альтернатива instant хелсчекам, если вы любите на каджый чих делать новый "микросервис"

License

Notifications You must be signed in to change notification settings

zetroot/HealtzHealthcheck

Repository files navigation

License CI status codecov Nuget Nuget

Троттлящие Хелсчеки

Распилил монолит и получил распределенный монолит или даже кучку микросервисов?

Добавил хелсчеки? И даже нацелил их на /health друг друга, чтобы работал error propagation?

Избавился от циклических зависимостей и все даже работает?

Но все равно будто бы чего то не хватает, откуда эти 8-10 рпс на самых важных сервисах?

Мультипликация запросов

Каждый раз когда мы дергаем эндпоинт /health у сервиса, он идет опрашивать все имеющиеся у него хелсчеки. А они идут опрашивать свои. А те - свои. В итоге этот снежный ком опросов растет пока на вашем сервере с прикладом не закончатся сокеты или коммутатор не скажет, что все, хватит, 10 Гбит\с хелсчеков достаточно. А ведь хочется не просто сетевую связанность проверять, но и знать о здоровье своих зависимостей.

Троттлинг опроса

Просто не надо каждый раз когда кто-то спрашивает "как дела?" действительно смотреть на свои "дела" и рассказывать. За 15 секунд врядли что-то поменялось, просто отдайте предыдущий ответ.

Ну и как же?

А очень просто. Надо заменить дефолтную реализацию HealthCheckService (она так и называется DefaultHealthCheckService и живёт тут). В этой репе даже есть готовые методы для вливания в DI!

var healthEndpoint = new Uri("/health", UriKind.Relative);
var hcBuilder = builder.Services.AddHealthChecks()
    .AddUrlGroup(new Uri(new Uri("http://ololo:42"), healthEndpoint), name: "ololo")
    .AddUrlGroup(new Uri(new Uri("http://azaza:9000"), healthEndpoint), name: "azaza")
    .AddUrlGroup(new Uri(new Uri("http://ya_voditel_nlo:1234"), healthEndpoint), name: "ufoDriver")
    .ForwardToPrometheus();
 
builder.Services.ThrottleHealthChecks(); // <<== this is the magic, yeah!

Благодарности

Я код скопирнул из dotnet/aspnetcore. Спасибо им! I stole ur code - It's not mine

About

Троттлящие хелсчеки - отличная альтернатива instant хелсчекам, если вы любите на каджый чих делать новый "микросервис"

Topics

Resources

License

Stars

Watchers

Forks