An open API service indexing awesome lists of open source software.

https://github.com/s-4i5/go-gateway-test

Having fun with making custom registration, routing, discovery
https://github.com/s-4i5/go-gateway-test

api-gateway golang jwt-authentication microservices postgresql service-discovery service-registry

Last synced: about 2 months ago
JSON representation

Having fun with making custom registration, routing, discovery

Awesome Lists containing this project

README

          

# Service discovery, gateway, load balancing and user auth

## 1. Description

Прототип системы с самописными client-side service discovery и gateway, а так же авторизацией/аутентификацией пользователей

P.S. - хоть половина кода и была выложена недавно, ей так же 8 месяцев, я просто забыл это тогда запушить :skull:

## 2. Quick explanation

### 1. Services

* Auth service - сервис, занимающийся работой с пользователями, их авторизаций/аутентификацией

* Discovery service - сервис, занимающийся мониторингом поднятых сервисов и распределением нагрузки на них

* Gateway service - сервис, отвечающий за перенаправление запросов c выполнением необходимых при этом операций

* Test service - тестовый сервис, который выступает конечным звеном цепочки

### 2. Request flow

Рассмотрим ситуацию, в которой мы зарегистрировались в auth сервисе и хотим достучаться до тестового сервиса

Сначала нас запрос с bearer токеном, который мы получили при регистрации/логине, прилетает в gateway. Данный сервис проверяет, необходима ли авторазиция, если да, то обращается к auth сервису

Далее он запрашивает url для перенаправления запроса, обращаясь к discovery сервису. Тот хранит в себе сведения о всех сервисах - при запуске каждый из них должен зарегистрировать себя у него, а потом каждые две секунды отсылать heartbeat как сигнал того, что он активен. Если сингалов не больше, чем две сукнуды - сервис удаляет из списка. Так же сервис хранит кол-во запросов, которое обработал каждый из клиентов, и основываясь на этом выбирает сервис с наименьщим таковым кол-во для обработки следющего запроса

Получив ответ от discovery сервиса, gateway поднимает обратное прокси и пересылает запрос по полученному url.