Saya telah mencari artikel / info tentang arsitektur di Facebook, tantangan & cara mereka mengatasinya. Apa yang mereka gunakan & mengapa mereka gunakan. Bagaimana mereka mengukur & apa keputusan desain untuk apa yang mereka lakukan dll. Pendukung utama adalah untuk belajar. Mengetahui tentang situs yang menangani lalu lintas besar seperti itu memberi banyak petunjuk bagi arsitek, dll. Untuk mengingat hal-hal tertentu saat merancang situs baru. Saya membagikan apa yang saya temukan.
- Grafik Ilmu & Sosial Facebook (Video)
- Skala di Facebook
- Arsitektur Obrolan Facebook
- Blog Facebook
- Arsitektur dan Desain Cassandra Facebook
- Catatan Teknik Facebook
- Quora - Arsitektur Facebook
- Facebook untuk 600 juta pengguna
- Hadoop & penggunaannya di Facebook
- Erlang di Facebook: Chat Architecture
- Caching Kinerja Facebook
- Arsitektur Facebook Connect
Saya memiliki 2 tautan lagi tetapi tidak dapat memposting karena batasan di situs ini. Juga, silakan bagikan jika ada yang lebih baik (tidak perlu terkait dengan Facebook saja).
PS - Saya tidak dapat menemukan tempat yang baik untuk berbagi penelitian ini, karena itu inisiatif ini. Semoga ini bisa membantu seseorang.
sumber
Jawaban:
Yah Facebook telah mengalami BANYAK perubahan dan awalnya tidak dirancang untuk menjadi efisien. Itu dirancang untuk melakukan pekerjaannya. Saya sama sekali tidak tahu seperti apa kode itu dan Anda mungkin tidak akan menemukan banyak info tentang itu (untuk alasan keamanan dan hak cipta yang jelas), tetapi lihatlah API. Lihatlah seberapa sering itu berubah dan seberapa banyak itu tidak berfungsi dengan baik, lagi, atau sama sekali.
Saya pikir kartu as terbesar di lengan mereka adalah Hiphop. http://developers.facebook.com/blog/post/358 Anda dapat menggunakan HipHop sendiri: https://github.com/facebook/hiphop-php/wiki
Tetapi jika Anda bertanya kepada saya itu adalah tugas yang sangat ambisius dan mungkin membuang-buang waktu. Hiphop hanya mendukung begitu banyak, ia tidak bisa begitu saja mengubah semuanya menjadi C ++. jadi apa maksud dari ini? Ya, ini memberitahu kita bahwa Facebook TIDAK sepenuhnya mengambil keuntungan dari bahasa PHP. Ini tidak menggunakan 5.3 terbaru dan saya berani bertaruh masih ada banyak yang kompatibel dengan PHP 4. Kalau tidak, mereka tidak bisa menggunakan HipHop. HipHop ADALAH IDE YANG BAIK dan perlu untuk tumbuh dan berkembang, tetapi dalam kondisi saat ini itu tidak benar-benar berguna bagi banyak orang yang membangun aplikasi PHP BARU.
Ada juga PHP ke JAVA melalui hal-hal seperti Resin / Quercus. Sekali lagi, itu tidak mendukung semuanya ...
Hal lain yang perlu diperhatikan adalah bahwa jika Anda menggunakan modul PHP non-standar, Anda tidak akan dapat mengubah kode itu menjadi C ++ atau Java. Namun ... Mari kita lihat modul PHP. Mereka dikompilasi dalam C ++. Jadi jika Anda dapat membangun modul PHP yang melakukan hal-hal (seperti parse XML, dll.) Maka Anda pada dasarnya (minus beberapa interaksi) bekerja pada kecepatan yang sama. Tentu saja Anda tidak bisa hanya membuat modul PHP untuk setiap kebutuhan yang mungkin dan seluruh aplikasi Anda karena Anda harus mengkompilasi ulang dan itu akan jauh lebih sulit untuk dikodekan, dll.
Namun ... Ada beberapa modul PHP praktis yang dapat membantu mengatasi masalah kecepatan. Meskipun pada akhirnya, kami memiliki hal yang luar biasa ini dikenal sebagai "cloud" dan dengan itu, kami dapat mengatur skala aplikasi kami (termasuk PHP) sehingga tidak masalah lagi. Perangkat keras menjadi lebih murah dan lebih murah. Amazon baru saja menurunkan harga (lagi) berbicara tentang.
Jadi, selama Anda membuat kode aplikasi PHP di sekitar gagasan bahwa itu perlu skala satu hari ... Maka saya pikir Anda baik-baik saja dan saya tidak benar-benar yakin saya akan melihat Facebook dan apa yang mereka lakukan karena ketika mereka melakukannya, itu adalah dunia yang sama sekali berbeda dan sekarang mencoba untuk menahan infrastruktur itu dan memeliharanya ... Nah, Anda mendapatkan hal-hal seperti HipHop.
Sekarang bagaimana HipHop akan membantu Anda? Tidak akan. Tidak bisa. Anda baru mulai, Anda dapat menggunakan PHP 5.3. Saya sangat merekomendasikan melihat ke dalam kerangka kerja PHP 5.3 dan semua manfaat baru yang dibawa oleh PHP 5.3 ke tabel bersama dengan pustaka SPL dan juga memikirkan database Anda juga. Kemungkinan besar Anda menyajikan konten dari basis data, jadi periksa MongoDB dan jenis basis data lainnya yang tidak memiliki skema dan berorientasi dokumen. Mereka jauh lebih cepat dan lebih baik untuk jenis situs web / aplikasi yang paling "umum".
Lihatlah perusahaan-perusahaan BARU seperti Foursquare dan Smugmug dan beberapa perusahaan lain yang memanfaatkan teknologi BARU dan BAGAIMANA mereka menggunakannya. Untuk sesukses Facebook, jujur saya tidak akan melihat mereka untuk "bagaimana" membangun situs web / aplikasi yang efisien. Saya tidak mengatakan mereka tidak memiliki orang yang sangat (sangat) berbakat yang bekerja di sana yang memecahkan masalah (mereka) secara kreatif ... Saya juga tidak mengatakan bahwa Facebook bukan ide yang bagus secara umum dan itu bukan sukses dan Anda seharusnya tidak mendapatkan ide darinya .... Saya hanya mengatakan bahwa jika Anda dapat melihat seluruh kode sumbernya, Anda mungkin tidak akan mendapat manfaat dari itu.
sumber
Facebook menggunakan struktur LAMP . Layanan back-end Facebook ditulis dalam berbagai bahasa pemrograman yang berbeda termasuk C ++, Java, Python, dan Erlang dan mereka digunakan sesuai dengan kebutuhan. Dengan LAMP, Facebook menggunakan beberapa teknologi, untuk mendukung sejumlah besar permintaan, seperti
Memcache - Ini adalah sistem cache memori yang digunakan untuk mempercepat situs web yang digerakkan oleh basis data dinamis (seperti Facebook) dengan menyimpan data dan objek dalam RAM untuk mengurangi waktu membaca. Memcache adalah bentuk utama caching Facebook dan membantu meringankan beban basis data. Memiliki sistem caching memungkinkan Facebook untuk secepat mengingat data Anda.
Hemat (protokol) - Ini adalah kerangka panggilan prosedur jarak jauh ringan untuk pengembangan layanan lintas-bahasa scalable. Hemat mendukung C ++, PHP, Python, Perl, Java, Ruby, Erlang, dan lainnya.
Cassandra (database) - Ini adalah sistem manajemen basis data yang dirancang untuk menangani sejumlah besar data yang tersebar di banyak server.
HipHop untuk PHP - Ini adalah transformator kode sumber untuk kode skrip PHP dan dibuat untuk menghemat sumber daya server. HipHop mengubah kode sumber PHP menjadi C ++ yang dioptimalkan. Setelah melakukan ini, ia menggunakan g ++ untuk mengkompilasinya ke kode mesin.
Jika kita membahas lebih detail, maka jawaban untuk pertanyaan ini lebih panjang. Kami dapat memahami lebih banyak dari postingan berikut:
sumber
Saya pikir Anda mungkin dapat belajar banyak dari desain Facebook, sama seperti Anda dapat dari desain sistem perangkat lunak besar yang sukses. Namun, bagi saya tampaknya Anda tidak perlu mengingat desain Facebook saat ini ketika merancang sistem baru.
Mengapa Anda ingin dapat menangani lalu lintas yang harus ditangani Facebook? Kemungkinannya adalah Anda tidak akan pernah harus melakukannya, tidak peduli seberapa berbakatnya Anda seorang programmer. Facebook sendiri tidak dirancang sejak awal untuk skalabilitas sebesar itu, yang mungkin merupakan pelajaran paling penting untuk dipelajari darinya.
Jika Anda ingin belajar tentang sistem perangkat lunak non-sepele, saya dapat merekomendasikan buku "Membedah Aplikasi C #" tentang pengembangan IDE SharpDevelop. Itu tidak dicetak, tetapi tersedia secara online gratis . Buku ini memberi Anda sekilas ke aplikasi nyata dan memberikan wawasan tentang IDE yang berguna bagi seorang programmer.
sumber