Презентация с технической секции #BitByte - фестиваля профессионального развития, который прошел 19 мая в Санкт-Петербурге.
Дмитрий Смирнов, Ведущий разработчик компании «Фотострана»: «30 млн. пользователей - как правильно строить архитектуру?»
3. — 31 500 000 зарегистрированных пользователей
— 1 400 000 уникальных посетителей в день.
— Больше 100 человек в команде
— Входим в ТОП-20 сайтов рунета
Интересно? Заходи на http://job.fotostrana.ru
4. О чем расскажу?
• Обработка запроса и генерация HTML
• Как мы отдаем статику
• Хранение данных
Интересно? Заходи на http://job.fotostrana.ru
15. Фотосхема
• 11 Тб - объем пользовательских фотографий
• 250.000 - новых фоток в сутки
• 4000 req/s
Интересно? Заходи на http://job.fotostrana.ru
16. Фотосхема
• Кэшв RAM
+ Кэш на SSD (для маленьких
файлов)
• Кэш в RAM
• Кэш на HDD
• Большие SATA диски
• Полное дублирование
файлов между серверами
Интересно? Заходи на http://job.fotostrana.ru
21. Хранение данных
• MySQL
• Memcached
• Lemon – самописная NoSQL
• Демоны на C++
Интересно? Заходи на http://job.fotostrana.ru
22. • 14 серверов
• 110.000 / мин SELECT
• 25.000 / мин UPDATE
картинка про alter таблички на 30кк записей (15Гбайт)
Интересно? Заходи на http://job.fotostrana.ru
26. MySQL плохо делает 3 вещи:
• Удаление большого количества данных
• Очень частые изменения данных
• Частые выборки
Интересно? Заходи на http://job.fotostrana.ru
27. Решение – NoSQL.
Lemon
Lemon:
• Простое key-value хранилище
• Все данные в памяти
• Периодический сброс данных на диск
Интересно? Заходи на http://job.fotostrana.ru
29. Демоны
Что сделали:
• Модуль для PHP
• Разработали протокол взаимодействия
Всего больше 30:
• Гости, контакты, мессенджер, питомцы, поиск,
встречи, голосвание…
Интересно? Заходи на http://job.fotostrana.ru
30. Пример: демон гостей
<?
$guests->call(‘add_guest’, array(
$toUserId,
$guestId,
$source,
));
$list = $guests->call(‘get_guest_list’, array(
$forUserId,
$limit,
$offset,
)); // $list = array(array(guestId, time, source), …)
Интересно? Заходи на http://job.fotostrana.ru
31. HTTP демоны
/user/123 /chat/?userId=123
Интересно? Заходи на http://job.fotostrana.ru
32. HTTP демоны
• Быстрее PHP, в 10 раз!
• > 50% запросов на балансер попадают к
демонам
• Всего 7 серверов
Интересно? Заходи на http://job.fotostrana.ru
33. Подводя итоги
• Нет преждевременной оптимизации
• Нет трендам, да цифрам
• Не бойтесь экспериментировать
• Проверяйте все сами
Интересно? Заходи на http://job.fotostrana.ru