19.4.5 Использование репликации для масштабирования
Вы можете использовать репликацию как решение для масштабирования; то есть, когда вы хотите распределить нагрузку баз данных по нескольким серверам баз данных, в рамках разумных ограничений.
Поскольку репликация работает от распределения одного источника до одного или нескольких реплик, использование репликации для масштабирования лучше всего работает в среде с высоким числом чтений и низким числом записей/обновлений. Большинство веб-сайтов подходят под эту категорию, где пользователи просматривают сайт, читают статьи, сообщения или просматривают продукты. Обновления происходят только во время управления сеансами или при совершении покупки или добавлении комментария/сообщения на форуме.
Репликация в этой ситуации позволяет распределять чтение по репликам, одновременно позволяя вашим веб-серверам взаимодействовать с источником при необходимости записи. Вы можете увидеть пример схемы репликации для этой ситуации на рисунке 19.1 «Использование репликации для повышения производительности при масштабировании».
Рисунок 19.1 Использование репликации для повышения производительности при масштабировании
Если часть вашего кода, ответственная за доступ к базе данных, была должным образом абстрагирована/модулизирована, ее конвертация для работы с реплицированной настройкой должна быть очень гладкой и легкой. Измените реализацию доступа к базе данных, чтобы отправлять все записи в источник, а чтение — либо в источник, либо в реплику. Если ваш код не имеет такого уровня абстракции, настройка реплицированной системы дает вам возможность и мотивацию ее улучшить. Начните с создания библиотеки или модуля-оболочки, который реализует следующие функции:
safe_writer_connect()safe_reader_connect()safe_reader_statement()safe_writer_statement()
safe_ в каждом имени функции означает, что функция обрабатывает все условия ошибок. Вы можете использовать разные имена для функций. Важно иметь унифицированный интерфейс для подключения для чтения, подключения для записи, выполнения чтения и выполнения записи.
Затем преобразуйте ваш клиентский код для использования библиотеки-оболочки. Вначале это может быть болезненный и пугающий процесс, но в долгосрочной перспективе это окупится. Все приложения, которые используют описанный подход, могут воспользоваться конфигурацией источник/реплика, даже включающей несколько реплик. Код гораздо легче поддерживать, и добавление опций отладки — это тривиальная задача. Вам нужно изменить только одну или две функции (например, для регистрации того, сколько времени заняло каждое выражение, или какое выражение из тех, что были выпущены, привело к ошибке).
Если вы написали много кода, вы можете автоматизировать задачу конвертации, написав скрипт конвертации. В идеале ваш код использует соглашения о согласованном стиле программирования. Если нет, то вам, вероятно, лучше переписать его или, по крайней мере, пройтись и вручную привести его к использованию согласованного стиля.
© 2025 Oracle
Licensed under the GPLv2 License.