फेसबुक आर्किटेक्चर [बंद]


169

मैं फेसबुक पर वास्तुकला के बारे में लेख / जानकारी के लिए छानबीन कर रहा हूं, उनसे निपटने की चुनौतियां और तरीके। वे क्या उपयोग करते हैं और वे क्यों उपयोग करते हैं। वे कैसे पैमाना बनाते हैं और वे क्या करते हैं आदि के लिए डिजाइन निर्णय होते हैं। ऐसी साइटों के बारे में जानना, जो इस तरह के बड़े पैमाने पर यातायात को संभालती हैं, वास्तुकारों आदि के लिए बहुत सारे संकेत देती हैं ताकि नई साइटों को डिजाइन करते समय कुछ सामानों को ध्यान में रखा जा सके। मुझे जो मिला है उसे साझा कर रहा हूं।

  1. फेसबुक विज्ञान और सामाजिक ग्राफ (वीडियो)
  2. फेसबुक पर स्केल
  3. फेसबुक चैट आर्किटेक्चर
  4. फेसबुक ब्लॉग
  5. फेसबुक कैसेंड्रा वास्तुकला और डिजाइन
  6. फेसबुक इंजीनियरिंग नोट्स
  7. Quora - फेसबुक आर्किटेक्चर
  8. 600M उपयोगकर्ताओं के लिए फेसबुक
  9. फेसबुक पर Hadoop और इसका उपयोग
  10. फेसबुक पर एरलांग: चैट आर्किटेक्चर
  11. फेसबुक प्रदर्शन कैशिंग
  12. फेसबुक कनेक्ट आर्किटेक्चर

मेरे पास 2 और लिंक हैं, लेकिन इस साइट पर प्रतिबंध के कारण पोस्ट करने में असमर्थ हैं। साथ ही, कृपया साझा करें यदि किसी के पास कुछ भी बेहतर है (केवल फेसबुक से संबंधित नहीं होना चाहिए)।

पुनश्च - मुझे इस शोध को साझा करने के लिए अच्छी जगहें नहीं मिलीं, इसलिए यह पहल। आशा है कि यह किसी की मदद करता है।


2
2. फ़ेसबुक पर वीडियो (वीडियो) - infoq.com/pretations/Scale-at-Facebook 3. फ़ेसबुक चैट - infoq.com/news/2008/05/facebookchataltecture
Srikar Appalaraju

2
इसके अलावा highscalability.com कई लोकप्रिय साइटों के लिए आर्किटेक्चर के बारे में जानने के लिए एक शानदार जगह है। यह पता नहीं है कि यह कितना सच है और कितना सट्टा है, लेकिन यह वहाँ है और सिर्फ इस पर कुछ करने के लिए ...
श्रीकर अप्पलाराजू

1
फेसबुक इंजीनियरिंग ब्लॉग कभी-कभी अपनी वास्तुकला और स्केलिंग चुनौतियों में महत्वपूर्ण अंतर्दृष्टि है।
कॉलिन पिकार्ड

चूँकि यह तकनीकी रूप से एक वास्तविक प्रश्न नहीं है , इसलिए यदि आपको यह प्रश्न हटा दिया जाता है, तो जानकारी को संरक्षित करने के लिए FB टैग विकि पर सूचना को स्थानांतरित करने के लिए प्रोत्साहित किया जाता है। धन्यवाद।
गॉर्डन

@Gordon एफबी विकी टैग कैसे जोड़ें? क्या पहले से ही 'फेसबुक' टैग नहीं है? यह पर्याप्त नहीं है?
श्रीकर अप्पाराजू

जवाबों:


33

वैसे फेसबुक में कई बदलाव हुए हैं और यह मूल रूप से कुशल होने के लिए डिज़ाइन नहीं किया गया था। यह काम करने के लिए डिज़ाइन किया गया था। मुझे पूरी तरह से पता नहीं है कि कोड कैसा दिखता है और आपको संभवतः इसके बारे में अधिक जानकारी नहीं मिलेगी (स्पष्ट सुरक्षा और कॉपीराइट कारणों के लिए), लेकिन बस एपीआई पर एक नज़र डालें। यह देखो कि यह कितनी बार बदलता है और कितना यह ठीक से काम नहीं करता है, अब या बिल्कुल नहीं।

मुझे लगता है कि उनकी आस्तीन का सबसे बड़ा हिस्सा हिपहॉप है। http://developers.facebook.com/blog/post/358 आप हिपहॉप का खुद इस्तेमाल कर सकते हैं: https://github.com/facebook/hiphop-php/wiki

लेकिन अगर आप मुझसे पूछें कि यह बहुत महत्वाकांक्षी है और शायद समय बर्बाद करने वाला काम है। हिपहॉप केवल इतना समर्थन करता है, यह बस सब कुछ C ++ में परिवर्तित नहीं कर सकता है। तो यह हमें क्या बताता है? खैर, यह हमें बताता है कि फेसबुक पूरी तरह से PHP भाषा का लाभ नहीं ले रहा है। यह नवीनतम 5.3 का उपयोग नहीं कर रहा है और मैं शर्त लगा सकता हूं कि अभी भी बहुत कुछ है जो PHP 4 संगत है। अन्यथा, वे हिपहॉप का उपयोग नहीं कर सकते थे। हिपहॉप एक अच्छी पहचान है और इसे विकसित करने और विस्तार करने की आवश्यकता है, लेकिन यह वर्तमान स्थिति में है कि यह वास्तव में बहुत से लोगों के लिए उपयोगी नहीं है जो न्यू PHP एप्लिकेशन बना रहे हैं।

रेजिन / क्वेरकस जैसी चीजों के माध्यम से जावा से जावा भी है। फिर, यह सब कुछ का समर्थन नहीं करता है ...

ध्यान देने वाली एक और बात यह है कि यदि आप किसी भी गैर-मानक PHP मॉड्यूल का उपयोग करते हैं, तो आप उस कोड को C ++ या Java में बदलने में सक्षम नहीं होंगे। हालाँकि ... आइए PHP मॉड्यूल पर एक नज़र डालें। वे C ++ में संकलित हैं। इसलिए यदि आप PHP मॉड्यूल का निर्माण कर सकते हैं जो चीजें करते हैं (जैसे पार्स एक्सएमएल, आदि) तो आप मूल रूप से (कुछ इंटरैक्शन माइनस) उसी गति से काम कर रहे हैं। बेशक आप हर संभव ज़रूरत और अपने संपूर्ण ऐप के लिए बस एक PHP मॉड्यूल नहीं बना सकते क्योंकि आपको फिर से खेलना होगा और इसे कोड करना बहुत मुश्किल होगा, आदि।

हालांकि ... कुछ आसान PHP मॉड्यूल हैं जो गति चिंताओं से मदद कर सकते हैं। हालांकि दिन के अंत में, हमारे पास इस भयानक चीज़ को "क्लाउड" के रूप में जाना जाता है और इसके साथ, हम अपने अनुप्रयोगों (PHP शामिल) को स्केल कर सकते हैं, इसलिए यह अब और अधिक मायने नहीं रखता है। हार्डवेयर सस्ता और सस्ता होता जा रहा है। अमेज़ॅन ने सिर्फ यह कहा कि कीमतें (फिर से) बोलना कम कर दिया।

तो जब तक आप अपने PHP ऐप को इस विचार के चारों ओर कोड करते हैं कि इसे एक दिन के पैमाने की आवश्यकता होगी ... तब मुझे लगता है कि आप ठीक हैं और मुझे यकीन नहीं है कि मैं फेसबुक पर भी देखूंगा और उन्होंने क्या किया क्योंकि जब उन्होंने यह किया, यह पूरी तरह से अलग दुनिया थी और अब उस बुनियादी ढांचे को बनाए रखने और इसे बनाए रखने की कोशिश कर रहा है ... ठीक है, आपको हिपहॉप जैसी चीजें मिलती हैं।

अब हिपहॉप आपकी मदद कैसे करेगा? यह नहीं होगा यह नहीं कर सकता। आप नए सिरे से शुरू कर रहे हैं, आप PHP 5.3 का उपयोग कर सकते हैं। मैं अत्यधिक PHP 5.3 चौखटे और सभी नए लाभों को देखना चाहता हूँ जो PHP 5.3 SPL पुस्तकालयों के साथ तालिका में लाता है और आपके डेटाबेस के बारे में भी सोचता है। आप संभवतः डेटाबेस से सामग्री की सेवा कर रहे हैं, इसलिए MongoDB और अन्य प्रकार के डेटाबेस की जाँच करें जो स्कीमा-कम और दस्तावेज़-उन्मुख हैं। वे वेब साइट / ऐप के सबसे "सामान्य" प्रकार के लिए बहुत तेज़ और बेहतर हैं।

नई कंपनियों जैसे फोरस्क्यू और स्मगमग और कुछ अन्य कंपनियों को देखें जो नई तकनीक का उपयोग कर रहे हैं और वे इसका उपयोग कैसे कर रहे हैं। फेसबुक के रूप में सफल होने के लिए, मैं ईमानदारी से उन्हें "कैसे" के लिए एक कुशल वेब साइट / ऐप बनाने के लिए नहीं देखूंगा। मैं यह नहीं कह रहा हूं कि उनके पास बहुत (बहुत) प्रतिभाशाली लोग नहीं हैं जो वहां काम करते हैं जो रचनात्मक रूप से हल कर रहे हैं (उनकी) समस्याएं ... मैं यह भी नहीं कह रहा हूं कि फेसबुक सामान्य रूप से एक महान विचार नहीं है और यह नहीं है सफल और आपको इससे विचार नहीं मिलने चाहिए .... मैं सिर्फ इतना कह रहा हूं कि यदि आप उनके संपूर्ण स्रोत कोड को देख सकते हैं, तो आप शायद इससे लाभान्वित नहीं होंगे।


1
आपके द्वारा कही गई अधिकांश बातों पर सहमति। वे लिंक सिर्फ जिज्ञासा के लिए हैं। कभी-कभी आप प्रौद्योगिकी के एक टुकड़े को देखते हैं और कहते हैं "अरे! यह अच्छा है" ...
श्रीकर अप्पाराजू

मेरे जवाब को बेतरतीब ढंग से यहाँ दो बातें बता रही हैं। # 1, मेरा मानना ​​है कि C और C ++ मेरी तकनीकी खराब नहीं है ... लेकिन इससे भी महत्वपूर्ण बात # 2, फाल्कन एक नया PHP फ्रेमवर्क है जो गति के लिए PHP विस्तार में बहुत नीचे रूपांतरण करता है। हालाँकि आपका अपना बहुत कोड C के पाठ्यक्रम में नहीं चल रहा होगा और आपके द्वारा उपयोग की जाने वाली कोई अन्य लाइब्रेरी भी नहीं होगी। हालाँकि, यह कुछ अतिरिक्त प्रदर्शन को निचोड़ने के लिए हिपहॉप की तरह एक चतुर विचार है।
टॉम

... और यहाँ हम फिर से उनके आस्तीन के साथ इक्का है। पिछले वर्षों को देखते हुए हमारे पास यह हैक भाषा है (हिपहॉप के सामान से पैदा हुआ है, जिसकी आईडीई से कम नहीं है)। क्या यह कुछ बेहतर हो गया है? हम देखेंगे। क्या यह आपकी मदद कर सकता है? हो सकता है, लेकिन अब ऐसा लगता है कि आप भी फेसबुक की तरह ही निर्माण कर पाएंगे। यह केवल 4 साल लग गए =) हालांकि व्यक्तिगत रूप से, मैं कूल-ऐड पीने के लिए इतनी जल्दी नहीं होगा।
टॉम

1
अब जवाब को देखते हुए, मैं चकित हूं कि तकनीक की दुनिया में चीजें कैसे बदल जाती हैं। न केवल हिपहॉप ने पीएचपी के नवीनतम संस्करणों का समर्थन किया, फेसबुक ने एचएचवीएम भी विकसित किया जो कि और भी तेज है।
गोपी कृष्ण

हाँ, मुझे कभी-कभी सूचनाएं मिलती हैं जो मुझे इस पर वापस लाती हैं। यह वास्तव में देखने के लिए बहुत बढ़िया है कि चीजें कैसे बदल गई हैं और हिपहॉप एचएचवीएम में कैसे विकसित हुआ (और संभवत: फेसबुक कैसे कवर के तहत खुद को फिर से मजबूत कर रहा है - सभी अद्भुत जेएस प्रगति को देखें जो वे कर रहे हैं)। यह मुझे समझ में आता है। यदि आपके पास पैसे और कर्मचारियों के टन के साथ एक बेतहाशा सफल कंपनी है ... तो कुछ बिंदु पर आर एंड डी में पुनर्निवेश क्यों नहीं?
टॉम

18

फेसबुक LAMP संरचना का उपयोग कर रहा है । फेसबुक की बैक-एंड सर्विसेज विभिन्न प्रोग्रामिंग भाषाओं में C ++, जावा, पायथन और एर्लांग सहित विभिन्न प्रकार की भाषाओं में लिखी गई हैं और इनका उपयोग आवश्यकता के अनुसार किया जाता है। LAMP के साथ Facebook कुछ तकनीकों का उपयोग करता है, बड़ी संख्या में अनुरोधों का समर्थन करने के लिए, जैसे

  1. Memcache - यह एक मेमोरी कैशिंग सिस्टम है जो रीडिंग टाइम को कम करने के लिए रैम में डेटा और ऑब्जेक्ट्स को कैशिंग करके गतिशील डेटाबेस-संचालित वेबसाइटों (जैसे फेसबुक) को गति देने के लिए उपयोग किया जाता है। Memcache, फेसबुक का कैशिंग का प्राथमिक रूप है और डेटाबेस लोड को कम करने में मदद करता है। कैशिंग सिस्टम होने से फेसबुक आपके डेटा को वापस बुलाने में उतना ही तेज़ है।

  2. थ्रिफ्ट (प्रोटोकॉल) - यह स्केलेबल क्रॉस-लैंग्वेज सर्विसेज डेवलपमेंट के लिए एक लाइटवेट रिमोट प्रोसेस कॉल फ्रेमवर्क है। थ्रिफ्ट C ++, PHP, पायथन, पर्ल, जावा, रूबी, एरलैंग और अन्य का समर्थन करता है।

  3. कैसेंड्रा (डेटाबेस) - यह एक डेटाबेस प्रबंधन प्रणाली है जिसे कई सर्वरों में फैले बड़ी मात्रा में डेटा को संभालने के लिए डिज़ाइन किया गया है।

  4. PHP के लिए हिपहॉप - यह PHP स्क्रिप्ट कोड के लिए एक स्रोत कोड ट्रांसफार्मर है और सर्वर संसाधनों को बचाने के लिए बनाया गया था। हिपहॉप PHP स्रोत कोड को अनुकूलित C ++ में रूपांतरित करता है। ऐसा करने के बाद, यह मशीन कोड को संकलित करने के लिए g ++ का उपयोग करता है।

यदि हम अधिक विस्तार में जाते हैं, तो इस प्रश्न का उत्तर अधिक लंबा है। हम निम्नलिखित पोस्ट से अधिक समझ सकते हैं:

  1. फेसबुक कैसे काम करता है?
  2. डेटा प्रबंधन, फेसबुक-शैली
  3. फेसबुक डेटाबेस डिजाइन?
  4. फेसबुक वॉल का डेटाबेस स्ट्रक्चर
  5. फेसबुक "डेटा संरचना" की तरह

7

"ऐसी साइटों के बारे में जानना, जो इस तरह के बड़े पैमाने पर यातायात को संभालती हैं, वास्तुकारों आदि के लिए बहुत सारे संकेत देती हैं ताकि नई साइटों को डिज़ाइन करते समय कुछ सामानों को ध्यान में रखा जा सके"

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

आप उस ट्रैफ़िक को संभालने में सक्षम क्यों होना चाहते हैं जिसे फ़ेसबुक को संभालना है? ऑड्स यह है कि आपको कभी भी कोई फर्क नहीं पड़ेगा, चाहे आप कितने भी प्रतिभाशाली हो। फ़ेसबुक खुद को इस तरह के बड़े पैमाने पर स्केलेबिलिटी के लिए शुरू से डिज़ाइन नहीं किया गया था, जो शायद इससे सीखने के लिए सबसे महत्वपूर्ण सबक है।

यदि आप एक गैर-तुच्छ सॉफ्टवेयर प्रणाली के बारे में सीखना चाहते हैं तो मैं शार्पडेवल आईडीई के विकास के बारे में "डिसक्टिंग ए सी # एप्लिकेशन" पुस्तक की सिफारिश कर सकता हूं। यह प्रिंट से बाहर है, लेकिन यह ऑनलाइन मुफ़्त में उपलब्ध है । पुस्तक आपको एक वास्तविक एप्लिकेशन में एक झलक देती है और IDEs के बारे में जानकारी प्रदान करती है जो एक प्रोग्रामर के लिए उपयोगी हैं।


1
हाँ, शायद इतने सारे लोगों को इतने भारी ट्रैफ़िक से निपटने की ज़रूरत नहीं है। लेकिन स्केलेबिलिटी को समझना हमेशा अच्छा होता है और फेसबुक जैसी बड़ी कंपनी इतने भारी ट्रैफिक से कैसे निपटती है। कुछ अच्छे डिजाइन गुण हो सकते हैं :) से सीखा जा सकता है
ट्रिलियन

@ नंशी: मैं मानता हूं कि इससे सीखना उपयोगी है। मेरा कहना है कि आपको इस बात को ध्यान में रखना चाहिए कि आप क्या डिजाइन कर रहे हैं। 1 दिन से स्केलेबिलिटी के लिए डिज़ाइन करना प्रोग्राम को क्या करता है इसे बदलना कठिन बनाता है। ज्यादातर स्थितियों में सादगी अधिक महत्वपूर्ण है। इसके अलावा, फेसबुक का रखरखाव कई लोगों द्वारा किया जाता है। उन लोगों में से प्रत्येक को केवल सिस्टम के हिस्से का विशेषज्ञ होना चाहिए।
जॉरगेन फॉग

में तुम्हारी बात समझ रहा हूँ। सहमत :)
खरबों
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.