2010-08-20 12 views
152

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

  1. Facebook Science & Social Graph (Video)
  2. Scale at Facebook
  3. Facebook Chat Architecture
  4. Facebook Blog
  5. Facebook Cassandra Architecture and Design
  6. Facebook Engineering Notes
  7. Quora - Facebook Architecture
  8. Facebook for 600M users
  9. Hadoop & its usage at Facebook
  10. Erlang at Facebook: Chat Architecture
  11. Facebook Performance Caching
  12. Facebook Connect Architecture

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

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

+2

2. फेसबुक (वीडियो) पर स्केल - http: // www .infoq.com/प्रस्तुतिकरण/स्केल-ऑन-फेसबुक 3. फेसबुक चैट - एचटी टीपी: //www.infoq.com/news/2008/05/facebookchatarchitecture –

+2

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

+1

[फेसबुक इंजीनियरिंग ब्लॉग] (http://www.facebook.com/notes.php?id= 9445547199) कभी-कभी अपने वास्तुकला और स्केलिंग चुनौतियों में महत्वपूर्ण अंतर्दृष्टि है। –

उत्तर

31

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

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

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

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

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

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

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

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

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

+1

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

+0

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

+0

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

6

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

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

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

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

+1

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

+0

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

+0

मैं आपका पॉइंट देखता हूं। इस बात से सहमत :) – trillions

14

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

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

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

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

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

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

  1. How Does Facebook Work?
  2. Data Management, Facebook-style
  3. Facebook database design?
  4. Facebook wall's database structure
  5. Facebook "like" data structure
संबंधित मुद्दे