Wpis z mikrobloga

#programowanie #programista15k #csharp
Siema mirasy,
Mam taki problem - mamy zewnętrzną zależność, która ma ograniczoną przepustowość do X req/min. Inne elementy systemu mają znacząco wyższą przepustowość, więc mamy wąskie gardło. Szczęśliwie owa zależność ma możliwość "batch update". Teraz co bym chciał zrobić - stworzyć komponent, który zgrupuje requesty i uderzy do danego serwisu - powiedzmy raz na minutę, żeby wrzucić wszystko co w międzyczasie się wydarzyło. Pytanie brzmi - jak się nazywa wzorzec, który coś takiego robi - pytam, bo chciałbym zobaczyć jak to jest projektowane i potencjalnie uniknąć błędów, które inni już popełnili i dawno znaleźli rozwiązanie.
  • 14
via Wykop Mobilny (Android)
  • 0
@Yahoo_: ja bym to nazwał batch job scheduling. Ostatnio miałem na firebase+cloud function. U mnie chodziło żeby uaktualnienia z ostatnich 10 minut których może być wiele wysłać tylko raz na te 10 minut. Z racji tego że systemy były w różnych częściach świata to szybko wyczerpałem limit max execution time i musiałem przerobić z pojedynczego przetwarzania na zbiorcze, czyli pobierałem z jednego systemu wszystkie dane jednym requestem, potem z drugiego też
@Yahoo_: W takim wypadku tak jak pisze @sokytsinolop - ustawiasz najlepiej Kafke (która dostarcza persystencje, kolejnosc, skalowalnosc), która jest wysoce dostępna i transakcyjna, a kafka-external gateway ktory sobie dorobisz konsumuje i wrzuca na zewnątrz.

Nie znam nazwy patterna, ale stosowane bardzo powszechnie.
@Yahoo_: Ja bym to #!$%@?ł przy użyciu Hangfire.

Wrzucaj requesty do kolejki i potem zrób RecurringJoba, żeby konsumował te kolejkę. Pięć linijek na krzyż i będzie działać.

I to pewnie ze sto razy lepiej niż Kafki (XD super pomysł, jeszcze niech ktoś zaproponuje żeby sobie zrobił serwis i wrzucił go w k8s jako cronjob, co z tego, że OP nie ma k8s, co nie?)

Ale ja tam #!$%@? wiem, my tu