предисловие
Программирование должно стать профессией на всю жизнь, а не просто едой 30-летней молодежи.
Эта статья была включенаGitHub https://github.com/ponkans/F2E, добро пожаловать, звезда, продолжайте обновлять
Для Node очень удобно писать краулеры, большинство статей в интернете сканирует один процесс, поэтому я написал один после работы.многопроцессорный сканер, исходный код в конце текста~
Я надеюсь, что вы сможете извлечь что-то полезное из каждой статьи. Это многопроцессорный поисковый робот, основанный на Node.js. Я надеюсь, что после прочтения вы получите следующие преимущества:
- Простое использование кластера Node, межпроцессное взаимодействие
- Для некоторых простых поисковых роботов вы можете сразу реализовать это самостоятельно
- Простое использование суперагента
Диаграмма архитектуры
целевой анализ
Неудивительно, что я одержимяпонская анимация, я часто хожу в Дубан посмотреть рейтинг, а потом прячусь дома и тихонько наслаждаюсь, тсс~~
В любом случае, я не знаю, сколько анимаций вы видели выше.Один кусочекЯ задолбался!
Цель состоит в том, чтобы просканировать первые 10 страниц рейтинга японской анимации Douban.
Давайте возьмем пакет и посмотрим, какова логика запроса рейтинга японской анимации Douban?
Захват первой страницы
Захват второй страницы
Захватив интерфейсные пакеты на первых двух страницах, можно однозначно сделать вывод, что:
- Самый популярный API японской анимации — https://movie.douban.com/j/search_subjects.
- За исключением page_start, который увеличивается на 20, другие входные параметры остаются без изменений.
- Метод запроса получить
Создайте запрос на получение
superagentЭто очень удобный прокси-модуль клиентских запросов в Node.js, который очень удобен для выполнения запросов.
Согласно результатам приведенного выше анализа, с помощью суперагента мы можем легко построить запрос.
Создайте несколько процессов
Чтобы узнать об основных принципах многопроцессорной архитектуры Node, вы можете обратиться к другой моей статье.Серия "Large Front-end Advanced Node.js" Низкоуровневая реализация многопроцессной модели.
Используя модуль кластера, предоставляемый Node, легко создать несколько дочерних процессов.
Вообще говоря, если процессор имеет несколько ядер, создается несколько подпроцессов, но реальный сервер на самом деле требует большего внимания ~
Постраничное сканирование подпроцесса
Это включает в себя небольшую логику алгоритма, которая на самом деле очень проста~
В конце концов это реализуется.Например,если у моего мака 4 ядра,то я открою 4 подпроцесса для обхода.Следующий небольшой алгоритм заключается в том,чтобы реализовать как сделать 4 подпроцесса как можно больше.Равномерно разделить количество просканированных сетевых запросов.
Профессионально, это востребованоБалансировка нагрузки, если все ваши запросы размещаются на одном подпроцессе, то вы открываете столько подпроцессов, разве не имеет смысла?
закрыть дочерний процесс
После окончания обхода не нужно держать процесс открытым, его можно закрыть для экономии ресурсов.
cluster.disconnect();
многопроцессная проблема нарушения порядка
При многопроцессорном сканировании даcpuосуществлять связь между различными подпроцессамирасписание, поэтому просканированные данные на самом деле неупорядочены. Например, необходимо просканировать в общей сложности первые 20 страниц данных, и первая страница не обязательно должна быть просканирована первой.
Мы можем добавить поле movieIndex для идентификацииПорядок сканирования.
Эффект
Взгляните на эффект сканирования первых 10 страниц.
Суммировать
Эта статья была включенаGitHub https://github.com/ponkans/F2E, добро пожаловать, звезда, продолжайте обновлять
Многопроцессорная архитектура Node облегчает проблему использования ресурсов ЦП.Для некоторых трудоемких операций вы можете попробовать использовать многопроцессорные методы для их решения.
При использовании нескольких процессов синхронизация данных является очень важной проблемой, и если с ней не справиться должным образом, это легко приведет к ряду ям, подобных той, что была написана Weiguai ранее.Система шипов Double Eleven серии "Big Front-end Advanced Node.js" (для продвинутых пользователей обязательно к просмотру), упомянутая в нем проблема перепроданности — это проблема многопроцессорной синхронизации данных.
Эта статья — всего лишь очень простой небольшой краулер, вводный пост, и позже я напишу несколько более подробных постов о многопроцессорных сражениях Node~
Недавняя оригинальная рекомендация горячего текста, biubiubiu:
- Серия "Hematemesis" Коллекция интерфейсных инструментов библиотеки компонентов (ПК, мобильные устройства, JS, CSS и т. д.)
- Серия «Большие интерфейсные базовые компоненты» 80 строк для реализации водяного знака веб-страницы в пакете npm.
- Серия "Big Front-end Advanced Node.js" Асинхронный неблокирующий (синхронный/асинхронный/блокирующий/неблокирующий/чтение/выбор/epoll)
Если вам это нравится, добавьте подписку, поставьте лайк, спасибо 💕😊
Свяжитесь со мной / публичный аккаунт
Ответьте на [исходный код] в фоновом режиме официального аккаунта, получитеисходный код сканерао~
Поиск в WeChat【водяной монстр] Или отсканируйте QR-код ниже, чтобы ответить на «Добавить группу», я приглашу вас в группу технического обмена. Честно говоря, в этой группе, даже если вы не говорите, просто чтение записей чата — это своего рода рост. (Али технический эксперт, автор Ao Bing, Java3y, старший клиент Mogujie, эксперт по безопасности Ant Financial, там все большие коровы).
Водяной монстр также будет регулярно создавать оригиналы, регулярно обмениваться опытом с небольшими партнерами или помогать читать резюме. Будьте внимательнее, не теряйтесь, есть возможность побегать вместе 🏃↓↓↓