Powrót do kategorii
Backend
tagi
bot, boty, crawler, downloader, parser, scanner, serwer, serwery, skanowanie,

Crawlery – wstęp do skanowania dużej liczby danych

Mateusz
Mateusz, 26/01/2015

Skanery sieciowe – „grzeczni”  użytkownicy stron internetowych, jest ich coraz więcej, przeglądają coraz więcej – nigdy nie narzekają pomimo, że odpowiadają za sporą część ruchu i wywołują wiele błędów.  W poszukiwaniu informacji powstaje coraz więcej skanerów sieciowych – głównie w celu otrzymania informacji jeszcze szybciej – a najlepiej szybciej niż konkurencja albo po prostu dla zbierania wszelkiej maści danych.

Przykłady zastosowań:

W artykule skupimy się głównie na procesie pobierania danych. Czyli jak to zrobić optymalnie? Na początek musimy stworzyć założenia aplikacji:

Z powyższej listy – wszystkie czynniki są tak samo ważne, ponieważ spełnienie ich jest niezbędne do poprawnego działania całego systemu.

Serwery

Jak każde środowisko – również tutaj musi być odporne na zagrożenia. W tym przypadku blokady nakładane przez odwiedzane serwisy. Na co zwrócić uwagę?

Typ serwera Specyfikacja Zadanie
Parser
  • duże zasoby CPU (parsowanie)
  • przetwarzanie pobranych danych
  • przekazywanie linków do „Queue Manager” np, poprzez API / bazę danych
Queue Manager
  • dobre i stabilne połączenie internetowe wysokiej przepustowości
  • pobranie aktualnej kolejki
  • podział kolejki na paczki
  • przesyłanie żądań pobrania do serwerów „Downloader”
  • odpytywanie serwerów „Downloader” o pobrane dane
Downloader
  • wiele interfejsów ( obsługa wielu adresów IP w różnych geolokalizacjach)
  • dobre połączenie internetowe
  • niskie zasoby
  • duża liczba takich środowisk serwerowych
  • przyjmowanie żądań pobrania i kolejkowanie ich
  • pobieranie danych
  • zapisywanie pobranych danych
  • odpowiadanie na żądanie „Queue Manager” pobranymi danymi

Dodatkowe założenia

  1. Komunikaty są zaszyfrowane za pomocą istniejących systemów, a najlepiej za pomocą kluczy prywatnych/publicznych jak i klucza szyfrującego
  2. Dane w komunikacji są kompresowane za pomocą 7z (wymaga znacznie więcej zasobów CPU niż gzip ale wykazuje najlepszy poziom kompresji plików tekstowych)
  3. Pobieranie następuje za pomocą wielowątkowego zapytania za pomocą curl (przy rozwiązaniu z wykorzystaniem PHP)
  4. Queue Manager dba aby paczki do pobierania były zoptymalizowane, czyli:
    1. ograniczenie odwołań jednej domeny z jednego IP (czyli rotowanie domeny w ramach serwerów Downlaoder)
    2. ustalanie górnego limitu oczekiwania na URL
    3. przesyłanie dokładnych informacji konfiguracyjnych curl do Downlaoder’ów
  5. Downloader
    1. są to male serwery VPS z dostępnymi wieloma adresami IP w różnych lokalizacjach na świecie
    2. instalowane u wielu dostawców  – rozproszenie systemu

Technologie

Obecnie systemy skanujące można wykonać za pomocą wszystkich popularnych technologii internetowych. Każde rozwiązanie ma wady i zalety. Bez względu czy napiszesz system w PHP, Python czy na przykład Node.JS (polecamy!) praktycznie zawsze architektura serwerowa będzie taka sama.

Podsumowanie

Skanowanie jest to bardzo szeroki temat – a powyższe informacje są jedynie wstępem do tego zagadnienia. Najbardziej skomplikowany jest algorytm poprawnego kolejkowania – bo dzięki temu możemy zapobiec blokadom DDOS oraz poprawne wykorzystanie serwerów „Downloader”. Również bardzo ważna jest optymalna liczba adresów IP – nie może ich być za mało (im większa i bardziej rozproszona sieć tym lepiej).

Jeżeli zastosujemy się do powyższych wskazówek – mamy podstawy do budowy dobrego skanera sieciowego, który przekaże te dane do systemu przetwarzania i analizy danych – a to już temat na inny artykuł.

Podobne artykuły

O co start-up zadbać powinien. Część 1: Serwery hostujące

Krótko na temat kilku kwestii związanych z wyborem utrzymania web aplikacji.

CRON – jak uruchamiać zadania co 1 sekundę?

Sprawdź proste, szybkie i dość bezpiecznie rozwiązanie.

Poznajmy się
Poznajmy się
Chcesz porozmawiać o start-upach, projektach lub programowaniu?

Hello World! Sp. z o.o.
ul. Twarda 18
00 -105 Warszawa

+48 22 378 47 27
GOGOmedia
GOGOmedia
Internet Software House

Jesteśmy internetową firmą technologiczną, dostarczamy kompletne rozwiązania informatyczne z zakresu web aplikacji. Kompleksowo obsługujemy klientów z różnych sektorów biznesu w zakresie dedykowanego oprogramowania. Prowadzimy szkolenia, doradzamy, wykonujemy specjalistyczne audyty i dzielimy się zdobytą przez lata wiedzą. Dla wielu jesteśmy partnerem, który pomaga osiągać wyznaczone cele biznesowe w najbardziej optymalny sposób.

Polecamy
Polecamy
narzędzia wspierające naszą codzienną pracę
  • New Relic
  • CloudFlare
  • JIRA
  • Bamboo
  • Axure
  • Zendesk
  • Microsoft Project