Pull to refresh

Comments 17

Странно, а запросы на который выдан код 429 не ретраятся на других инстансах автоматически?

Да, если вы настроили Quality of Service

"QoSOptions": {
        "ExceptionsAllowedBeforeBreaking": 0,
        "DurationOfBreak": 10000,
        "TimeoutValue": 2000
      }

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

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

Как Ocelot реализует Least Connection? Откуда он знает, сколько запросов обрабатывает сервис?

Скорее всего содержит в себе словарик со счетчиками. И считает нагрузку от себя на другие сервисы.

Вот их реализация: Ссылка

Обрати внимание на метод Release. Он должен срабатывать каждый раз, когда сервис возвращает ответ шлюзу

Тут их тесты (документация для разработчиков), по ним вы сможете понять как это работает

а где вы такие анимации создавали?

.NET разработчики, знакомые с экосистемой .NET, могут легко освоить и начать использовать Ocelot без необходимости изучения сложных конфигураций Nginx

Настройка авторизации между шлюзом и сервисами .NET разработчику будет гораздо легче с Ocelot

Плюс, не думаю что сильно распространена практика использования nginx в windows серверах

Нужно смотреть от конкретных требований и опыта команды. Если для ваших задач использование Nginx обоснована, используйте Nginx

.net и windows, brrrrr.

Docker, Linux, nginx

Понял вашу позицию, спасибо. Замечу только, что сейчас, в 2023 году, сама практика использования .net на windows серверах является не сильно распространеной.

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

Сейчас есть YARP, честно говоря про Ocelot можно забыть.

Вроде сами Микрософты рекомендуют Envoy

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

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

Я не совсем понимаю смысл "можно сделать на любом языке". Зачем нам "любой" язык, если у нас есть .NET и на нём можно сделать практически всё. Хоть ингресс-контроллер. Иначе придётся раздувать штат разработчиками на других языках.

Istio занимается вопросами межсервисной аутентификации, но не прикладной и пользовательской авторизацией.

Однока, если в контексте задач, которые описаны в статье, вы совершенно правы, это всё решается на Istio конфигурацией или на любом современном прокси-сервисе.

Да и Ocelot можно выкинуть, так как есть YARP.

Sign up to leave a comment.

Articles