Как стать автором
Обновить

На чём работает digg

Время на прочтение2 мин
Количество просмотров1.6K
Мы уже рассказывали, на чём работает MySpace и как устроены дата-центры Google, а теперь посмотрим на более мелкие проекты, такие как digg. Здесь нет ничего особо уникального и сделанного «по спецзаказу», как в первых двух случаях, но всё равно интересно.

В момент запуска проект размещался на единственном Linux-сервере с Apache 1.3 и PHP 4.x. Для управления базами данных использовались MySQL 4.0, таблицы MyISAM и встроенный поиск MySQL. Разработчики специально старались использовать как можно больше продуктов open source, чтобы гарантировать быстрое развитие проекта без финансовых затруднений. Кроме вышеперечисленных, нашли применение свободные пакеты ImageMagick, Ispell, prototype/scriptaculous и другие. Вскоре к одному серверу добавился другой и начался бурный рост проекта.

С появлением второго сервера таблицы MyISAM пришлось дополнить таблицами InnoDB. После появления третьего сервера были установлены Apache 2.x и система master-slave репликации в MySQL, начали использовать memcached, перешли на PHP 5.x и наняли администратора баз данных.

Сейчас система серверов digg состоит из двух относительно независимых кластеров. Отдельные PHP-серверы, которые находятся за своим распределителем нагрузки, взаимодействуют с серверами MySQL и генерируют страницы в режиме реального времени.



Важную роль в процессе генерации страниц отводится модулю кэширования memcached, который сильно снижает нагрузку на серверы. Чтобы повысить эффективность его работы на специфичном контенте социального СМИ, был написан дополнительный программный код специально для сайта digg.

Группа серверов MySQL подразделяется на специализированные кластеры: основной, поисковый, операционный.



Понятно, что в такой ситуации можно прибегнуть к разделению базы данных (sharding). Такой подход имеет как плюсы, так и минусы. К преимуществам шардинга относятся рост производительности и повышение управляемости/настраиваемости СУБД, а к недостаткам — повышенная нагрузка на PHP, сложное программирование и потеря поддержки SQL. Хотя MySQL поддерживает несколько видов шардинга, но digg не использует ни один из них, потому что все эти технологии, по мнению разработчиков, были довольно сырыми на тот момент.

На сегодняшний день базы данных digg представляют собой довольно разнородную структуру из MySQL версий 5.0.22, 5.0.27, 5.0.30 и 5.0.32, есть ещё MySQL 4.1 для поддержки Cacti. Инсталляция и поддержка баз осуществляется через операционную систему Debian.

Для онлайновой OLTP-обработки транзакций используются таблицы InnoDB (они к тому же быстрее восстанавливаются после хардверных сбоев), а для аналитической OLAP-обработки — таблицы MyISAM (более быстрая загрузка и обновление версий).

Рост digg достиг такой стадии, что перед инженерами встал целый ряд новых проблем, связанных с масштабированием инфраструктуры. Покупка и установка всё больших объёмов RAM перестала приносить эффект.

via Презентация с конференции MySQL UC 2007
Теги:
Хабы:
+62
Комментарии21

Публикации

Истории

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн