четверг, 30 октября 2014 г.

Презентация Facebook на ВМК МГУ

28 октября в на ВМК МГУ ребята из Facebook рассказывали про устройство Facebook TAO - хранилище социального графа.
Небольшая выжимка:

  • Социальный граф - набор объектов и связи между ними. Например: пост связан с пользователем, фотография к посту связана с постом, коментарии и лайки других пользователей связаны с постом, пользователи могут иметь отношение дружбы, и т.д.
  • Чтобы отрисовать страницу пользователя, нужно загрузить все ноды графа, связанные с последним событием;
  • На загрузку одной ноды графа отводится 1 милисекунда;
  • Особенность кеширования - наиболее горячие данные те, которые недавно создались;
  • У каждого объекта графа есть уникальный 64 битный глобальный идентификатор. Уникальность гарантируется так: в идентификаторе объекта N бит отводится под идентификатор пользователя, остальные биты под событие. Главное для каждого пользователя уметь получить следующий уникальный идентификатор события. Это не сложно и не требует глобальной синхронизации.
  • В качестве хранилища свой отбранчёванный MySQL с InnoDB;
  • Многоуровневое кеширование c Memcached и McRouter;
  • Есть процедура прогревания кеша;
  • 99.8% - чтение данных, 0.2% - запись;
  • 3 датацентра в США, 1 в Европе;
  • В каждом ДЦ есть мастер нода MySQL. Все записи идут в мастер ноду, далее асинхронно реплицируются;
  • Если мастер нода падает, выбирается новая мастер нода;
  • Чтобы не задолбать бэкенд, над каждым инстансом MySQL располагается Master Cache, через который идут все запросы в этот инстанс. Это позволяет контролировать нагрузку на  MySQL;
  • Очень большой кеш-хит, поэтому до бэкенда MySQL долетает мало запросов (около 1 KRPS на инстанс);
  • Если все кеши отвалятся, MySQL бекенд нагрузку не выдержит;
  • Для проведения аналитики по социальному графу есть выгрузка данных в Hive;
  • Шардируют базу по диапазонам идентификатора, поэтому процедуры перешардирования нет;
  • Есть региональные прокси для снижения латентности https handshake;
Более подробно можно почитать в статье

Комментариев нет:

Отправить комментарий