Designing a Web Crawler at Scale
Katta miqyosda veb-qidiruvchi (crawler) loyihalash
Capstone: Web Crawler kursida siz BITTA sayt ichida, chuqurlik chegarasi bilan, BITTA dastur orqali havolalarni KEZUVCHI dastur QURGAN edingiz — bu, bitta MAHALLANI piyoda AYLANIB chiqishga o'xshaydi. Endi savol: agar vazifa BUTUN INTERNETNI (milliardlab sahifani) INDEKSLASH bo'lsa — bitta piyoda emas, MINGLAB tadqiqotchidan iborat EKSPEDITSIYA qanday tashkil qilinadi?
Talab va miqyos: milliardlab sahifani BITTA jarayon, BITTA serverda kezib chiqish — Numbers Every Engineer Should Know darsidagi raqamlarga ko'ra, YILLAB davom etardi. Yechim — Worker Pool darsida (Build a Task Queue kursi) ko'rgan g'oyaning KENGAYTIRILGAN ko'rinishi: MINGLAB "crawler worker" PARALLEL ishlaydi, HAR biri navbatdagi (URL Frontier deb ataladigan MARKAZIY navbat) KEYINGI URL'ni oladi, uni YUKLAB oladi, va topilgan YANGI havolalarni QAYTA navbatga qo'shadi.
| Komponent | Vazifasi | Bog'liq dars |
|---|---|---|
| URL Frontier | Ziyorat qilinishi KERAK bo'lgan URL'lar NAVBATI, ustuvorlik bilan (mashhur saytlar OLDIN) | Message Queues and Async Processing |
| Dedup xizmati | Bir xil URL IKKI marta ZIYORAT qilinmasligini tekshiradi (milliardlab URL uchun tez qidiriladigan saqlash kerak) | Indexing at Scale |
| Crawler worker'lar | URL'ni yuklab oladi, kontentni AJRATIB oladi, YANGI havolalarni topadi | Worker Pool (Build a Task Queue) |
| Politeness limiter | Bitta saytga JUDA tez-tez so'rov yubormaslik uchun, HAR bir domen bo'yicha cheklaydi | Rate Limiting as a System-Level Concern |
Chuqur kirish — dublikatlarni aniqlash: milliardlab URL orasida "bu URL ILGARI ziyorat qilinganmi" degan savolga TEZ javob berish — oddiy indeks (Indexing at Scale darsi) bilan ham QIYIN bo'lib qolishi mumkin, chunki bunday KATTA to'plamni to'liq XOTIRADA saqlash QIMMATGA tushadi. Real katta crawler'lar bu yerda Bloom filter kabi MAXSUS, XOTIRA tejaydigan (lekin kichik XATOLIK ehtimoli bo'lgan) tuzilmalardan foydalanadi — bu, Data Structures in Go kursida ko'rgan tanlovlarning, TARQATILGAN tizim MIQYOSIDAGI davomi.
Politeness (odob) muammosi: agar YUZLAB worker BIR VAQTDA bitta kichik saytga so'rov yuborsa, u saytni O'CHIRIB qo'yishi mumkin — bu, ODDIY veb-crawler'ning O'ZIGA XOS rate limiting muammosi: cheklash GLOBAL (butun tizim) emas, balki HAR bir DOMEN bo'yicha ALOHIDA amalga oshiriladi (Rate Limiting as a System-Level Concern darsidagi g'oyaning DOMEN darajasidagi ko'rinishi).
Murosa: mashhur, tez-tez YANGILANADIGAN saytlarni (yangiliklar portali) TEZ-TEZ qayta ziyorat qilish, kamdan-kam O'ZGARADIGAN saytlarni esa KAMROQ tez-tez tekshirish — bu, cheklangan CRAWLING resursini QAYERGA sarflash MUHIMROQ ekanligi haqidagi, Engineering Judgment kursidagi "narxni hisoblash" tamoyilining amaliy qarori.
Key Takeaway
Key Takeaway:
Internet miqyosidagi crawler — markaziy URL Frontier navbati atrofida ishlaydigan minglab parallel worker, tez dublikat aniqlash (ko'pincha Bloom filter bilan), va har bir domen bo'yicha alohida rate limiting ("politeness")dan iborat. Bitta saytni kezuvchi dastur bilan farqi — miqdor emas, koordinatsiya: minglab worker bir-birini takrorlamasdan, biror saytni bosib qolmasdan ishlashi kerak.
NEXT UP
Designing a Distributed File Storage System