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

MySQL
Мы уже рассказывали, на чём работает 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
Tags:diggMySQLApachePHPMyISAMInnoDBmemcachedCacti
Hubs: MySQL
+62
1.3k 47
Comments 21

Popular right now

Комплексное обучение PHP
April 19, 202120,000 ₽Loftschool
PHP. Уровень 1. Основы создания сайтов
February 1, 202115,990 ₽Специалист.ру
Apache Spark и Scala для дата-инженеров 1.0
February 16, 202162,000 ₽New Professions Lab
Основы HTML и CSS
February 1, 2021FreeНетология