Розробка софту для збору даних

Декілька фактів про наш проєкт

Більшість доступних інструментів для збору даних або коштують надто дорого, або вимагають глибоких технічних знань. Наш клієнт шукав рішення, яке б дозволило його користувачам запускати проєкти без потреби створювати складні внутрішні системи чи залучати дорогих фахівців.

Основна мета – автоматизувати процес, скоротити витрати та зробити дані доступними навіть для тих, хто не має технічних навичок. Ми розробили універсальний інструмент, що дозволяє збирати великі обсяги інформації з мінімальними зусиллями.

Виклики під час розробки додатка для збору даних

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.

Потрібна допомога з вашим проєктом?

Зв’яжіться з нами, і ми допоможемо розробити систему, що відповідатиме вашим вимогам.

Архітектура нашого рішення

Компоненти онлайн-інструменту для збору інформації

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 у додатку для збору даних

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.

Програмне забезпечення із функцією балансування навантаження

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.

Intsurfing розробив простий інструмент для збору даних

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.

Програмне забезпечення для збору даних із репозиторієм коду

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.

Цифровий інструмент збору даних для виконання завдань

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.

Пакетна обробка у веб-інструменті для збору даних

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.

Технології, які ми використовували в проєкті

C#

Docker

RabbitMQ

AWS

Amplify

AppSync

SNS

Lambda

DynamoDB

Systems Manager

Результати: ефективний інструмент для веб-скрапінгу онлайн

Ми створили масштабований інструмент на основі мікросервісної архітектури, який спрощує автоматизацію процесів збору даних. Ось основні функції, які роблять його ефективним:

  • C# бібліотека. Завдяки готовим кодовим фрагментам навіть розробники-початківці можуть створювати боти для збору інформації.
  • Керування ресурсами. Система рівномірно розподіляє навантаження, забезпечуючи максимальну продуктивність кожної віртуальної машини.
  • Обробка вебсайтів партіями. Інструмент дозволяє витягувати всі доступні дані з будь-якої кількості джерел.
  • Послуги. Інтегрована проксі-мережа дає можливість використовувати кілька IP-адрес, обходячи обмеження.
  • Управління проєктами. Контролюйте хід роботи завдяки детальній статистиці та білінговому модулю.
Зручний стандартизований інструмент для отримання даних

Skontaktuj się z nami

support@nannostech.com
+48889712077