микросервисной архитектурой. Каждый сервис в своём docker образе.
Есть
- сервис авторизации/обмена jws (jwt с шифрованием) токенами (С#)
- сервис А
- сервис Б
...
Не все они написаны на C#. Некоторые на C++ (CUDA), некоторые на Python, некоторые на go.
Сейчас работа происходит примерно так
1. Есть api geatway (на шарпах, на кестрел), к нему приходит запрос. Он проверяет jws токен на валидность (достаёт оттуда id смотрит в редис дб открытые сессии (список id)). если токен валиден то пускает запрос дальше - и он идёт к другому сервису.
Не аутентифицированные разрешены лишь запросы на login / registr. Тогда он отправляется к сервису логина и тот выдаёт geatway токен и рефреш токен а geatway кладёт id в redis db.
Верен ли такой подход? Как кестрел будет вести себя при высоких нагрузках? Возможно стоит переписать гитвей на go? Или использовать другой гитвей? Есть готовые...
Я не понимаю как при таком подходе паралелить гитвей? Допустим он перестал быстро отвечать... Стоит ли например делать nginx и запустить несколько гитвеев и паралелить их?
Гитвей ничего не делает кроме редиректа и проверки токена на валидность.
https://github.com/ThreeMammals/Ocelot
?
Обсуждают сегодня