Социальные сети — это искусство общения с теми, кто разделяет общие интересы. Ваша «сеть» — это сообщество, которое помогает вам объединиться с другими и предлагает множество преимуществ. Сеть через сайты социальных сетей произвела революцию в том, как мы используем Интернет, и находится на переднем крае того, что мы сейчас называем Web 2.0.
Facebook это социальная сеть. Люди были в фейсбуке ?? вот уже 6 лет, что делает Facebook самой популярной социальной сетью с более чем 350 миллионами пользователей по всему миру. Но как работает Facebook?
В этой статье я расскажу о внутренней работе Facebook, охватывающей его архитектуру и инфраструктуру внешнего интерфейса / бэкэнда », -« основные моменты, которые объединяют Facebook.
Как работает Facebook? »
Facebook использует различные сервисы, инструменты и языки программирования для создания своей основной инфраструктуры. Во внешнем интерфейсе их серверы запускают стек LAMP (Linux, Apache, MySQL и PHP) с Memcache. Не специалист по информатике? Давайте посмотрим, что именно это значит.
Linux апаш
Эта часть довольно очевидна. Linux — это Unix-подобное ядро операционной системы компьютера. Это открытый исходный код, очень настраиваемый, и хорошо для безопасности. Facebook работает под управлением операционной системы Linux на HTTP-серверах Apache. Apache также бесплатен и является самым популярным веб-сервером с открытым исходным кодом.
MySQL
Для базы данных Facebook использует MySQL из-за его скорости и надежности. MySQL используется главным образом как хранилище значений ключей, так как данные случайным образом распределяются между большим набором логических экземпляров. Эти логические экземпляры распределены по физическим узлам, и распределение нагрузки выполняется на уровне физических узлов.
Что касается настроек, Facebook разработал собственную схему разделения, в которой глобальный идентификатор присваивается всем данным. У них также есть настраиваемая схема архивации, основанная на частоте и актуальности данных для каждого пользователя. Большая часть данных распределяется случайным образом.
PHP
Facebook использует PHP, потому что это хороший язык веб-программирования с обширной поддержкой и активным сообществом разработчиков, и он хорош для быстрой итерации. PHP — это динамически типизированный / интерпретируемый язык сценариев.
Memcache
Memcache — это система кеширования памяти, которая используется для ускорения динамических веб-сайтов, управляемых базой данных (например, Facebook), путем кеширования данных и объектов в оперативной памяти для сокращения времени чтения. Memcache является основной формой кэширования Facebook и помогает снизить нагрузку на базу данных.
Наличие системы кеширования позволяет Facebook работать так же быстро, как и при вызове ваших данных. Если ему не нужно идти в базу данных, он просто извлечет ваши данные из кэша на основе вашего идентификатора пользователя.
Недостатки использования лампы
Facebook осознал, что использование стека LAMP имеет свои недостатки. Примечательно, что PHP не обязательно оптимизирован для больших веб-сайтов и поэтому трудно масштабируется. Кроме того, это не самый быстрый исполняемый язык, и структура расширения сложна в использовании.
Майк Шропфер, вице-президент Facebook по инженерным вопросам, недавно дал интервью в EmTech @ MIT по этому поводу. «Масштабирование любого веб-сайта является сложной задачей, — сказал Шрепфер, — но масштабирование социальной сети сопряжено с уникальными проблемами».
Далее он сказал, что в отличие от других веб-сайтов, вы не можете просто добавить больше серверов для решения проблемы из-за «огромного взаимосвязанного набора данных Facebook». Новые соединения создаются постоянно из-за активности пользователей.
Facebook вырос настолько быстро, что они часто сталкиваются с проблемами, касающимися запросов к базе данных, кэширования и хранения данных. Их база данных огромна и в значительной степени сложна. Чтобы объяснить это, Facebook запустил множество проектов с открытым исходным кодом и бэкэнд-сервисов.
Как работает Facebook? »
Бэкэнд-сервисы Facebook написаны на разных языках программирования, включая C ++, Java, Python и Erlang. Их философия создания услуг заключается в следующем:
1. Создать сервис если нужно
2. Создайте структуру / набор инструментов для более легкого создания сервисов.
3. Используйте правильный язык программирования для задачи
Список всех событий с открытым исходным кодом Facebook можно найти здесь. Я расскажу о нескольких основных инструментах, разработанных Facebook.
Экономия (протокол)
Thrift — это легковесная инфраструктура удаленного вызова процедур для разработки масштабируемых кросс-языковых сервисов. Thrift поддерживает C ++, PHP, Python, Perl, Java, Ruby, Erlang и другие. Это быстро, экономит время разработки и обеспечивает разделение труда на высокопроизводительных серверах и приложениях.
Писец (лог-сервер)
Scribe — это сервер для агрегирования данных журнала, передаваемых в реальном времени со многих других серверов. Это масштабируемая структура, полезная для регистрации широкого спектра данных. Он построен на вершине Thrift.
Кассандра (база данных)
Cassandra — это система управления базами данных, предназначенная для обработки больших объемов данных, распределенных по многим серверам. Он поддерживает функцию «Входящие» в Facebook и предоставляет структурированное хранилище значений ключей с возможной согласованностью.
Хип-хоп для PHP
HipHop for PHP — это преобразователь исходного кода для кода PHP-скрипта, созданный для экономии ресурсов сервера. HipHop преобразует исходный код PHP в оптимизированный C ++. После этого он использует g ++ для компиляции в машинный код.
Заключение
Короче говоря, это Facebook. Эта статья могла бы легко быть на 37 страниц длиннее, если бы я хотел вдаваться в подробности, но чтобы ответить на вопрос «Как работает Facebook?» ?? Я думаю, этого будет достаточно. Если вы посмотрите на все функции и инновации, основная идея Facebook действительно очень проста », чтобы люди оставались на связи. Facebook осознает всю мощь социальных сетей и постоянно вводит новшества, чтобы сделать их сервис лучшим в бизнесе.
Вам помогла данная статья? Оставьте свои мысли, комментарии и идеи ниже!