Должны ли микросервисы вызывать проверку работоспособности перед отправкой запроса другим микросервисам? - PullRequest
0 голосов
/ 21 апреля 2019

Представьте, что у меня есть микросервис A и микросервис B. Микросервис A должен сделать HTTP-запрос к Microservice B. Если он позвонит в конечную точку проверки работоспособности микросервиса B до выполнения этого запроса и будет выполнять ее только при проверке работоспособностивозвращается здоровым?

Ответы [ 3 ]

3 голосов
/ 27 апреля 2019

Ответ: НЕТ

Используйте схему автоматического выключателя, вы можете найти api в вашем предпочтительном языке и определить ваши решения для обратного вызова.

Автоматический выключатель - это схема проектирования, используемая в современной разработке программного обеспечения. Он используется для обнаружения сбоев и содержит логику предотвращения постоянного повторения сбоев во время обслуживания, временного сбоя внешней системы или непредвиденных системных проблем (вики).

Клиент службы должен вызывать удаленную службу через прокси-сервер, который функционирует аналогично автоматическому выключателю. Когда количество последовательных сбоев пересекает пороговое значение, автоматический выключатель отключается, и в течение периода времени ожидания все попытки вызвать удаленную службу немедленно завершатся неудачей. После истечения времени ожидания автоматический выключатель пропускает ограниченное количество тестовых запросов. Если эти запросы выполнены успешно, автоматический выключатель возобновляет нормальную работу. В противном случае, если произошел сбой, период ожидания начинается снова.

0 голосов
/ 27 апреля 2019

Я бы предложил использовать библиотеку типа resilience4j , в зависимости от того, какой язык вы используете.Его CircuitBreaker / Bulkheads / Retries должны достичь того, что вы ищете.Если есть Loadbalancer или какая-либо другая инфраструктура (например, K8s), я бы оставил для них проверку на предмет проверки работоспособности (готовность и liveline-исследования).

0 голосов
/ 21 апреля 2019

Проблема с проверкой работоспособности заключается в том, что услуга может ухудшиться между успешной проверкой работоспособности и вашим звонком в микросервис.Ваш код должен обрабатывать ошибки независимо от результата проверки работоспособности.

...