Ширина каталога требовала параллельного сбора и стратегии хранения для миллионов объявлений, без отдельного чтения или записи для каждой позиции.
02 / Как я это реализовал
Как я это реализовал
Параллельные парсеры объединяли управление аккаунтами и proxy, ограничение частоты и повторные попытки при сканировании категорий. Я организовал нормализацию и работу с Elasticsearch вокруг пакетных записей и чтений, сохраняя пакетный подход при росте данных. Результат использовался для анализа изменений и тенденций.
Поток системы
Собрать
Нормализовать
Индексировать пакетами
Анализировать изменения
Что это значит на практике
Архитектура и решения
01
Исторический охват категорий
Проект сканировал категории Amazon по каталогу, сознательно исключая книги. Исторический объём данных был порядка миллионов объявлений. Такой охват объединял сбор, нормализацию и хранение в одну задачу: данные категорий должны были стать согласованным набором для пакетного анализа.
02
Сбор при внешних ограничениях
Парсеры должны были учитывать блокировки, несколько аккаунтов, proxy и неудачные запросы. Параллельная обработка, ограничение частоты и повторы были частью архитектуры сбора. Нормализация давала индексации и анализу согласованное представление несмотря на различия собранных данных.
03
Пакетная запись и чтение
Elasticsearch использовался и для пакетной записи, и для пакетного чтения. Пакеты были важны с обеих сторон: собранные записи индексировались вместе, а анализ получал группы записей, чтобы нагрузка не состояла преимущественно из одиночных запросов. Это решение определяло путь данных наравне с выбором поискового движка.
04
Анализ тенденций и завершённый этап продукта
Целью сбора было выявление изменений и тенденций в товарных данных. Сервис работал примерно пять месяцев, затем приоритеты сместились на другую работу. Архивный проект объединяет полную инженерную цепочку: параллельный сбор, нормализацию, пакетный доступ к хранилищу и анализ большого исторического набора данных.
03 / Результат
Результат
Сервис работал около пяти месяцев в историческом масштабе порядка миллионов объявлений. Он поддерживал анализ тенденций по категориям, затем команда сменила фокус, а проект был архивирован.