Mikroserwisy - komunikacja między nimi

0

Hej, zacząłem pracować w nowej firmie gdzie używa się mikroserwisów. Dużego doświadczenia w Springu nie mam, sam napisałem kilka rest api jako monolity. Znacie jakieś dobre kursy/tutoriale gdzie są one wyjaśnione zgodnie z aktualnymi trendami ? I czego używa się do komunikacji między nimi ? Też muszę wystawić dla każdego mikroserwisu jakieś api restowe i właśnie tak się nimi komunikować ? Co jeśli info idzie przez 4-5 mikroserwisów ? Przecież to za długo będzie szło. I co jeśli chce skorzystać z jakiś użytecznych klas, które są częścią jakiegoś mikroserwisu ? Muszę kopiować kod czy jak to wszystko powinno wyglądać ?

1

hmm,

Przecież to za długo będzie szło

mikroserwisy nie są lekarstwem na mniejsze latency, zapytaj się @katelx co to REST - to pewnie powie że taka chińska bajka ;D

Znacie jakieś dobre kursy/tutoriale gdzie są one wyjaśnione zgodnie z aktualnymi trendami

Trend to właśnie REST :) bo to proste - a ostatnią rzeczą jakiej chcesz to podczas budowania takiego systemu (mając jeszcze choroby wieku dziecięcego) to debugowanie jakichś super wydajnych protokół, ave REST !

Też muszę wystawić dla każdego mikroserwisu jakieś api restowe i właśnie tak się nimi komunikować ?

dokładnie :) Dodatkowo, wystawiając API, wystawiasz kontakt, popularne są takie ładne rzeczy jak
https://raml.org/
https://swagger.io/swagger-ui/

Co jeśli info idzie przez 4-5 mikroserwisów ?

Dochodzisz do wniosku że jednak bardzo lubisz monolity ;D Generalnie jedynym z największych problemów z jakim dzisiaj się spotykam jest monitorowanie takich requestów które przechodzą przez ileś tam serwisów i tutaj polecam zapoznać się z https://github.com/openzipkin/zipkin (jeżeli chcesz się takimi mikroserwisami pobawić, a jak masz taki pet-projekt to już wgl sobie go wepnij !)

? Muszę kopiować kod czy jak to wszystko powinno wyglądać ?

Wspólny kod mamy w naszym własnym JARze - mamy kilka bibliotek "tematycznych", np: rest clienta, support dla oautha i inne takie i każdy serwis sobie z tego korzysta - to bardzo wygodne. Oczywiście podbijanie wersji trochę kosztuje, ale idzie przeżyć :D

P.S
oczywiście narzut protokołu jest problemem i na jakimś etapie się rezygnuje z REST'a - Twitter ma REST'a tylko na wejściu a potem lata to na Netty (finatra) i już nie RESTem.
Tylko, po drodze jest jeszcze sporo do rozwiązania żeby martwić się o wydajność ^^

P.S.2

Znacie jakieś dobre kursy/tutoriale gdzie są one wyjaśnione zgodnie z aktualnymi trendami ?

Podaj jakieś konkretne problemy albo tematy będzie łatwiej coś wrzucić.

0

Dzieki za odp. Pisze prosto z silki takze przepraszam za braknogonow. Chodzilo mi glownie o wydajna komunikacje miedzy nimi i potrzebne narzedzia

0

Sam Newman napisał spoko książkę o mikroserwisach, chociaż on to tak raczej bardziej abstrakcyjnie. Zależy jakich opóźnień oczekujesz, ale IMHO osobny klient HTTP na każdy z serwisów, z których korzystasz + circut breaker i monitorowanie tegoż. A jeżeli jakieś request przelatuje przez 5 serwisów to może zła architektura?

I co jeśli chce skorzystać z jakiś użytecznych klas, które są częścią jakiegoś mikroserwisu ? Muszę kopiować kod czy jak to wszystko powinno wyglądać ?

Jeżeli to są tylko klasy, których możesz użyć wszędzie i nie kopiujes sobie klas domenowych to kopiuj. Jeżeli skopiujesz coś więcej niż raz to warto by było się zastanowić czy nie skorzystać z jakiegoś sposobu współdzielenia kodu - np biblioteki
'A little copy is better than little dependency'

0

A jeżeli jakieś request przelatuje przez 5 serwisów to może zła architektura?

Brak korelacji.

0

Tego typu pytania zawsze skłaniają mnie do jednego kontrpytania: a w ile osób robicie te mikroserwisy?

0

Api gateway

Czy cos takiego potrafi agregowac wyniki z roznych microservices? A raczej pozwala mi na implementacje czesgos takiego?

Szukalem takiego fature w kilku implementacjach i chyba w wielu czegos takiego nie ma.

Jak w takim razie rozwiazac cos takiego gdy UI wymaga dostarczenia zagregowanych rezultatow?

A moze jesli jest potrzebne cos takiego to wina blędnych bounded contexts?

0

Btw REST jest fajny, ale moze warto pomyslec nad grpc.
Komunikacja miedzybackendowa w mikroserwisach po REST potrafi zabolec. Warto tez rozwazyc jakis messaging.

0

ZeroMQ. Jak z tym handlować kiedy połączenie... umarło? A samo jeromq nas o tym w zaden sposob nie informuje ani nie idzie specjalnie tego jakos sprawdzic tylko... przestaje dzialac?

1 użytkowników online, w tym zalogowanych: 0, gości: 1