Spec-Zone .ru
спецификации, руководства, описания, API

16.3.3. Используя Репликацию для Масштаба

Можно использовать репликацию в качестве решения масштаба; то есть, где Вы хотите разделить загрузку запросов базы данных через многократные серверы баз данных, в пределах некоторых разумных ограничений.

Поскольку репликация работает от распределения одного ведущего устройства к одному или более ведомым устройствам, используя репликацию для работ масштаба лучше всего в среде, где у Вас есть высокое число чтений и низкое число записей/обновлений. Большинство Веб-сайтов, в которые вписываются эта категория, где пользователи просматривают интернет сайт, читая статьи, сообщения, или просматривая продукты. Обновления только происходят во время управления сеансами, или делая покупку или добавляя комментарий/сообщение к форуму.

Репликация в этой ситуации позволяет Вам распределить чтения по ведомым устройствам репликации, все еще позволяя Вашим веб-серверам связаться с ведущим устройством репликации, когда запись требуется. Можно видеть демонстрационное расположение репликации для этого сценария в рисунке 16.1, "Используя Репликацию, чтобы Улучшить Производительность Во время Масштаба".

Рисунок 16.1. Используя Репликацию, чтобы Улучшить Производительность Во время Масштаба

Используя репликацию, чтобы улучшить производительность во время масштаба

Если часть Вашего кода, который ответственен за доступ к базе данных, должным образом абстрагировалась/строилась из модулей, преобразовывая это, чтобы работать с тиражированной установкой должен быть очень гладким и легким. Измените реализацию своего доступа к базе данных, чтобы отправить все записи ведущему устройству, и отправить чтения или ведущему устройству или ведомому устройству. Если у Вашего кода нет этого уровня абстракции, устанавливая тиражированную систему дает Вам возможность и побуждение, чтобы очистить это. Запустите, создавая библиотеку-оболочку или модуль, который реализует следующие функции:

safe_ в каждых средствах имени функции, что функция заботится об обработке всех состояний ошибки. Можно использовать различные имена для функций. Важная вещь состоит в том, чтобы иметь объединенный интерфейс для того, чтобы соединиться для чтений, соединяясь для записей, делая чтение, и делая запись.

Затем преобразуйте свой клиентский код, чтобы использовать библиотеку-оболочку. Это может быть болезненным и страшным процессом сначала, но он окупается в конечном счете. Все приложения, которые используют подход, только описанный, в состоянии использовать в своих интересах основную/ведомую конфигурацию, даже включающие многократные ведомые устройства. Код намного легче поддержать, и добавляющий, что поиск и устранение неисправностей опций тривиален. Вы должны изменить только одну или две функции; например, чтобы зарегистрировать, сколько времени каждый оператор взял, или какой оператор среди выпущенных дал Вам ошибку.

Если Вы записали много кода, можно хотеть автоматизировать задачу преобразования при использовании утилиты замены, которая идет со стандартными дистрибутивами MySQL, или запишите свой собственный сценарий преобразования. Идеально, Ваш код использует непротиворечивые соглашения стиля программирования. В противном случае тогда Вы - вероятно, более обеспеченная перезапись этого так или иначе, или по крайней мере прохождение через и вручную упорядочивание этого, чтобы использовать непротиворечивый стиль.