Wpis z mikrobloga

Zagadnienie z architektury, jakie jest Wasze zdanie.

Do usługi "odpowiadającej" strzela usługa "pytająca" po http.
Usługa "odpowiadająca" zażyczyła sobie więcej danych, które produkuje usługa "pytająca". Jak usługa "pytająca" powinna przekazywać te dane usłudze "odpowiadającej"?

1. W body requestu.
Załóżmy, że te dane są ogromneee, to wtedy chyba nie wypada ładować to po http?
A co jeśli inna usługa "pytająca", który nie produkuje tych nowych danych, będzie chciała skorzystać z usługi "odpowiadającej"? Będzie musiała najpierw strzelić do usługi produkującej te dane i dopiero do usługi "odpowiadającej".
Wg mnie do dupy.

2. Przez tabelę.
WTF
Pierwszy raz widzę, by microserwisy się komunikowały przez tabelę, ale padł taki pomysł.
Usługa "pytająca" produkując te nowe dane zapisze je w publicznej tabeli, którą potem usługa "odpowiadająca" sobie czyta.
Plus taki, że jak strzeli inna usługa to będzie miał te dane za darmo.

3. Przez zdarzenie (event) czyli message na kolejkę
Wg mnie tak powinno to być:
usługa "pytająca" produkuje nowe dane -> wypuszcza event z tymi danymi -> subskrybenci (w tym usługa "odpowiadająca") sobie je pobierają i zapisują do swoich wewnętrznych baz lub

CQRS: usługa "pytająca" produkuje nowe dane -> wypuszcza event z danymi -> usługa widokowa zapisuje sobie do bazy tego eventa -> usługa "odpowiadająca" pobiera sobie te dane z usługi widokowej
#programowanie #java
  • 18
@mistyk-gehenny: serwer może zwrócić do klienta dodatkowo id kursora, wtedy w następnym zapytaniu klient używa tego id żeby nawiązać do poprzedniego zapytania. Coś w stylu SCAN w Redisie

As you can see the SCAN return value is an array of two values: the first value is the new cursor to use in the next call, the second value is an array of elements.
@mistyk-gehenny: klasycznie: to zależy

zależy co to dane, jaki jest ich cykl życia itp, np. mogą po prostu paginować dane po REST, mogą subskrybować / streamingować dane przez Websockety/SSE, a jak siedzą w jakieś jednej sieci mogą pchać przez kolejki, bazy danych albo nawet pliki, no ale: to zależy ( ͡° ͜ʖ ͡°)
@mistyk-gehenny: jaki jest sens tego ping ponga? Na jakiej podstawie usługa B wie co usługa A ma jej dalej przekazać? Na pewno można wyrzucić bezpośrednie storowanie w kolejce, bo limity na rozmiar są zazwyczaj niskie.
@mistyk-gehenny: a bo zamieszałeś z tym nazewnictwem "usługa pytająca" i "usługa odpowiadająca" :P to napisałem, że klient i serwer, a widzę, że chodzi o producera i consumera. No to tak, kolejka najlepsza.