• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Prowizoryczny system kolejkowania z mognodb

Mały hosting, OGROMNE możliwości
0 głosów
262 wizyt
pytanie zadane 25 marca 2021 w JavaScript przez KaawKaa Nowicjusz (120 p.)
Cześć

Mam pytanie odnośnie mikroserwisów i kolekowania. Mianowicie mam 3 mikroserwisy które zajmują się enkodowaniem plików wideo i 1 system który zapisuje otrzymane pliki od klienta.  Muszę teraz jakoś przekazać informację aby mikroserwisy zaczęły enkodować pliki.

Pierwszym pomysłem było rabbitmq albo kafak jednak nigdy nie pracowałem z tymi rozwiązaniami oraz nie chcę komplikować systemu. Pomyślałem że stworzę wspólną baze mongo do które system system wpisze nowy dokument zawierający ściężke pliku oraz jakieś podstawowe dane a serwisy enkodujące będą w pętli czekały na nowe pliki. Jendak pojawia się pytanie czy mikroserwisy będą miały dostęp do ścieżki oraz jak zapobiec aby serwisy enkodujące nie zaczeły enkodować tego samego pliku.

1 odpowiedź

0 głosów
odpowiedź 26 marca 2021 przez edutomek Dyskutant (8,380 p.)

Nie sądzę, abym był w stanie zaproponować jakieś sensowne rozwiązanie, ale miałbym parę uwag odnośnie samego problemu.

1) Sam system do komunikacji (rabbitmq) chyba nie rozwiąże problemu kolejkowania zadań. Chyba, że po otrzymaniu pliku od klienta byłby jakiś "load balancer", który podejmowałby decyzję, któremu mikroserwisowi wysłać zadanie.

Bo w istocie są tu dwa różne problemy: pierwszy z komunikacją (przesyłanie informacji), drugi z kolejkowaniem.

2) Problem z dostępem mikroserwisów "do ścieżki" (tak to jest napisane) to raczej kwestia konfiguracji całego systemu.

3) Jak zapobiec sytuacji, w której kilka mikroserwisów "rzuca" się na ten sam plik? Bardzo prosto. Każdy mikroserwis powinien mieć własną kolejkę, z której będzie pobierał pliki do enkodowania (np. poprzez polling, co jakiś czas).

Przychodzi nam kolejne zadanie, to można sprawdzić, który mikroserwis akurat się "nudzi" (albo ma najmniejszą kolejkę, albo zastosować jeszcze inną heurystykę...) i wrzucić mu to do kolejki.

Innymi słowy - kolejkowanie powinno się odbywać POZA mikroserwisami (bo inaczej trzeba będzie rozwiązać problem ewentualnych konfliktów przy podziale zadań).

Kwestia komunikacji z mikroserwisem to już odrębny temat. (Może być poprzez API, może być poprzez wspólną bazę danych i polling po stronie mikroserwisu - możliwości jest wiele.)

Podobne pytania

0 głosów
1 odpowiedź 279 wizyt
pytanie zadane 3 stycznia 2021 w JavaScript przez Linwa Nowicjusz (160 p.)
0 głosów
1 odpowiedź 342 wizyt
pytanie zadane 31 marca 2020 w JavaScript przez Mariusz Podgórski Początkujący (400 p.)
0 głosów
0 odpowiedzi 182 wizyt
pytanie zadane 3 września 2019 w JavaScript przez Louel Nowicjusz (140 p.)

93,718 zapytań

142,630 odpowiedzi

323,262 komentarzy

63,265 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...