कायली: ब्राउज़र में वितरित कंप्यूटिंग

1999 में, SETI @ होम प्रोजेक्ट ने उपयोगकर्ताओं को अपने व्यक्तिगत कंप्यूटर के संसाधनों को अंतरिक्ष से रेडियो सिग्नल के विश्लेषण के लिए प्रदान करने के लिए आमंत्रित किया ताकि वे अलौकिक बुद्धि की खोज कर सकें। इस परियोजना के हिस्से के रूप में, बर्कले विश्वविद्यालय ने BOINC प्लेटफॉर्म (नेटवर्क कम्प्यूटिंग के लिए बर्कले ओपन इन्फ्रास्ट्रक्चर) विकसित किया, जिसके आधार पर उपरोक्त SETI @ होम, ABC @ होम (एब्स परिकल्पना का प्रमाण), Climateprediction.net (जलवायु मॉडल का सुधार) बाद में लॉन्च किए गए थे। , LHC @ होम (उच्च-ऊर्जा कणों के टकराव का अनुकरण) और अन्य।

और सब कुछ ठीक होगा, लेकिन BOINC को एक शर्त की पूर्ति की आवश्यकता होती है: उपयोगकर्ता को क्लाइंट भाग को डाउनलोड, कॉन्फ़िगर और लॉन्च करने की आवश्यकता है। लेकिन क्या होगा, अगर किसी कारण से, यह करना असंभव है? और यह बहुत अच्छा होगा कि ब्राउज़र में लिंक पर क्लिक करें और तुरंत कंप्यूटर को एक बड़े कंप्यूटिंग नेटवर्क के लिंक में बदल दें!

इन विचारों के साथ, मैंने कायली लिखना शुरू कर दिया।



यह सब कहां से शुरू हुआ


ब्राउज़र और कंप्यूटिंग के साथ अपना खुद का BOINC लिखने का विचार लगभग 5 साल पहले आया था, जब 2007 में, विश्वविद्यालय छात्रावास में मेरे अद्भुत रूममेट, वोवा कैसानोव के लिए धन्यवाद, मैं उबंटू से मिला और C # से पायथन में चला गया। एक पायलट परियोजना के रूप में, "वितरित जावास्क्रिप्ट कम्प्यूटिंग" परियोजना की योजना बनाई गई थी। लेकिन न तो ज्ञान, न ही अनुभव, और न ही दृढ़ता तब पर्याप्त थी।

यह 4 साल से अधिक हो गया है। अपनी खुद की रूपरेखा लिखने की इच्छा खो नहीं गई थी, लेकिन बहुत अधिक अवसर थे! वेब वर्कर्स एचटीएमएल 5 मानक में दिखाई दिए हैं, जिससे आप ब्राउज़र के मुख्य जेएस स्ट्रीम के साथ जावास्क्रिप्ट कोड निष्पादित कर सकते हैं। अपने पूर्ववर्तियों की तुलना में, V8, स्पाइडरमोंकी, काराकन ने प्रभावशाली गति हासिल की। CoffeeScript आपको साफ और पढ़ने योग्य कोड लिखने की अनुमति देता है। और अंत में, मुझे पायथन से इतना प्यार हो गया कि मैं सभी परिचर विशेषताओं (प्रलेखन, PyPI पैकेज, आदि) के साथ उस पर एक पूर्ण रूपरेखा लिखना चाहता था।

क्या कार्य थे


उपयोगकर्ता के दृष्टिकोण से

उपयोगकर्ता के दृष्टिकोण से, सब कुछ बहुत सरल दिखना चाहिए: "क्या आप इस लिंक पर क्लिक करेंगे और रात के लिए कंप्यूटर को चालू करने के लिए वैज्ञानिकों को इलाज के लिए मदद करने के लिए छोड़ देंगे <यहाँ एक भयानक बीमारी का नाम आता है?"

एक अधिक अशिष्ट विकल्प: उपयोगकर्ता अपनी पसंदीदा साइट पर जाता है, और फिर एक अदृश्य iframe में, बिना कुछ पूछे, बिना पेशकश या यहां तक ​​कि औपचारिक रूप से, बिटकॉइन खनन शुरू होता है।

अधिक समय लेने वाला विकल्प: उपयोगकर्ता को व्यक्तिगत रूप से गणना में भाग लेना होता है, उदाहरण के लिए, एक तस्वीर प्रदर्शित की जाती है जिसे शब्दों में वर्णित किया जाना चाहिए।

प्रोग्रामर के दृष्टिकोण से

प्रोग्रामर के दृष्टिकोण से, सब कुछ थोड़ा कम दिखता है: आपको पायथन में वितरित एप्लिकेशन (केली - प्रोजेक्ट के संदर्भ में) के सर्वर साइड को लिखना होगा, जो जावास्क्रिप्ट / कॉफीस्क्रिप्ट में टास्क और एप्लिकेशन का क्लाइंट हिस्सा होगा, जो इन समस्याओं को हल करेगा।
पहले मामले में, सार वर्ग के उत्तराधिकार और विस्तार के द्वारा सब कुछ तय किया जाता है, दूसरे में - दो कार्यों के कार्यान्वयन से। JSON में सर्वर और क्लाइंट के बीच सभी संचार होते हैं। हां, नोड.जेएस के अनुयायी मुझे माफ कर देंगे, लेकिन जावास्क्रिप्ट में प्रोग्रामिंग से और यहां तक ​​कि कॉफीस्क्रिप्ट से भी मुझे बहुत खुशी नहीं मिलती है जो पायथन में प्रोग्रामिंग से आती है।

और क्या हुआ?


और यह कायली (श्रृंखला "जुगनू" की नायिका के सम्मान में) निकला।
कायली कंप्यूटर नेटवर्क के सर्वर और नोड्स (उपयोगकर्ता ब्राउज़र) के बीच संचार को व्यवस्थित करने और मध्यवर्ती और अंतिम परिणामों को संग्रहीत करने के लिए सभी देखभाल करता है, जिससे प्रोग्रामर को एप्लिकेशन पर ध्यान केंद्रित करने की अनुमति मिलती है।

कायली किसी भी पायथन वेब फ्रेमवर्क के साथ फ्रंट-एंड (बॉक्स Django और फ्लास्क समर्थित हैं) के रूप में काम कर सकती हैं।

एक परीक्षण बेंच के रूप में, हमने मोंटे कार्लो विधि और नमकीन md5.h "ब्रेकिंग" का उपयोग करके पाई मूल्य की गणना के कार्यों का उपयोग किया। यह मुझे लगता है कि ढांचे ने एक धमाके के साथ दोनों कार्यों को संभाला है!

कामरेड!


यह परियोजना विकास के प्रारंभिक चरण में है और खाबरोवचन पहली है जिसके बारे में मैंने इसके बारे में बताने का फैसला किया है। यदि यह आपके लिए दिलचस्प हो गया है, यदि आपके पास सवाल, सुझाव, टिप्पणियां, आलोचना और निश्चित रूप से भाग लेने की इच्छा है, तो यह सब गर्मजोशी से स्वागत है!

Source: https://habr.com/ru/post/In151801/


All Articles