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

Architektura, Scheduling 100k wierszy per minute

Odpowiedz Nowy wątek
2019-09-05 17:28
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?

edytowany 1x, ostatnio: cerrato, 2019-09-06 08:22

Pozostało 580 znaków

2019-09-05 18:52
2

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

Pozostało 580 znaków

2019-09-05 20:08
3

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

Pozostało 580 znaków

2019-09-05 21:21
2

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

w pełni popieram. To - również po próbach poprawienia - wygląda jak chaotyczna odpowiedź kogoś napompowanego emocjami czy paniką, a nie programisty pytającego o pomoc - AnyKtokolwiek 2019-09-06 01:15

Pozostało 580 znaków

2019-09-05 22:05
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

edytowany 1x, ostatnio: Xarenz, 2019-09-05 22:15
To jest niezdatne do czytania ze zrozumieniem. - kixe52 2019-09-06 08:42

Pozostało 580 znaków

2019-09-05 22:13
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


Prosząc o pomoc w wiadomości prywatnej odbierasz sobie szansę na otrzymanie pomocy od kogoś bardziej kompetentnego :)
Rekord trzyma date (time) godzine w ktorej dana usługa musi zostać odswiezona czyli ja tam zmieniam po prostu inna zmienną :D chodzi o to ze jesli w danym zakresie czasu np 16.30-17.00 bede ich mial 100k czy to wpłynie na wydajnosc ogolna serwera/bazy czy lepiej po prostu co minute gdzie tych rekordow bedzie po prostu mniej :D - Xarenz 2019-09-05 22:18

Pozostało 580 znaków

2019-09-05 22:19
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.

no właśnie nie o to chodzi chodzi o takie coś co ma np OLX czy sprzedajemy ze ma ogloszenie wystawione i np przez 3 dni odswieza mu sie o tej godzinie co wybierze :D - Xarenz 2019-09-05 22:23
Yyy ale skąd wiesz jak to działa pod spodem? - Charles_Ray 2019-09-05 22:24
Nie wiem, dlatego myślę i prawdopodobnych rozwiązaniem jest może jakis scheduler dlatego stworyłem ten wątek :D zastanawiam się, jak wy byście to rozwiązali :D - Xarenz 2019-09-05 22:29
Ale ja podałem Ci rozwiązanie. Jesteś zafiksowany na polling, a po drugie nie rozumiesz, że to co widzisz na froncie ma się nijak do silnika pod spodem. I proszę, mniej emotek. - Charles_Ray 2019-09-05 22:33
Niestety nie zrozumieliśmy się.. napisałeś że użytkownik nie może w nie klikać itp ja podałem całkowicie inny przyklad ogloszenie dziala caly czas jest wystawione, jedynie zmienia sie data wystawienia, mamy wtorek godzina 14 osoba wystawia ogloszenie ustala ze kazdego dnia o 14 ma byc odswiezana, wiec w srode o godzinie 14 ogloszenie zostaje odswiezone i je widac jakby było dodane wlasnie w srode o 14... tak jak ma OLX nie chodzi o to zeby blokować do godziny 14 ze nikt nie moze wejsc.. - Xarenz 2019-09-05 22:37
Nie blokować tylko nie zwracać tego zasobu. - Charles_Ray 2019-09-06 07:55

Pozostało 580 znaków

2019-09-06 07:44
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?

Pozostało 580 znaków

2019-09-06 08:27
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...

Jak dla mnie sprowadza się to do: 1) stwierdzenia czy ogłoszenie ma być widoczne 2) stwierdzenia z jaką datą ma być widoczne - po wuja wtedy jakieś schedulery? - yarel 2019-09-06 08:31
tak ogłoszenie ma być widoczne oraz ma być z datą (do godziny odswiezenia: z datą wczesniejsza, po godzinie odswiezenia:: z datą odśw) - Xarenz 2019-09-06 10:58

Pozostało 580 znaków

2019-09-06 08:28
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.

Raczej 100k ogloszen. Zadanie moze byc jedno lub np. 24x4. - vpiotr 2019-09-06 10:25
Właśnie o to mi chodzi, teraz pytanie w jakich odstępach czasu wykonywać to zadanie, czy co minute i sciagac z bazy te ogloszenia co maja akurat tą datę wpisaną jako data odsw, czy np zakres czasu - co 30minut :D w tym problem - Xarenz 2019-09-06 10:57
@Xarenz: nie, to nie jest problem, bo system harmonogramowy sam dostosuje się do konfiguracji podanej przez użytkownika. Jak użytkownik zażyczy sobie co minutę, to będzie co minutę, jak co sekundę, to będzie co sekundę. - Koziołek 2019-09-06 11:04
Użytkownik nie ma dostępu do ustalania czasu działania schedulera jedynie wybiera godzinie o ktorej ogloszenie ma zostac odswiezone to ja ustalam co ile ma działać żeby w tym czasie wykonać operacje na ogłoszeniu :D - Xarenz 2019-09-06 11:06

Pozostało 580 znaków

2019-09-06 11:04
0

Rob co 5 minut z limitem czasu wykonania na 4m 30s.
Jak sie przestaniesz wyrabiac (zadania beda przyrastac w ciagu doby) to pomysl nad zrownolegleniem.
Czas t = 5 minut powinien byc duzo wiekszy od czasu podniesienia i zamkniecia zadania.


Szacuje się, że w Polsce brakuje 50 tys. programistów
Ok, A co jeśli np zbiore w danym okresie czasu 100k ogloszen i na wszystkich zrobie update do bazy to nie będzie za dużo? może podzielić wyniki z bazy np zrobić paging pobierać 10k z bazy i rzucić update, ma sens? stack to hibernate spring - Xarenz 2019-09-06 11:11

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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