Wpis z mikrobloga

Jak projektować mikroserwisy, żeby czas odpowiedzi nie rosnął w górę do nieskonczoności? Załóżmy najprostszy przypadek, mamy dwa serwisy: user service, payment service. Na świat wystawiamy je przez api gateway. Czyli już czas przesyłu rośnie 2x? bo napierw idze http request z przeglądarki po REST do gateway, potem po REST do serwisu.
A teraz dołóżmy do tego jeszcze autoryzację, nie chcemy żeby oba serwisy były przecież odpowiedzialne za autoryzację, więc wydzielamy mikroserwis auth server i teraz flow przykłądowego requestu to: przeglądarka -> api gateway -> auth server -> odpowiedz z auth servera, jesli ok -> user service.

Czyli jeden głupi request do wyswietlenia danych uzytkownika to az 3 sekwencyjne requesty http, czyli czas odpowiedzi mimimum zwiększa się 3x.

Co jak dojdzie nowa funkcjonalność, że user i payment serwis miałby wołać jeszcze kolejny serwis. sekunda czasu odpowiedzi to pewnie minimum. I nasza strona zamienia się w kręcące się loadery zamiast w treść.

Jak to się rozwiązuje w mikroserwisach, że mimo to działa to w miarę szybko? w-------e api gatewaya i robienie autoryzacji w kazdym serwisie? czy stosowanie innego protokołu między api gateway a serwisami, np gRPC?

#programowanie #mikroserwisy
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@PoteznyMagWody: wybiera się odpowiedni rodzaj transportera między mikroserwisami, który pasuje do wymagań. Najprostszy będzie zwyczajne TCP (WebSocket) co już znacznie przyszpieszy sprawę, bo nikt nie robi tego przez zwykły HTTP request.
I tak możesz użyć gRPC - ten sam efekt jeśli chodzi o performance zapytania (tzn wzrost szybkości xd)
  • Odpowiedz