分布式爬虫的介绍和搭建

news2024/9/25 7:22:40

分布式爬虫

Scrapy单机模式

Scrapy引擎通过一调度器,将request队列中的

request请求发给下载器进行页面的爬取

Scrapy单机框架的优缺点

优点:

部署容易,架构简单快速,快速部署

缺点:

单点执行,抓取速度慢,效率低下

爬虫有明显的性能瓶颈

分布式爬虫

  • 分布式系统

    • 一个硬盘或者软件的组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统
  • 分布式爬虫

    • 多台电脑设备通过网络连接协同执行一个爬虫任务
  • 分布式爬虫的优势

    • 以比较低的成本获取更高的性能
    • 可以横向扩展,突破性能瓶颈

分布式爬虫构架

分布式爬虫的关键点:

  • 维护一个系统内共享的网络请求队列

    • 保证各个节点不会执行重复的网络请求
    • 各节点分别执行网络请求和数据处理实现爬取效率的提升
  • 分布式爬虫框架的两种模式(主从模式和对等模式)

    • 主从分布式爬虫:

      • 一台专门的MASTER服务器来维护待抓取的request的队列

单机爬虫框架和分布式爬虫的框架:
请添加图片描述

Scrapy-Redis 分布式爬虫 属于主从的分布式爬虫

爬虫的框架:

  • Master(主节点不一定会很复杂)(用于请求队列的共享)

    • Redis服务器维护队列
  • Slaves(用于数据下载等操作)

    • 执行网页爬取、分析、保存

Redis数据库(非关系型数据库)

  • 开源并且基于内存亦可进行持久化存储的数据库(读取数据速度快)
  • 存储数据的格式为key—value
  • 提供了多种语言的API

Redis数据库的特点(数据保存的手段)

  • 速度快(使用c语言进行开发,并且将数据存储到内存中)
  • 支持多种数据结构
  • 持久化(所有数据 存储到内存中,更新键异步保存到磁盘上)
  • 支持多种汇编语言
  • 功能丰富(但是不可以保存二进制的数据)

搭建分布式爬虫

# 大概步骤
VMware虚拟机

Redis数据库

在centos系统安装redis数据库

首先要在虚拟机上安装centos系统并且启动网卡

进入系统后创建一个文件夹用于下载Redis数据库的安装包

命令

mkdir software 

将安装时要用到的工具进行安装

sudo yum groupinstall Development tools
sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-develreadline-develtk-devel gdbm-devel db4-devel libpcapdevel xzdevel

安装wget 工具
yum install wget

下载安装包

wget http://download.redis.io/releases/redis-4.0.2.tar.gz

解压安装包

tar xzf redis-4.0.2.tar.gz

进入redis-4.0.2文件

cd redis-4.0.2

进行安装:

make 

make install 

检查是否安装成功

进入/user/local/bin

cd /usr/local/bin

运行Redis-server

./redis-server

首先进入/root/software/redis-4.0.2/utils

cd /root/software/redis-4.0.2/utils

配置Redis文件(让其他机器可以登录数据库)

进入 /root/software/redis-4.0.2/utils

cd /root/software/redis-4.0.2/utils

查看Redis_init_script

进入 /etc/init.d

cd /etc/init.d

并将Redis_init_script拷贝至/etc/init.d并且重命名为Redis_6379

cp /root/software/redis-4.0.2/Redis_init_script ./Redis_6379

首先创建一个存放Redis的配置文件的文件件

mkdir /etc/redis

创建一个存放Redis持久化的文件夹

mkdir /var/redis

进入 /var/redis文件中创建一个6379的文件夹

进入/etc/redis/

/root/software/redis-4.0.2/的Redis_init_script文件 拷贝到/etc/redis/中 并且重命名为6379.conf

打开6379.conf对进行配置的修改一下内容:

将保护模式设置为弄

注释bind ip,关闭绑定

完成以上操作就可以成功启动我们的数据库

我们通过本机进项连接的测试

redis-cli -h server_ip -p server _port 
# server _port :端口号

# server_ip:ip地址

!!注意在数据库服务开启后不要停止界面

我们通过克隆master虚拟机进行对slave创建

通过连接命令

redis-cli -h server_ip -p server _port 

们通过本机进项连接的测试

redis-cli -h server_ip -p server _port 
# server _port :端口号

# server_ip:ip地址

!!注意在数据库服务开启后不要停止界面

我们通过克隆master虚拟机进行对slave创建

通过连接命令

redis-cli -h server_ip -p server _port 

连接成功则表示配置成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/367461.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

假脱机技术Spooling和守护进程

文章目录假脱机系统Spooling和守护进程1.假脱机技术的引入2.SPOOling系统的组成3.SPOOling系统的工作过程守护进程假脱机系统Spooling和守护进程 1.假脱机技术的引入 脱机技术: 为了缓和CPU的高速性与IO设备的低速性间的矛盾,而引入了脱机输入&#xf…

Objective-C 中类和对象的基本使用 方法的调用(消息传递)

总目录 iOS开发笔记目录 从一无所知到入门 文章目录Intro截图自定义类型的interface部分和implementation部分main方法中的类型调用部分Demo测试代码输出Intro Objective-C,具有面向对象特性的C。 但其实,它的面向对象和其他高级语言相比,还…

【C++】C++的内存模型之四大分区

程序的内存模型 C程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值&…

CIMCAI intelligent tally shore AI auto container damage detect

全球港航人工智能/集装箱人工智能领军者CIMCAI,世界首创港口岸边超级智能理货产品自动化AI验箱,AI自动化码头港口数字化港口。中集飞瞳CIMCAI领跑全球港口码头人工智能科技,领先集装箱箱况残损识别科技全方位提升港口码头效能。集装箱残损可能…

剑指 Offer 68 - I. 二叉树的最近公共祖先

摘要 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先 剑指 Offer 68 - II. 二叉树的最近公共祖先 一、二叉搜索树的最近公共祖先 注意到题目中给出的是一棵二叉搜索树,因此我们可以快速地找出树中的某个节点以及从根节点到该节点的路径,例如我们需要找…

2023年金三银四必备软件测试常见面试题1500问!!!

十九、持续集成19.1 jenkins ant jmeter svn接口自动化测试?jenkins ant jmeter svn环境搭建原来这个环境是我这边搭建的,主要是几个步骤,第一Jenkins安装、第二,ant安装、第三,jmeter安装、第四,jmeter与ant连…

HTML基础(1)

HTML基础HTML基本介绍编辑工具HTML概述多如牛毛的标签头部标签&#xff1a;标题与段落标签&#xff1a;br换行符&#xff1a;a href超链接标签&#xff1a;< meta > 元素标签&#xff1a;主体标签HTML注释&#xff1a;水平线标签hr&#xff1a;段落标签p&#xff1a;文本…

[ 常用工具篇 ] 多媒体视频处理工具 ffmpeg 安装使用详解

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

【python学习笔记】:字符串编码转换

在 Python 中&#xff0c;有 2 种常用的字符串类型&#xff0c;分别为 str 和 bytes 类型&#xff0c;其中 str 用来表示 Unicode 字符&#xff0c;bytes 用来表示二进制数据。str 类型和 bytes 类型之间就需要使用 encode() 和 decode() 方法进行转换。 Python encode()方法 …

软件工程(4)--螺旋模型

前言 这是基于我所学习的软件工程课程总结的第四篇文章。 在软件开发过程中必须及时识别和分析风险&#xff0c;并且采取适当措施以消除或减少风险的危害。构建原型是一种能使某些类型的风险降至最低的方法。为了降低交付给用户的产品不能满足用户需要的风险&#xff0c;一种行…

LeetCode 725. 分隔链表

LeetCode 725. 分隔链表 难度&#xff1a;middle\color{orange}{middle}middle 题目描述 给你一个头结点为 headheadhead 的单链表和一个整数 kkk &#xff0c;请你设计一个算法将链表分隔为 kkk 个连续的部分。 每部分的长度应该尽可能的相等&#xff1a;任意两部分的长度差…

〖产品思维训练白宝书 - 核心竞争力篇⑯〗- 产品经理核心竞争力解读之如何学习的又快又好并学以致用

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4e…

前端算法codewhy第一章: 邂逅数据结构与算法

第一章: 邂逅数据结构与算法 编程的真相 – 数据的处理 数据结构与算法的本质 学习数据结构与算法到底有什么实际应用&#xff1f; 源码中的数据结构 如何学习数据结构与算法&#xff1f; TypeScript常见数据结构与算法 到底什么是数据结构 什么是数据结构&#xff08;Data Str…

数据库系统之并发控制(重点标记)

1. 并发控制概述 事务是并发控制的基本单位&#xff0c;并发控制机制的任务是&#xff1a; 对并发操作进行正确调度。保证事务的隔离性。保证数据库的一致性。 数据不一致及其原因 并发操作带来的数据不一致性主要包括丢失修改&#xff0c;不重复读和读“脏”数据。产生三类数…

Appium自动化测试 Inspector定位Webview/H5页面元素

目录操作步骤Python操作该混合App代码Appium在操作混合App或Android App的H5页面时, 常常需要定位H5页面中的元素, 传统方式是 FQ 使用Chrome://inspect来定位元素, 环境准备相当繁琐, 不仅需要想办法FQ, 而且还需要Android设备安装Google框架以及手机版Chrome浏览器以及相应的…

图片分类 STL-10 数据集下载及使用指南

转载自安全验证 - 知乎 这次给大家介绍的 STL10数据集&#xff0c;是图片分类任务早期常用的基准数据集之一&#xff0c;虽然只有10种样本&#xff0c;图片尺寸也偏小&#xff0c;但是标注类型比较平衡&#xff0c;各种种类都有各500张&#xff08;train&#xff09;/800张&am…

深度解析linux的文件系统

背景&#xff1a;虚拟文件系统&#xff08;有时也称作虚拟文件交换&#xff0c;更常见的是简称VFS)作为内核子系统&#xff0c;为用户空间程序提供了文件和文件系统相关的接口。系统中所有文件系统不但依赖VFS共存&#xff0c;而且也依靠VFS系统协同工作。通过虚拟文件系统&…

动态规划(一):01背包问题和完全背包问题

动态规划 目录动态规划1.01背包问题1.1题目介绍1.2思路一介绍(二维数组)1.3思路二介绍(一维数组) 空间优化1.4思路三介绍(输入数据优化)2.完全背包问题2.1题目描述&#xff1a;2.2思路一(朴素算法)2.3思路二(将k优化处理掉)2.4思路三(优化j的初始条件)总结1.01背包问题 1.1题目…

求职-进度

2-23 投递 恒生校招 C https://campus.hundsun.com/personal/deliveryRecord 投递 合合信息 大数据开发工程师 https://intsig.zhiye.com/personal/deliveryRecord 投递 尚游网络 游戏服务器开发工程师 https://app.mokahr.com/campus_apply/shangyou/36582?recommendCodeDS…

项目管理中,哪些信息差是不应该存在的呢?

在项目管理中&#xff0c;如果存在信息差&#xff0c;那么就会存在了巨大的问题&#xff0c;从而导致项目的失败。 项目管理中哪些信息差是不应该存在的呢&#xff1f; 1、项目背景 项目经理接手项目&#xff0c;首先要了解清楚项目背景&#xff0c;避免在项目过程中对自己…