Size: a a a

2020 April 14

PT

Pax au Telemanus in Go-go!
но вообще я бы просто забил на ретраи
источник

IK

Ilya Kaznacheev in Go-go!
Pax au Telemanus
3 ретрая
На границе кубернетиса
источник

PT

Pax au Telemanus in Go-go!
Ilya Kaznacheev
На границе кубернетиса
ну там у меня лайф чек на 3 попытки с кд 10 сек
источник

PT

Pax au Telemanus in Go-go!
а в приложении я ретраи больше не делаю
источник

PT

Pax au Telemanus in Go-go!
потому что нужен какой то кд между ретраями и тогда запросы вылетают по лимиту времени
источник

IK

Ilya Kaznacheev in Go-go!
Владимир Столяров
общение через очереди
Ну да, но не панацея. Ну и в моем случае это будет слишком тяжелая сущность
источник

IK

Ilya Kaznacheev in Go-go!
Pax au Telemanus
потому что нужен какой то кд между ретраями и тогда запросы вылетают по лимиту времени
Так а как делать тогда? Просто возвращать ошибку сразу? Не пытаться никак проверить доступность сервисов друг относительно друга при старте, например, или еще когда?
источник

IK

Ilya Kaznacheev in Go-go!
Я, правда, не уверен, что это задача сервиса, делать такие проверки
источник

IK

Ilya Kaznacheev in Go-go!
Скорее это инфраструктура должна обеспечивать определенный аптайм каждого из сервисов
источник

IK

Ilya Kaznacheev in Go-go!
Но хочется некий graceful degradation на ключевом сервисе реализовать
источник

PT

Pax au Telemanus in Go-go!
Ilya Kaznacheev
Так а как делать тогда? Просто возвращать ошибку сразу? Не пытаться никак проверить доступность сервисов друг относительно друга при старте, например, или еще когда?
я только чекаю кубером что бы были живые
и сразу ошибку скидываю

но у меня нет с этим проблем у меня очень хорошие квантили доступности
источник

PT

Pax au Telemanus in Go-go!
+ у меня все таки не микросервисы а более менее полноценные сервисы
источник

PT

Pax au Telemanus in Go-go!
и если какой то упал то ломается только конкретная часть
источник

k

kvaps in Go-go!
Pax au Telemanus
3 ретрая
wire-server кстати так с базами и работает, если база недоступна, пробует ещё пару раз. А куб каждый реквест на новый эндпоинт роутит.
источник

PT

Pax au Telemanus in Go-go!
kvaps
wire-server кстати так с базами и работает, если база недоступна, пробует ещё пару раз. А куб каждый реквест на новый эндпоинт роутит.
магическая цифра)
источник

PT

Pax au Telemanus in Go-go!
ну вообщем у меня нету опыта где если с 1 трая сервис не ответил то со второго сразу все ок
источник

ЛА

Локоть Анатолий... in Go-go!
Ilya Kaznacheev
Господа, подскажите, пожалуйста, какие подходы практикуются для обеспечения устойчивости микросервисов, когда один из сервисов отвалился?
Пробовать ретратить зарпосы на него, либо ждать, либо возвращать 500 на все реквесты?
И вообще стоит ли при запуске сервиса пинговать зависимые на предмет их доступности, и ждать, пока раздуплятся, или уже в момент обработки запроса?

Как вы делаете? Может есть толковые выступления про это?
Привет, я когда-то юзал вот такое
https://github.com/streadway/handy/tree/master/retry
Это было с сервисом по спецификой того, что он бывает временно недоступен.

Для пула сервисов писал отдельную обёртку, когда у меня код вызова сервиса запускался в лямбда функции, результат которой отслеживался снаружи. И пул сервисов выстраивал рейтинг из сервисов в зависимости от того, что вернула лямбда. Вернулась ошибка - ставим сервис в конец. В случае ошибки вызываем лямбду для всех сервисов из списка пока не получим успешный результат. Ну это тоже очень специфичный сервис был, так что реализация зависит от вашего сервиса, от его возможной недоступности и бизнес требований. В обычной ситуации думаю можно просто вернуть ошибку и закончить процессинг (если ничего иного логично не вытекает из поведения сервиса или бизнес требований)
источник

IK

Ilya Kaznacheev in Go-go!
Локоть Анатолий
Привет, я когда-то юзал вот такое
https://github.com/streadway/handy/tree/master/retry
Это было с сервисом по спецификой того, что он бывает временно недоступен.

Для пула сервисов писал отдельную обёртку, когда у меня код вызова сервиса запускался в лямбда функции, результат которой отслеживался снаружи. И пул сервисов выстраивал рейтинг из сервисов в зависимости от того, что вернула лямбда. Вернулась ошибка - ставим сервис в конец. В случае ошибки вызываем лямбду для всех сервисов из списка пока не получим успешный результат. Ну это тоже очень специфичный сервис был, так что реализация зависит от вашего сервиса, от его возможной недоступности и бизнес требований. В обычной ситуации думаю можно просто вернуть ошибку и закончить процессинг (если ничего иного логично не вытекает из поведения сервиса или бизнес требований)
Интересно звучит. Мне не подходит, но сама тема с ранжированием сервисом мне нравится
источник

PT

Pax au Telemanus in Go-go!
Ilya Kaznacheev
Интересно звучит. Мне не подходит, но сама тема с ранжированием сервисом мне нравится
я от tinrab взял когда то ретрай и так и сижу на нем
источник

ЛА

Локоть Анатолий... in Go-go!
Ilya Kaznacheev
Интересно звучит. Мне не подходит, но сама тема с ранжированием сервисом мне нравится
Либа по ретраям, что скинул хороша тем, что конфигурирует кол-во раз и изменение таймера.
Те например, вторая попытка через секунду, третья через 2 и тп.
источник