5 ms·
I recently completed a project building a distributed web crawler using Golang. The architecture is inspired by how Google designed its crawler. I wrote a deta
by tonywangcn 3y ago
I recently completed a project building a distributed web crawler using Golang. The architecture is inspired by how Google designed its crawler.
I wrote a detailed series tutorial explaining my design decisions and how I implemented each component:
Part 1 - Architecture overview: https://medium.com/p/7f4281f9f539 https://medium.com/p/7f4281f9f539
Part 2 - Code walkthrough: https://medium.com/p/7a9b9a1e3829 https://medium.com/p/7a9b9a1e3829
The full source code is available on GitHub: https://github.com/tonywangcn/distributed-web-crawler https://github.com/tonywangcn/distributed-web-crawler
Some key highlights:
Uses Redis + Bloom Filters for fast de-duplication
Built a distributed queue with Redis for assigning scraping tasks
Persists scraped data to MongoDB
Implemented exponential backoff for retries
Collects real-time stats using Redis Hashes
This was a great learning experience for me to build a complex distributed system. Let me know if you have any feedback on the architecture, code, or tutorial writeup! I'm hoping this can be a useful resource for anyone wanting to learn more about scraping system design.