Wątek przeniesiony 2019-09-06 11:02 z przez cerrato.

Architektura, Scheduling 100k wierszy per minute

0

Witam, nie mam pomysłu na rozwiązanie takiego problemu:

Mamy np jakąś usługe (ogłoszenie) które zostało wystawione o godzinie 15.00. Użytkownik jest wstanie ustalić potem godzine o której będzie ogłoszenie odświeżone tzn. wystawil ogloszenie we wtorek godz 14 i w srode o godz 15 (bo tak ustalił) będzie zmieniana po prostu inna zmienna. Teraz pytanie czy lepiej brać jakiś okres czasu np od 14.30 do 15.00 sciagac te ogloszenia w ktorych godzina znajduje sie w tym zakrecie czy ustawić scheduler co minute. Gdzie w tym zakresie może ich być około 100k. A jak postąpić jeśli byłoby ich milion?

2

Co to znaczy, ze "usługa jest odświeżania"? Jaki jest efekt "odswiezenia", co powinno się dziać jak usługa zostaje "odswiezona"?

3

Opisz wymaganie biznesowe i swoją propozycję rozwiązania. Najlepiej zdaniami max 7 wyrazów.

2

Kolego, ogarnij jakieś kropki i przecinki. Pierwszy akapit - kontekst, drugi - opis problemu i trzeci - propozycja rozwiązania.

0

Chodzi o date, np wystawiamy ogloszenie godz 17.30 kazdego dnia o tej godzinie ma sie odswiezac czyli ma sie zmieniac date na aktualna np ogloszenie 2 marca 17.30 nastepnego dnia scheduler o godzinie 17.30 odswieza to ogloszenie..
6.3
Rozwiazanie ustawic scheduler co minute zeby mi sciagal, czy co 30min i sprawdzac w odstepie czasu np jest 17 scheduler sie odali i sprawdza uslugi od 16.30 do 17.00 co bedzie bardziej wydajne np jesli w tym zakresie czasu znajdzie 100k ogloszen

1

Czekaj, czekaj, bo piszesz o jednym pytasz o drugie:

  • opis brzmi tak, jakbyś nie wiedział w jaki sposób obsłużyć jakieś harmonogramowanie zadania i pytał, co ile stosować jakiś np. polling by ustalić czy już teraz ma się coś wykonać
  • pytasz o co zrobić by nie spadła wydajność... pytanie czego?
  • gdzieś się przewija temat dużej liczby rekordów

Dobrze rozumiem, że Twoje rekordy tak naprawdę trzymają informację, kiedy ma się wykonać dane harmonogramowane zadanie, lub coś w ten deseń? Jeśli tak to może nie tyle ograniczanie dokładności pollingu czy coś, co założenie indeksu na kolumnie TIME

0

Rozumiem to w ten sposób, że użytkownik zapisuje taki "szablon" ogłoszenia z godziną, które będzie automatyczne wystawiane codziennie z tą godziną (ważne: nie o tej godzinie). Do tego pewnie liczba ponowień jest ograniczona (?). To może najprościej: przewalać wszystkie szablony co noc i powystawiać ogłoszenia. Jak masz ogłoszenie np. na wtorek godz. 14:00, to do tej godziny jest ono nieaktywne, tzn. użytkownik nie może się w nie wklikać, backend nie zwraca takiego zasobu. Przy takim podejściu milion szablonów nie powinno być żadnym problemem.

0
Xarenz napisał(a):

Chodzi o date, np wystawiamy ogloszenie godz 17.30 kazdego dnia o tej godzinie ma sie odswiezac czyli ma sie zmieniac date na aktualna np ogloszenie 2 marca 17.30 nastepnego dnia scheduler o godzinie 17.30 odswieza to ogloszenie..
6.3

A po co się ma zmieniać ta data? Piszesz o jakimś fragmencie rozwiązania jak je widzisz, ale bez podania jaki jest cel tego "odświeżenia".

Zakładam, że masz jakieś przypadki użycia typu:

  • "Dodaj ogłoszenie ważne X dni" (wówczas masz jakieś atrybuty typu: VALID_FROM = data_wystawienia_ogłoszenia, VALID_TO=data_wystawienia_ogłoszenia + X dni".
  • "Przedłuż ważność ogłoszenia o Y dni" (przedłużasz VALID_TO do data_biezaca + Y dni)
  • "Wyszukaj ogłoszenie" (i tu "ważność" ogłoszenia ma znaczenie, tzn. pokazujesz tylko ogłoszenia, dla których bieżąca data < VALID_TO).

Po co wtedy jakieś schedulery, skoro "bieżące" ogłoszenia wybierasz na podstawie "bieżącej daty"?

Chyba, że próbujesz rozwiązać jakiś inny problem? Jaki?

0

Autorowi chyba chodzi o coś takiego:

Poniedziałek:
Użytkownik wystawia ogłoszenie o godzinie 14:45 i ustala godzinę odświeżania na 15:00 każdego dnia.

(Mija doba ...)

Wtorek:

  • Przed 15:00 data wystawionego ogłoszenia to (Poniedziałek 14:45)
    (Wybija 15:00 - następuje "odświeżanie" ogłoszenia)
  • Po 15:00 data wystawionego ogłsozenia to (Wtorek 15:00)

(Mija doba...)

Środa:

  • Przed 15:00 data wystawionego ogłoszenia to (Wtorek 15:00)
    (Wybija 15:00 - następuje "odświeżanie" ogłoszenia)
  • Po 15:00 data wystawionego ogłsozenia to (Środa 15:00)

I tak dalej...

3

Jest taka biblioteka jak Quartz, która pozwala na tworzenie harmonogramów i zadań. Użytkownicy mogą za pomocą GUI zdefiniować, kiedy dane zadanie, implementacja Job, będzie uruchamiane. Twoim zadaniem jest pobrać taką konfigurację, przetłumaczyć na CronTrigger i wszytko ładnie składować.

Przy czym 100k definicji zadań to już dość dużo.

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

Robot: PetalBot