Управление Stormcrawler через REST
Я хочу управлять StormCrawler извне через вызовы REST
Функциональность должна быть такой:
- Я могу сказать через REST, что он должен начать обход N доменов параллельно.
- Процесс будет таким, что первые N доменов будут взяты с веб-ресурса через REST
- Затем он будет постоянно получать новые корневые URL-адреса доменов извне, когда домены будут завершены, пока он снова не сканирует N страниц.
- Удалить домен для обхода (удалить все записи для домена для обхода, поскольку они больше не нужны)
Я подумал, что может быть две идеи о том, как это сделать:
Иметь микросервис с интерфейсом REST, который выполняет всю обработку извлечения URL-адресов, а затем вводит их непосредственно в Elasticsearch
Это обеспечит полный контроль извне, и сканер продолжит свою работу. Даже если при изменении ES во время выполнения искателя могут возникнуть некоторые конфликты?
Выгоды
Простое расширение функциональности
Простое подключение к внешним веб-ресурсам с помощью микросервиса Spring Boot
Недостатки
- Может быть, трудно создать соответствующие записи для ES (так как это в основном обрабатывается таким компонентом, как StatusUpdaterBolt)
- Никаких преимуществ архитектуры Storm, таких как гарантированная обработка сообщений
Все обработано в архитектуре Storm с компонентами StormCrawler
- Это будет означать, что я напишу Spout, который будет управлять выпуском правильных кортежей в топологию в нужный момент времени. Этот носик может предлагать REST API извне, а также извлекать URL-адреса извне.
Выгоды
Все сделано в Storm, а также имеет свои преимущества
Подключение к ES будет обрабатываться компонентами, уже предоставленными StormCrawler
Недостатки
Непонятно, как позволить компонентам Storm предоставлять интерфейс REST
Не легко продлить
Я забыл рассмотреть другие факторы или я даже ошибаюсь с некоторыми из них?
Какой самый лучший вариант?
Если второй вариант является лучшим, как обеспечить интерфейс с внешней стороны? Может быть, этот носик подойдет для использования в этом случае?