A crawler is a continuously expanding work pipeline#
The frontier owns priority, host grouping, schedule, retries, and freshness. Per-domain queues and rate limits prevent one site from dominating workers. Respect applicable robots directives and site policy rather than treating maximum fetch rate as the goal.
Normalize URLs carefully, use an exact set when exactness is required, or a Bloom filter as a memory-efficient hint where occasional false-positive skips are acceptable. Different URLs may return identical content, so content hashes can remove exact duplicates without pretending to solve near-duplicate similarity.
- One FIFO queue with no host politeness.
- Retrying permanent failures indefinitely.
- Assuming URL deduplication also deduplicates content.
- Using a Bloom filter when missing a page is unacceptable.
Related practice problems
Use the manifest-backed prompts below to apply this lesson in a complete design.
- Robots Exclusion ProtocolIETF RFC 9309
- Bloom filterRedis Documentation