Управление Stormcrawler через REST

Я хочу управлять StormCrawler извне через вызовы REST

Функциональность должна быть такой:

  • Я могу сказать через REST, что он должен начать обход N доменов параллельно.
    • Процесс будет таким, что первые N доменов будут взяты с веб-ресурса через REST
    • Затем он будет постоянно получать новые корневые URL-адреса доменов извне, когда домены будут завершены, пока он снова не сканирует N страниц.
  • Удалить домен для обхода (удалить все записи для домена для обхода, поскольку они больше не нужны)

Я подумал, что может быть две идеи о том, как это сделать:

  1. Иметь микросервис с интерфейсом REST, который выполняет всю обработку извлечения URL-адресов, а затем вводит их непосредственно в Elasticsearch

    • Это обеспечит полный контроль извне, и сканер продолжит свою работу. Даже если при изменении ES во время выполнения искателя могут возникнуть некоторые конфликты?

      • Выгоды

        • Простое расширение функциональности

        • Простое подключение к внешним веб-ресурсам с помощью микросервиса Spring Boot

      • Недостатки

        • Может быть, трудно создать соответствующие записи для ES (так как это в основном обрабатывается таким компонентом, как StatusUpdaterBolt)
        • Никаких преимуществ архитектуры Storm, таких как гарантированная обработка сообщений
  2. Все обработано в архитектуре Storm с компонентами StormCrawler

    • Это будет означать, что я напишу Spout, который будет управлять выпуском правильных кортежей в топологию в нужный момент времени. Этот носик может предлагать REST API извне, а также извлекать URL-адреса извне.
    • Выгоды

      • Все сделано в Storm, а также имеет свои преимущества

      • Подключение к ES будет обрабатываться компонентами, уже предоставленными StormCrawler

    • Недостатки

      • Непонятно, как позволить компонентам Storm предоставлять интерфейс REST

      • Не легко продлить


Я забыл рассмотреть другие факторы или я даже ошибаюсь с некоторыми из них?

Какой самый лучший вариант?

Если второй вариант является лучшим, как обеспечить интерфейс с внешней стороны? Может быть, этот носик подойдет для использования в этом случае?

0 ответов

Другие вопросы по тегам