我正在运行几个爬虫,每天生成数百万个数据集。瓶颈是蜘蛛和远程数据库之间的延迟。如果爬行器服务器的位置太大,延迟将使爬虫速度降低到无法完成一天所需的数据集的程度。
为了寻找解决方案,我遇到了redis,它的想法是安装redis,蜘蛛服务器,它将临时存储以低延迟收集的数据,然后redis将这些数据以某种方式拉到mysql。
到目前为止,设置是这样的:
后者是问题所在,因为爬行器生成页面中的每个位置,并在事务中创建远程插入,甚至可能是连接(目前还不确定)。
这目前只适用于蜘蛛和远程MySQL服务器是接近的(相同的数据中心),其ping次数为0.0xms,不能处理50 ms的ping次数,因为蜘蛛写得不够快。
redis或者DataMQ是解决问题的有效方法,还是有其他推荐的方法来解决这个问题?
发布于 2022-03-08 06:19:36
你的意思是你已经在每个蜘蛛上安装了一个Redis服务器吗?
其实这对你来说不是个好办法。但是,如果您已经这样做了,并且仍然希望使用MySQL来持久化您的数据,那么在每个服务器上使用cron作业将是一种选择。
您可以在每个蜘蛛服务器上创建一个cron作业(根据您的数据集和需要,您可以选择每天或每小时同步作业)。并编写一个数据传输脚本来扫描Redis并将其传输到MySQL表。
发布于 2022-03-07 08:18:29
我建议使用MongoDB而不是MySQL来存储数据
https://stackoverflow.com/questions/71377972
复制相似问题