1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/lkclkc88-RWS

Клонировать/Скачать
README.md 5.3 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 14.03.2025 05:24 9556062

RWS

RWS — это очень маленький компонент, реализующий функцию разделения чтения и записи базы данных.

Общие сведения:

В большинстве проектов для предотвращения одиночной точки отказа используются основные и резервные серверы для обеспечения высокой доступности базы данных. В такой архитектуре основные операции выполняются на основном сервере, в то время как резервные серверы используются только для репликации данных, что является нерациональным использованием ресурсов. Поэтому можно направлять часть запросов на выполнение на резервных серверах, чтобы снизить нагрузку на основной сервер. Кроме того, если система имеет низкое соотношение чтения и записи, конкуренция за блокировки чтения и записи может снижать производительность запросов базы данных.### Функции: Компонент реализует простую функцию разделения чтения и записи через интерфейсы ReadWriteRule и LoadRule для выбора между основным и резервным серверами при получении соединения с базой данных. Также используется интерфейс LoadRule для распределения нагрузки между несколькими резервными серверами.

  • ReadWriteDataSource: Основной класс для реализации разделения чтения и записи. Предоставляет следующие свойства:
    • globalCanWrite: Глобальная возможность записи, значение по умолчанию true, что указывает на возможность выполнения записей данным источником.
    • writer: Исходник для записи, используемый для получения соединения с базой данных при выполнении записей.
    • readers: Исходники для чтения, используемые для получения соединения с базой данных при выполнении запросов. Если список читающих источников пуст, соединение будет взято из источника записи.
    • loadRule: Правила распределения нагрузки, используемые для определения распределения нагрузки между несколькими читающими источниками.
    • readWriteRules: Правила разделения чтения и записи, используемые для определения использования источника записи или чтения при получении соединения.### Дополнительная защита: Компонент предоставляет только базовую функциональность и не предлагает дополнительных средств защиты от отказа. Пользователи должны самостоятельно проектировать планы защиты от отказа, такие как keepalived, Amoeba и т.д.

Проблема задержки основного и резервного серверов:

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

Причины разработки компонента:

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

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/lkclkc88-RWS.git
git@api.gitlife.ru:oschina-mirror/lkclkc88-RWS.git
oschina-mirror
lkclkc88-RWS
lkclkc88-RWS
master