我目前正在做一个分布式爬行服务。在做这件事的时候,我有一些需要解决的问题。
首先,让我们解释爬虫是如何工作的,以及需要解决的问题。
爬虫需要保存每个特定站点上的每个公告板上的所有帖子。
要做到这一点,它会自动发现爬行目标,并将几条消息发布到pub/sub。其信息是:
{ "boardName":“测试”,"targetDate":"2020-01-05“}
当发出相应的消息时,将触发云运行函数,并爬行与给定的json对应的数据。
但是,如果发布相同的重复消息,则会出现重复数据,因为相同的数据将被爬行。当同样的消息出现时,我怎么能忽略其他消息呢?
此外,对于分布式爬虫的稳定实现,我是否可以参考pub/sub或其他好功能?
发布于 2022-03-23 10:40:27
因为默认情况下,PubSub被设计为至少一次传递消息,所以最好进行幂等处理。(确切的一次送货来了)
无论如何,您的问题是非常相似的:两次相同的消息或两个具有相同内容的不同消息将导致相同的问题。在PubSub中没有这方面的神奇特性。您需要一个外部工具,比如数据库,来存储已经接收到的信息。
Firestore/datastore是一个很好的、没有服务器的地方。如果你需要低延迟,内存存储和它在内存数据库中是最快的。
https://stackoverflow.com/questions/71582072
复制相似问题