Cześć, ostatnio w wolnym czasie eksploruję sobie różne rzeczy i wpadłem na wzorzec gateway stosowany w usługach. Jednak ciężko znaleźć jakąś implementację. Dla przykładu np klient w js odwołuje się do usługi poprzez http://superservice/order/1 a usługa typu gateway wywołuje ten request już na konkretnym serwisie. Tylko zastanawia mnie implementacja tego typu rozwiązania. Bo chyba zbieranie każdego requesta typu http://superservice/whatever ,analizowanie go, a następnie wywołanie konkretnej usługi lub zwrócenie błędu to chyba nie jest najlepszy pomysł ?
Istnieje sobie cos takiego jak service discovery który ma adresy i porty wszystkich mikroserwisow. Gateway pobiera sobie ich namiary i potem działa już jak zwykłe proxy. Przykład implementacji patrz Zuul i Eureka (Java)
Wiem, że istnieje coś takiego jak service discovery. Patrzyłem ostatnio na consul.io. Bardziej chodzi mi o bindowanie requesta na daną usługę. Bo o coś muszę tego service discovery zapytać.
W zuulu jest tak że w konfiguracji bindujesz że na przykład requesty v1/user/** idą na service-users itd. jeżeli o to ci chodzi
Nie mogę edytować ale rozwijąc poprzednia wypowiedz to w podsumowując wygląda to tak że masz gateway na np porcie 8080 i wykonujesz request
gateway:8080/v1/user/1 gateway matchuje request to odpowiedniego serwisu odpytuje sie discovery o jego lokalizacje i wykonuje juz request adresserwisu/v1/user/1
xyzzz napisał(a):
Nie mogę edytować ale rozwijąc poprzednia wypowiedz to w podsumowując wygląda to tak że masz gateway na np porcie 8080 i wykonujesz request
gateway:8080/v1/user/1 gateway **matchuje **request to odpowiedniego serwisu odpytuje sie discovery o jego lokalizacje i wykonuje juz request adresserwisu/v1/user/1
Matchuje tzn. bierze Uri gateway:8080/v1/user/1 i wykrywa user
więc to user service
i odpytuje o adress service discovery. Brzmi sensownie, dzięki.