2013-10-28 2 views
1

Я изучил статью о memcached, опубликованную в facebook. Там я обнаружил, что у них есть один главный регион, а все остальные географические регионы - это рабы.Как facebook достигает масштабируемости записи?

  1. Я хочу знать, как facebook обрабатывает область мастера с точки зрения масштабируемости записи, посреди такой высокой нагрузки?

  2. Почему у этого есть только одна область мастера?

  3. Каковы другие варианты, чем ручной шортинг для достижения масштабируемости записи?

+0

Что мне интересно знать, как обрабатывается область мастера? как в том, сколько реплик они поддерживают! Очевидно, что у них не может быть одного сервера, действующего как Мастер ... у них должен быть кластер главных серверов и некоторый способ разделения запросов на запись. –

+0

Я только что наткнулся на то, что люди делятся более чем на 4,75 миллиарда вещей каждый день на Facebook, такие как обновления статуса, настенные сообщения, фотографии, видео и комментарии, говорит Facebook. Они также «любят» более 4,5 миллиардов вещей ежедневно и отправляют более 10 миллиардов сообщений. –

ответ

1

Бывший глава офиса в Сиэтле в Facebook Ари Штейнберг приехал в мой университетский колледж Университета Вашингтона, чтобы рассказать о том, как Facebook масштабирует свои серверы.

Из того, что я помню, у Facebook все запросы на запись отправляются на главный сервер, а затем эта информация распространяется на серверы в других регионах. Это работает, потому что количество запросов на запись намного меньше количества запросов на чтение, поэтому одна группа серверов может обрабатывать все запросы на запись. (Подумайте о типичном использовании Facebook ... читайте сообщения, читайте сообщения, возможно, оставляйте комментарий или сообщение раз в то время).

Это означает, что если вы выполняете запрос на чтение и ваш запрос отправляется группе серверов, которая не является основной группой, есть вероятность, что вы просматриваете старые сообщения. Если кто-то опубликовал новый статус, а главный сервер не отправил сообщение на сервер, на котором вы читаете, он еще не узнает об этой записи и предоставит вам старые данные. Facebook заставляет быстро загружать страницы поверх наиболее точных данных, поэтому они используют этот дизайн. Большинство пользователей никогда не поймут, что они просматривают старую информацию, потому что они не знают, что новые сообщения существуют.

Примечание: Я считаю, что они упомянули, что у них есть специальный случай, когда вы пытаетесь читать свои собственные записи. Если вы обновите изображение своего профиля и обновите страницу, они будут уверены, что ваш запрос будет отправлен на главный сервер, чтобы вы получили самую последнюю информацию. Это плохой пользовательский опыт, если вы обновляете свой профиль, а затем видите свое старое изображение при обновлении страницы. Однако, если кто-то другой просматривает ваш профиль, не имеет значения, какая картина показана, потому что пользователь не знает, что вы его обновили.

+0

нравится, должно генерировать некоторое количество запросов на запись, все вопросы в том, как они хранятся. – DevZer0

+0

Я не думаю, что пространство для хранения является проблемой. Каждый центр обработки данных имеет всю сохраненную в нем информацию. Проблема заключается в количестве запросов/секунд, которые может обрабатывать каждый центр обработки данных, и минимизации времени, которое требуется для возврата запроса. Даже с симпатичными число читаний все еще >>> количество понравившихся. Однако также возможно, что они обрабатывают симпатии и другие подобные вещи по-разному, потому что они менее важны, чтобы быть точными. –

+0

Я также помню, что Ари, упоминая подобное, на самом деле очень неточен для сообщений с большим количеством симпатий. Не помню, почему это так. Возможно потому, что точность подобного счета не очень важна, поэтому они не тратят много ресурсов, беспокоясь о своей точности. –

Смежные вопросы