Главная > Open Source, PHP, Высокопроизводительная архитектура, Разное, СУБД > DBSlayer — прокси для создания высокопроизводительного кластера СУБД MySQL от The New York Times

DBSlayer — прокси для создания высокопроизводительного кластера СУБД MySQL от The New York Times

30 октября 2007

Сегодня утром, читая новости, приятно удивила совсем, вроде, не относящаяся к миру Open-Source, да и по большому счету, IT тоже, компания - The New York Times Company. Оказалось, что там не только издают успешные газеты, поддерживают известнейшие сайты (имеется ввиду, сам сайт газеты The New York Times и проект Linux.com), но и тамошние IT-департаменты работают, причём часто делают то, что мало кому удаётся. Не так давно они уже отметились, открыв под свободной лицензией свой модуль к PHP, позволяющий разгрузить высоконагруженные сайты с применением XSLT - XSLCache кёширует таблицы стилей и позволяет достичь в два с половиной раза большей производительности по сравнению со стандартным модулем.

Но такие технологии ещё не так распространены, так что выгоды от этого модуля получат лишь немногие, хотя, конечно, потихоньку XML входит в нашу жизнь. А вот сегодняшняя разработка придётся как нельзя кстати для тех, кто планирует уже здесь и сейчас разрабатывать или поддерживать высокопроизводительные системы на базе платформы LAMP (Linux-Apache-MySQL-PHP).

DBSlayer - специальный прокси-сервер, дополнительный уровень абстракции между приложением и пулом серверов баз данных (пока только MySQL, но в будущем обещается и поддержка других СУБД). Он предназначен для устранения бутылочного горлышка текущих систем - ограничения на количество подключений к базе, а также добавляет поддержку кластеризации, балансировки нагрузки и другие нужные в серьёзных проектах функциональности.

Да что говорить, программисты из New York Times пошли ещё дальше - прокси-сервер работает по упрощённому протоколу HTTP и принимает запросы в формате GET (в текущем релизе), а возвращает ответ в формате JSON, что позволяет в ряде случаев совсем отказаться от дальнейших преобразований, сразу используя полученный результат в своей программе.

Прокси сам формирует свой пул соединений с базой данных, автоматически использует балансировку нагрузки, распределяя запросы по серверам (используя алгоритм Round robin DNS), а также автоматически и прозрачно переподключается к другому серверу в случае отказа одного из серверов БД. Приложение написано на языке С и, по заверениям разработчиков, очень-очень быстрое, так что не станет еще один фактором нагрузки на сервер - думаю, им можно доверять в этом плане, ведь он обкатывается на одном из самых высоконагруженных сайтов СМИ.

DBSlayer позволяет без проблем, а часто даже прозрачно для приложения, производить любые операции с серверами БД - переносить на другие физические сервера, менять настройки и т.п. действия. В то же время, есть случаи, когда прокси будет бессилен - к примеру, в случае множества небольших SELECT-запросов, также пока не поддерживается разделение данных (partitions), и работает он пока в режиме master-many slaves.

Текущая версия прокси-сервера имеет номер beta-10, работает только с запросами GET, только с базой данных MySQL 5.0 и выше, требует Apache Portable Runtime (APR) и Apache Portable Runtime Utility (APU) версий 1.0 или выше, и свободного порта 9090 для приёма запросов. Пока присутствует версия для Linux и Solaris (в том числе и 64-битных версий), но разработчики приглашают всех желающих помочь в портировании на другие системы, в том числе и Win32 платформу, ведь все необходимые компоненты кроссплатформенные, так что проблем с переносом не должно быть. Распространяется пакет под лицензией Apache License 2.0.

Конечно, это далеко не единственная система для аналогичных задач. К примеру, недавно сама компания MySQL AB открыла проект MySQL Proxy, который выполняет примерно те же самые задачи, разве что не столь высоком уровне (без поддержки HTTP и JSON, он работает прозрачно для клиента на уровне соединений между драйвером и СУБД), и к тому же доступен для различных платформ, теперь еще и для Win32. Зато декларируется возможность анализа запросов и выполнения над ними заранее заданных действий, а также пост-обработка ответа сервера, в частности применяя скриптование действий на языке Lua. В случае, если разработка столь многообещающего проекта будет продолжатся и мы дождёмся всего обещанного в версии 1.0, то это может серьёзно повлиять на архитектуру высоконагруженных LAMP-платформ.

Системы вроде SQL Relay также претендуют на универсальные решения подобных задач, причём уже зарекомендовавшие себя в широком спектре продуктов и годами испытанные на высоконагруженных проектах. Поддерживая все необходимые функции, имея поддержку всех распространённых СУБД и языков программирования, SQL Relay пока видится самым реальным и первым из списка конкурентов для построения мощной масштабированной системы хранения данных, используя open-source СУБД вроде MySQL, PostgreSQL или Firebird/Interbase.

Тем не менее, разработка программистов из New York Times очень интересная и перспективная, в первую очередь, скажем, для средних проектов, которые, с одной стороны, требуют средств обеспечения масштабированности и отказоустойчивости, с другой этого требуется достичь максимально просто и не используя сложнейшие "военные" технологические решения. А дополнительная функциональность, вроде применения JSON-сообщений для ответов сервера во многих случаях позволит вообще сократить серверный код (например, в специализированных серверах, которые обрабатывают большой поток однотипных запросов - специализированных поисковых и т.п.)

  1. 29 февраля 2008 в 23:54 | #1

    А где можно почитать про технические особенности для реальзиции всего этого?

  2. 29 февраля 2008 в 23:57 | #2

    ну наверное на сайте разработчиков….

Комментирование отключено.