Comments 17
Странно, а запросы на который выдан код 429 не ретраятся на других инстансах автоматически?
Да, если вы настроили Quality of Service
"QoSOptions": {
"ExceptionsAllowedBeforeBreaking": 0,
"DurationOfBreak": 10000,
"TimeoutValue": 2000
}
QoSOptions - опция качества обслуживания, которые включают в себя настройки, позволяющие определить, сколько исключений допускается перед переключением в режим "паузы" (break) и как долго будет длиться эта пауза.
Если вам нужна более сложная логика обработки ошибок, включая перенаправление в зависимости от конкретных статусов кодов ошибок, вам может потребоваться реализовать собственный middleware
Как Ocelot реализует Least Connection? Откуда он знает, сколько запросов обрабатывает сервис?
а где вы такие анимации создавали?
А зачем это нужно если есть Nginx?
.NET разработчики, знакомые с экосистемой .NET, могут легко освоить и начать использовать Ocelot без необходимости изучения сложных конфигураций Nginx
Настройка авторизации между шлюзом и сервисами .NET разработчику будет гораздо легче с Ocelot
Плюс, не думаю что сильно распространена практика использования nginx в windows серверах
Нужно смотреть от конкретных требований и опыта команды. Если для ваших задач использование Nginx обоснована, используйте Nginx
.net и windows, brrrrr.
Docker, Linux, nginx
Понял вашу позицию, спасибо. Замечу только, что сейчас, в 2023 году, сама практика использования .net на windows серверах является не сильно распространеной.
Мы пробовали, точнее использовали - оцелот был в продукте пару (или немного больше) лет. В общем - там куча багов, приходится все обставлять костылями, про более менее серьезную нагрузку вообще молчу, в итоге - заменили на Traefik, убрали кучу костылей, получили достаточную нам производительность, отсутствие глюков, и в итоге конфигурация оказалось даже проще, ну и бонусом - наличие документации, коей не может быть на самопале, сделанном с использованием оцелота. Выбирать вам.
Немного разные задачи решаются. На .NET кроме самой балансировки можно много чего запрограммировать, авторизацию любой сложности, любую телеметрию без каких-либо ограничений, да что угодно в принципе. И это всё на том же самом ЯП и платформе, на котором пишется ПО.
Ну то, что вы описали решается сайдкаром, который можно на любом языке сделать. Или еще лучше взять готовое агноистичное решение, типа Istio
Я не совсем понимаю смысл "можно сделать на любом языке". Зачем нам "любой" язык, если у нас есть .NET и на нём можно сделать практически всё. Хоть ингресс-контроллер. Иначе придётся раздувать штат разработчиками на других языках.
Istio занимается вопросами межсервисной аутентификации, но не прикладной и пользовательской авторизацией.
Однока, если в контексте задач, которые описаны в статье, вы совершенно правы, это всё решается на Istio конфигурацией или на любом современном прокси-сервисе.
Да и Ocelot можно выкинуть, так как есть YARP.
Алгоритмы балансировки нагрузки в .NET. Кэширование и Rate Limiting в Ocelot, сравниваем со стандартными средствами .NET