Tworzenie oprogramowania do pozyskiwania danych

Najważniejsze informacje o oprogramowaniu do automatycznego pozyskiwania danych

Istniejące narzędzia do pozyskiwania danych są albo zbyt drogie, albo wymagają specjalistycznych umiejętności. Nasz klient potrzebował rozwiązania, które pozwoliłoby jego klientom uruchamiać projekty pozyskiwania danych bez budowania złożonych systemów wewnętrznych ani zatrudniania specjalistów technicznych.

Celem było zautomatyzowanie procesu, obniżenie kosztów i udostępnienie danych użytkownikom nietechnicznym. Opracowaliśmy wszechstronne narzędzie do pozyskiwania danych, które obsługuje gromadzenie informacji na dużą skalę przy minimalnej konfiguracji.

Wyzwania podczas tworzenia aplikacji do pozyskiwania danych

Nierównomierne obciążenie

Poprzednie rozwiązania scrapingowe nie wykorzystywały zasobów AWS w optymalny sposób. Z powodu niewłaściwej organizacji maszyny wirtualne były obciążone nierównomiernie. Część instancji EC2 pozostawała niewykorzystana, podczas gdy inne były przeciążone. Taki brak równowagi zwiększał koszty, szczególnie przy pracy na dużą skalę.

Dynamiczna treść

Witryny zmieniają formaty, dynamicznie ładują treści i łączą dane ustrukturyzowane z nieustrukturyzowanymi. Jest to problem, chyba że system potrafi dostosowywać się na bieżąco. Opracowaliśmy program do pozyskiwania danych, który przetwarza dynamiczne treści i rozpoznaje wzorce.

Duże obciążenie

Kolejnym problemem było duże obciążenie bazy podczas zapisywania wyników. Gdy zbyt wiele maszyn próbowało jednocześnie zapisywać dane, dochodziło do konfliktów przy aktualizacji tych samych elementów. Zastosowaliśmy Optimistic Locking do kontroli wersji, aby równoległe zapisy nie nadpisywały się wzajemnie.

Potrzebujesz pomocy przy swoim projekcie?

Skontaktuj się z nami, aby omówić, jak możemy pomóc Ci stworzyć niestandardowy system.

Architektura tej aplikacji do pozyskiwania danych

Komponenty internetowego narzędzia do pozyskiwania danych

Ta aplikacja chmurowa do pozyskiwania danych wykorzystuje architekturę mikroserwisową. Dzięki temu każdy element systemu można aktualizować lub naprawiać bez zakłócania całej operacji. System obejmuje Mediator — aplikację serverless pośredniczącą między Console, czyli używanym przez Ciebie interfejsem internetowym, a usługami backendowymi: WBalancer do rozdzielania zadań, WRegistry do zarządzania workerami i CRepository do wdrażania kodu. Narzędzie do pozyskiwania danych jest zintegrowane z AWS.

Mediator w aplikacji do pozyskiwania danych

Mediator łączy Console z usługami backendowymi. Gdy wysyłasz żądanie przez konsolę tego internetowego narzędzia do gromadzenia danych, Mediator przekazuje je do odpowiedniej usługi i zwraca odpowiedź. Ponieważ działa w modelu serverless, nie musisz zarządzać serwerami bazowymi.

Oprogramowanie do pozyskiwania danych z funkcją równoważenia obciążenia

WBalancer (Work Balancer) rozdziela i równoważy wszystkie zadania wykonywane w systemie. Sprawdza dostępne maszyny wirtualne, nazywane NWorkers, i przydziela im małe zadania, czyli chunki. Każda maszyna otrzymuje ilość pracy dopasowaną do bieżącej wydajności. Jeśli maszyna wcześniej zakończy zadania lub zacznie zwalniać, WBalancer przenosi pracę na inne maszyny.

NannosTech stworzył oprogramowanie do automatycznego pozyskiwania danych

WRegistry (Worker Registry) zarządza cyklem życia NWorkers w systemie. Automatyzuje uruchamianie, wyłączanie i kontrole stanu każdego NWorker, aby był zawsze gotowy do obsługi zadań. Stałe zarządzanie zapobiega przerwom w działaniu i ogranicza przestoje. WRegistry gwarantuje, że niezależnie od zapotrzebowania NWorkers pozostają aktywne i dostępne do wykonania pracy.

Oprogramowanie do pozyskiwania danych z repozytorium kodu

CRepository (Code Repository) to aplikacja serverless, w której budowane są specjalistyczne pakiety oprogramowania nazywane obrazami CRunner. Obrazy te wykonują określone zadania. CRepository pobiera standardowy szablon, czyli bazowy obraz CRunner, i dodaje wyspecjalizowane moduły dla konkretnego zadania. Łączy te elementy w kompletny, gotowy do użycia pakiet oprogramowania — obraz Docker. Po zbudowaniu pakietu CRepository wysyła go do NWorkers. Dzięki temu każdy pakiet przeznaczony do konkretnego zadania jest prawidłowo złożony i gotowy do działania.

Cyfrowe narzędzie do pozyskiwania danych i wykonywania zadań

NWorker to aplikacja C#, która zarządza mniejszymi workerami, nazywanymi CRunners, wewnątrz maszyny wirtualnej. Odpowiada za uruchamianie, zatrzymywanie i sprawdzanie stanu CRunners, czyli programów wykonujących zadania. Dba o prawidłową konfigurację i działanie każdego CRunner. NWorker może jednocześnie zarządzać wieloma CRunners w obrębie jednej maszyny wirtualnej, czyli instancji AWS EC2, dzięki czemu system przetwarza wiele zadań równolegle.

Przetwarzanie wsadowe w internetowym narzędziu do pozyskiwania danych

CRunner (Chunk Runner) to aplikacja C# wykonująca zadania. Każdy CRunner otrzymuje określoną pracę, czyli chunk. NWorker nadzoruje CRunner i dba o to, aby uruchomił się prawidłowo, działał bez problemów i zakończył zadanie. W dużych projektach pracę dzieli się na mniejsze chunki, a wiele CRunners wykonuje je jednocześnie. Pozwala to szybciej realizować duże zadania przez równoległe przetwarzanie wielu małych części.

Narzędzia i technologie, których użyliśmy do stworzenia oprogramowania do pozyskiwania danych

C#

Docker

RabbitMQ

AWS

Amplify

AppSync

SNS

Lambda

DynamoDB

Systems Manager

Rezultaty: zautomatyzowane narzędzie do pozyskiwania danych

Stworzyliśmy skalowalne narzędzie oparte na architekturze mikroserwisowej, służące do pozyskiwania danych. Zapewnia ono wszystko, czego potrzebujesz, aby zautomatyzować procesy gromadzenia danych. Oto jego najważniejsze funkcje:

  • Biblioteka C#. Dzięki gotowym fragmentom kodu nawet początkujący programiści mogą tworzyć boty do ekstrakcji danych.
  • Zarządzanie zasobami. System rozdziela obciążenie między maszyny, zapewniając maksymalną wydajność każdej maszyny wirtualnej.
  • Wsadowe przetwarzanie stron internetowych. Narzędzie umożliwia pozyskiwanie wszystkich dostępnych danych z dowolnej liczby źródeł.
  • Usługi. Zintegrowana sieć proxy umożliwia korzystanie z wielu adresów IP.
  • Zarządzanie projektami. Szczegółowe statystyki i moduły rozliczeniowe pozwalają kontrolować cały proces.
Łatwe w użyciu, ustandaryzowane narzędzie do pozyskiwania danych

Skontaktuj się z nami

support@nannostech.com
+48889712077