Wpis z mikrobloga

Siemanko. Zastanawiam się nad microservices, distributed systems.
Przyjmijmy, że:
- mam Core API, które wykonuje pewne akcje, np. aktualizacja produktu,
- serwisy, które zależą od tej aktualizacji

I teraz do rzeczy. Bez sensu żeby Core API wysyłał requesty do każdego z serwisów. Może byc jeden, wiele, a moge nawet nie wiedziec o ich istnieniu - nawet jesli sa to wewnetrzne serwksy. Pomyślałem, że najlepiej jak Core API opublikuje event, message, wrzuci do kolejki, a to zainteresowane mikroserwisy będą nasłuchiwać.

Moje pytania:
1. Czy to dobre podejście?
2. Co zastosować? Redis? RabbitMQ - tylko że consumer łapie wiadomość i znika z kolejki, a chodzi o to ze kilka mikroserwisów musi cos z tym zrobic, jak dowie sie że produkt zostal zaktualizowany. Chyba, że można to skonfigurować aby wiadomość dotarła do każdego nasł#!$%@?ącego serwisu

Jeśli macie jakieś dobre przykłady, artykuły chętnie podejrzę. Dopiero siadłem do tematu, a ten problem pewnie został już przerobiony milion razy, są best practices, a ja wynajduję koło na nowo ;)

#pracait #php #nodejs #programowanie
  • 11
@mirunek kafka to taki rabbitmq, tylko że kafka ma w dupie, co z message się dzieje, pakuje go na topic i elo, consumerzy sami się odhaczają, co zdążyli przeczytać

i ustawisz, żeby #!$%@?ło to z kafki po tygodniu czy po iluś megabajtach (ile ci potrzebne) i elo
@mirunek: możesz to zrobić też bez eventów jeśli to jedyne wymaganie co do komunikacji.
Zrób usługę w CoreAPI, która odpowie na pytanie jakie produkty się zmieniły od określonego momentu.
Każdy serwis będzie mógł o to zapytać.
Jest to mnie efektywne bo każdy zapyta osobno, ale proste do napisania i nie wymaga instalacji kolejnego elementu, subskrybcji itp.
@mirunek w sumie przemyślałem sprawę i tego rabbita też możesz użyć

będziesz publikował message nie do kolejki, tylko na exchange z routing tagiem i stamtąd ta wiadomość się skopiuje na wiele kolejek

jeden konsument = jedna kolejka

w to bym poszedł, kafka się lepiej sprawdza, jeśli potrzebujesz jakiegoś persistency i chcesz dużo rzeczy obsługiwać out of order