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

Еще одним доводом в пользу применения репликации является повышение производительности. Без сегментации данных большинство движков базы данных позволяет вести запись только в главную базу данных, но читать данные вы можете как из главной базы данных, так и из любой подчиненной. Приложение, интенсивно читающее данные, может существенно выиграть по производительности за счет распределения операций чтения по подчиненным серверам базы данных. Архитектура приложения, использующего репликацию в целях повышения производительности, показана на рис. 4.10.

Преимущества, выигрываемые за счет применения репликации, огромны, но существуют и определенные риски. Основным из них является возможность случайного исполнения операции записи в одну из подчиненных баз данных. Если это случится, вся схема репликации "развалится", потому что главная база и ее подчиненные окажутся рассогласованными, и возникнет неустранимое противоречие.

Рис. 4.10. За счет распределения операций чтения по подчиненным серверам ваше приложение может масштабироваться без кластеризации

Чтобы решить эту проблему, применяются два подхода.

± Четкое отделение логики чтения от логики записи на уровне кода и централизация установления соединений с базой данных.

± Защита подчиненных узлов от записи, т. е. присвоение им прав доступа "только для чтения" (read-only).

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

Источник: Риз Дж., Облачные вычисления: Пер. с англ. — СПб.: БХВ-Петербург, 2011. — 288 с.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете промотать до конца и оставить ответ. Pinging в настоящее время не допускается.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100