Плагины mysqlnd
и приложение MySQL Proxy — разные
технологии с разными подходами. Оба инструмента решают
стандартные задачи наподобие балансировки
нагрузки, мониторинга и улучшения производительности.
Важное отличие состоит в том, что приложение MySQL Proxy работает
со всеми MySQL-клиентами, тогда как плагины
mysqlnd
работают только с PHP-приложениями.
Как PHP-модуль, плагин mysqlnd
устанавливается
на сервер PHP-приложений вместе с остальными компонентами
PHP-дистрибутива. MySQL Proxy запускают на сервере
приложений PHP или устанавливают на отдельной машине
для поддержки множественных серверов PHP-приложений.
Установка MySQL Proxy на сервере приложений даёт два преимущества:
Отсутствие единой точки отказа
Лёгкость в горизонтальном масштабировании и масштабировании за счёт клиента
Приложение MySQL Proxy и плагины mysqlnd
легко решают проблемы, которые иначе
потребовали бы изменений в текущих приложениях.
Тем не менее, MySQL Proxy содержит и ряд недостатков:
MySQL Proxy — новый элемент и технология, которую потребуется изучить и установить.
MySQL Proxy требует знания скриптового языка Lua.
Приложения MySQL Proxy настраиваются под конкретные задачи средствами языков C и Lua.
Lua — предпочтительный скриптовый язык для MySQL
Proxy. Для большей части PHP-экспертов Lua новый
язык, который потребуется изучать. Плагин
драйвера mysqlnd
пишут на C
или на PHP через модуль » PECL/mysqlnd_uh.
MySQL Proxy работает как демон — фоновый процесс. MySQL Proxy может вспомнить ранее
принятые решения, так как все состояние может быть сохранено. Однако плагины
mysqlnd
привязаны к жизненному циклу PHP, базирующемуся на
запросах. Также MySQL Proxy может разделять единожды полученный результат между
разными серверами приложений. Плагины mysqlnd
для решения этой
задачи должны использовать какое-нибудь постоянное хранилище, для сохранения
результатов между запросами. Например, для этого может быть использован другой демон,
такой как Memcache. Так что в этом случае MySQL Proxy работает явно лучше.
MySQL Proxy работает поверх сетевых протоколов. С помощью MySQL Proxy вы можете разобрать и подвергнуть инженерному анализу протокол MySQL Client Server. Что-либо поменять можно только манипулируя протоколом обмена. Если протокол вдруг поменяется (что бывает крайне редко), скрипты MySQL Proxy потребуется переписывать.
Плагины Mysqlnd
работают поверх C API,
который дублирует клиент libmysqlclient
. Этот API-интерфейс языка C по сути обычная обёртка вокруг
протокола MySQL Client Server. Вы можете перехватывать каждый
вызов API-интерфейса C. PHP использует API-интерфейс C, фактически можно
перехватывать вообще каждый вызов PHP, без программирования на уровне протокола обмена.
Mysqlnd
реализует протокол обмена.
Таким образом, плагины могут перехватывать, исследовать, менять
и даже целиком заменять протокол связи. Хотя
обычно ничего этого не требуется.
Плагины позволяют вам использовать два уровня (C API и
протокол обмена), в этом они гораздо гибче, чем MySQL
Proxy. Если плагин mysqlnd
реализован с
использованием C API, изменения протокола обмена не
потребуют изменения плагина.