Рекламное объявление
Социальные сети - это искусство общения с теми, кто разделяет общие интересы. Ваша «сеть» - это сообщество, которое помогает вам объединиться с другими и предлагает множество преимуществ. Сеть через сайты социальных сетей произвела революцию в том, как мы используем Интернет, и находится в авангарде того, что мы сейчас называем Web 2.0.
facebook является социальная сеть. Люди уже 6 лет пишут друг другу, делая facebook самая используемая социальная сеть с более чем 350 миллионами пользователей по всему миру. Но как работает Facebook?
В этой статье я расскажу о внутренней работе Facebook, освещая ее архитектура и инфраструктура внешнего интерфейса / бэкенда »», которые объединяют Facebook.
Как работает Facebook? »
Facebook использует различные сервисы, инструменты и языки программирования для создания своей основной инфраструктуры. Во внешнем интерфейсе их серверы работают со стеком LAMP (Linux, Apache, MySQL и PHP) с Memcache. Не специалист по информатике? Давайте посмотрим, что именно это означает.
Linux и Apache
Эта часть довольно очевидна. Linux Unix-подобное ядро операционной системы компьютера. Это открытый исходный код, очень настраиваемый, и хорошо для безопасности. Facebook работает под управлением операционной системы Linux на HTTP-серверах 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 поддерживает C ++, PHP, Python, Perl, Java, Ruby, Erlang и другие. Это быстро, экономит время разработки и обеспечивает разделение труда на высокопроизводительных серверах и приложениях.
Писец (лог-сервер)
писец это сервер для агрегирования данных журнала, передаваемых в реальном времени со многих других серверов. Это масштабируемая структура, полезная для регистрации широкого спектра данных. Он построен на вершине Thrift.
Кассандра (база данных)
Cassandra это система управления базами данных, предназначенная для обработки больших объемов данных, распределенных по многим серверам. Он поддерживает функцию «Входящие» в Facebook и предоставляет структурированное хранилище значений ключей с возможной согласованностью.
Хип-хоп для PHP
Хип-хоп для PHP является преобразователем исходного кода для кода PHP-скрипта и был создан для экономии ресурсов сервера. HipHop преобразует исходный код PHP в оптимизированный C ++. После этого он использует g ++ для компиляции в машинный код.
Вывод
Короче говоря, это Facebook. Эта статья могла бы быть на 37 страниц длиннее, если бы я хотел вдаваться в подробности, но чтобы ответить на вопрос «Как работает Facebook?» Я думаю, этого будет достаточно. Если вы посмотрите на все функции и инновации, основная идея Facebook действительно очень проста », - чтобы люди оставались на связи. Facebook осознает всю мощь социальных сетей и постоянно вводит новшества, чтобы сделать их сервис лучшим в бизнесе.
Вам помогла данная статья? Оставьте свои мысли, комментарии и идеи ниже!
Стив, менеджер сообщества в VaynerMedia, увлечен социальными сетями и созданием бренда.