分布式去重与调度:布隆过滤器、分布式锁

📂 所属阶段:第五阶段 — 战力升级(分布式与进阶篇)


1. 布隆过滤器

from pybloom import BloomFilter

class BloomFilterDuplicates:
    def __init__(self):
        self.bf = BloomFilter(capacity=1000000, error_rate=0.001)
    
    def is_duplicate(self, url):
        if url in self.bf:
            return True
        self.bf.add(url)
        return False

2. 分布式锁

import redis

class DistributedLock:
    def __init__(self):
        self.redis = redis.Redis()
    
    def acquire(self, key, timeout=10):
        return self.redis.set(key, 1, nx=True, ex=timeout)
    
    def release(self, key):
        self.redis.delete(key)

3. 小结

分布式去重:

1. 布隆过滤器:内存高效
2. Redis Set:精确去重
3. 数据库查询:最准确

分布式调度:

1. 分布式锁:避免重复
2. 消息队列:负载均衡
3. 任务调度:定时执行

💡 记住:分布式系统的核心是去重和调度。掌握它们,你就掌握了分布式爬虫的精髓。


🔗 扩展阅读