सामान्य दृष्टिकोण क्रॉलिंग को अलग करना होगा, और डाउनलोडिंग कार्यों को अलग-अलग कार्य थ्रेड के साथ अलग-अलग थ्रेड के साथ, आपकी स्मृति आवश्यकताओं के आधार पर (यानी अधिकतम रैम जो आप इस जानकारी को संग्रहीत करने के लिए उपयोग करना चाहते हैं)।
हालांकि, crawler4j पहले से ही आपको यह कार्यक्षमता देता है। अलग थ्रेड में डाउनलोड और क्रॉलिंग को विभाजित करके, आप अपने कनेक्शन के उपयोग को अधिकतम करने की कोशिश करते हैं, जितना अधिक डेटा खींचते हैं उतना डेटा खींचते हैं, और जैसे ही जानकारी प्रदान करने वाले सर्वर आपको भेज सकते हैं। इसके लिए प्राकृतिक सीमा यह है कि, यदि आप 1,000 थ्रेड उत्पन्न करते हैं, तो सर्वरों को केवल 0.3k प्रति सेकेंड पर सामग्री दी जाती है, फिर भी यह प्रति सेकंड केवल 300 KB है जिसे आप डाउनलोड करेंगे। लेकिन आप इसके उस पहलू पर कोई नियंत्रण नहीं रखते हैं, मुझे डर है।
गति को बढ़ाने का दूसरा तरीका इंटरनेट पर एक फ़ैटर पाइप के साथ क्रॉलर को चलाने के लिए है, क्योंकि आपकी अधिकतम डाउनलोड गति है, मैं अनुमान लगा रहा हूं, सीमित कारक यह है कि आप वर्तमान में डेटा कितनी तेजी से प्राप्त कर सकते हैं । उदाहरण के लिए, यदि आप एडब्लूएस इंस्टेंस (या क्लाउड एप्लिकेशन प्लेटफॉर्म में से किसी भी) पर क्रॉलिंग चला रहे थे, तो आप बैकबोन के लिए अपने बेहद हाई स्पीड कनेक्शन से लाभ उठाएंगे, और वेबसाइटों के संग्रह को क्रॉल करने में कितना समय लगेगा घर या कार्यालय कनेक्शन में जो कुछ भी आप जा रहे हैं उससे परे अपने बैंडविड्थ को प्रभावी रूप से विस्तारित करना (जब तक कि आप एक आईएसपी पर काम नहीं करते)।
यह सैद्धांतिक रूप से संभव है कि, ऐसी स्थिति में जहां आपकी पाइप बहुत बड़ी है, सीमा आपके डिस्क की अधिकतम लिखने की गति बनने लगती है, किसी भी डेटा के लिए जिसे आप स्थानीय (या नेटवर्क) डिस्क स्टोरेज में सहेज रहे हैं।
यह सही है, धन्यवाद! – seinecle