Wątek przeniesiony 2020-08-06 16:57 z PHP przez cerrato.

Cykliczne wysyłanie zapytań do wielu serwerów

0

Cześć. Nie wiem jakim sposobem to najlepiej zrobić więc spytam was, jak wy to widzicie.
Otóż będę miał tabelę w bazie z ok 3000 rekordami na początek. Z czasem będzie ich przybywało coraz więcej. Każdy rekord będzie zawierał m.in adres ip.
Co 2-5 min będę wysyłał zapytania do tych serwerów (częściej nie mogę) i otrzymywał małą porcję danych. Jedno zapytanie do serwera (1 wykonanie pętli) = 1 zapis do bazy (czy to będzie ok? Czy jest jakiś lepszy sposób?).

I teraz tak:
Czy odpytywać wszystkie serwery na raz co 5 min (nie mam też pewności ile to odpytywanie będzie trwało) czy może zrobić by co minutę odpytywało serwery, które ostatni raz były odpytane ponad 2 min temu oraz żeby na taką jedną pętlę co minutę był limit np. 500 serwerów?

3

Czyli te 3000 rekordów to adresy serwerów, które potem chcesz odpytywać?
Najpierw sprawdziłbym ile czasu trwa odpytanie pojedynczego serwera, spróbował jakoś to uśrednić.
Może niektóre z zasady będą odpowiadać wolniej?
Odpytanie po kilkaset to chyba nie jest najlepszy pomysł, bo jeden gdzieś po drodze się wywali to może Ci wywalić cały skrypt.
Czy dane insertowane do bazy będą miały wpływ na siebie nawzajem? Np. odpowiedz z jednego serwera a potem update rekordu po pobraniu innych danych, czy tylko insert per odpowiedź?
Ile tych danych i ile będzie trwać ten insert per odpowiedź?

2

Zadaj sobie pytania:

  • czy baza to uciągnie jak dostanie 3000+ insertów w jednym czasie
  • czy wyrobisz się w 2 minuty
  • czy możesz to zrównoleglić a jak tak to w jakim stopniu
0

Zapytanie do jednego serwera trwa w 95% poniżej 1 sekundy. Ale zdarzają się też wyjątki na 10 sekund. Czy baza to uciągnie - nie wiem, musi. Już wpadłem na pomysł, który jak na razie dobrze się sprawdza. Stworzyłem pętle w której wykorzystałem laravel jobs i każdy serwer dodaje sobie jako zadanie do kolejki co 2 miuty. Następnie z kolejki są wybierane po kolei rekordy i są odpytywane. Nawet o dziwo zaskakująco szybko to wszystko działa. Fajne jest też to, że takich "workerów" można uruchomić wiele. Więc zadania z kolejki mogą się robić np. 4x szybciej.

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