GoDasturchi
Designing a Web Crawler at Scale

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.

KomponentVazifasiBog'liq dars
URL FrontierZiyorat qilinishi KERAK bo'lgan URL'lar NAVBATI, ustuvorlik bilan (mashhur saytlar OLDIN)Message Queues and Async Processing
Dedup xizmatiBir xil URL IKKI marta ZIYORAT qilinmasligini tekshiradi (milliardlab URL uchun tez qidiriladigan saqlash kerak)Indexing at Scale
Crawler worker'larURL'ni yuklab oladi, kontentni AJRATIB oladi, YANGI havolalarni topadiWorker Pool (Build a Task Queue)
Politeness limiterBitta saytga JUDA tez-tez so'rov yubormaslik uchun, HAR bir domen bo'yicha cheklaydiRate 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

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.

KomponentVazifasiBog'liq dars
URL FrontierZiyorat qilinishi KERAK bo'lgan URL'lar NAVBATI, ustuvorlik bilan (mashhur saytlar OLDIN)Message Queues and Async Processing
Dedup xizmatiBir xil URL IKKI marta ZIYORAT qilinmasligini tekshiradi (milliardlab URL uchun tez qidiriladigan saqlash kerak)Indexing at Scale
Crawler worker'larURL'ni yuklab oladi, kontentni AJRATIB oladi, YANGI havolalarni topadiWorker Pool (Build a Task Queue)
Politeness limiterBitta saytga JUDA tez-tez so'rov yubormaslik uchun, HAR bir domen bo'yicha cheklaydiRate 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