Upload
badoo-development
View
662
Download
5
Embed Size (px)
Citation preview
О сайте
• 250 млн пользователей
• 70 тыс RPS на PHP-FPM
• 50 языков интерфейса
• 1 Пб фотографий и видео
• 2,5 ДЦ
+Стоимость ($ / Тб) +Простота для программистов
Общая архитектура v2
- SPoF в виде SAN - Сложность для админов (сборка SAN, установка
FC-свичей и карт, сложные опции монтирования по сети) - Низкая производительность - Низкая надежность (драйвера FC-карт, сами FC-карты,
непосредственно SAN)
Общая архитектура v3 (v2+replication)
Fibre Channel
Photo servers + SSD
Storage Area Network x2
SSD SSD SSD
+Стоимость ($ / Тб) +Простота для программистов
Общая архитектура v3
- SPoF в виде SAN - Сложность для админов (сборка SAN, установка
FC-свичей и карт, сложные опции монтирования по сети) - Низкая производительность - Низкая надежность (драйвера FC-карт, сами FC-карты,
непосредственно SAN)
Общая архитектура v4 («облако»)
+Стоимость ($ / Тб) +Простота для админов +Отказоустойчивость +Производительность- Высокая сложность разработки
Отдача фотографий
Cache servers
Intranet (Ethernet)
Local Traffic Manager
Internet (Ethernet)
Global Traffic Manager
Кеширующие сервера
•Нужны для уменьшения нагрузки на SAN
•Своя логика: кеширование после нескольких хитов вместо LRU
• Cache hit ratio - 98% • 100k RPS на фотокеши • 2k RPS на фотосервера
Регистрация пользователя
• у каждого пользователя есть свой place_id
• place_id определяет фото-сервер и базовый путь на диске
• 12345 => /shared/photos/12/3/4/5/
Размещение фотографий
• Соответствие «place_id => hostname» в конфиге приложения
/photos/12/3/4/5/67890/d45/45678_920.jpg
place_id user_id photo_id size
photo_id/1000
Путь на диске:
Фотографии на сайте
Запросы приходят на URI вида:
/<place_id>/<user_id>/<photo_id>_<size>.jpg
Пример:
/12345/67890123/45678_920.jpg
place_id user_id photo_id size
Фотографии на сайте
Домен + начало URI:
http://pcache-pv-eu1.badoocdn.com/p23/
eu1 и us1 - названия ДЦ
p23 - номер кеширующего сервера
URI до фотографии может быть зашифрован:
http://.../p23/hidden?euri=...
Заключение
• Храним 1 Пб фотографий • Использовали SAN
• Сделали user-level репликацию
• Перешли на локальные диски
• Отдача фотографий через кеширующие сервера