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

OSCHINA-MIRROR/gitcrazy-cetus

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
cetus-routing-strategy.md 10 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 15:50 8feb600

Cetus路由策略

1. Обзор

Cetus классифицирует SQL-запросы, отправленные клиентами, обычно разделяя DDL/DML/транзакционные и другие типы SQL на запросы на запись, а SQL запросов на выборку — на запросы на чтение. Обычно запросы на запись отправляются на основную базу данных, а запросы на чтение распределяются между подчинёнными базами данных или основной базой данных в зависимости от стратегии.

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

  • стратегия маршрутизации между основной и подчинёнными базами данных;
  • стратегия маршрутизации между подчинёнными базами данных.

2. Стратегия маршрутизации между основной и подчинёнными базами данных

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

Для некоторых бизнес-сценариев основная база данных может обрабатывать часть запросов на чтение. В этом случае необходимо настроить стратегию распределения нагрузки между запросами на чтение на основной базе данных и подчинённых базах данных. В Cetus можно настроить параметр read-master-percentage, чтобы указать процент запросов на чтение, которые будут направлены на основную базу данных по умолчанию. Диапазон значений этого параметра составляет [0, 100]. Значение по умолчанию равно 0, что означает, что все запросы на чтение сначала направляются на подчинённые базы данных, и только когда все они недоступны, они направляются на основную базу данных. Если этот параметр установлен на 100, все запросы на чтение направляются на основную базу данных. Когда значение находится в диапазоне (0, 100), запросы на чтение маршрутизируются в соответствии с указанным соотношением. Следует отметить, что это соотношение относится к основной базе данных и всем подчинённым базам данных.

3. Стратегия маршрутизации между подчинёнными базами данных

Запросы на чтение, направленные на подчинённые базы данных, будут равномерно распределены между ними. На данный момент Cetus поддерживает только метод циклического перебора (RR) для стратегии балансировки нагрузки между подчинёнными базами данных.

Cetus также оптимизировал распределение запросов. Некоторые промежуточные программы MySQL основаны на измерении SQL для балансировки нагрузки, независимо от того, отправляется ли запрос одним и тем же соединением или разными соединениями, промежуточное программное обеспечение последовательно направляет полученные SQL-запросы в соответствующие базы данных.

Однако в реальных сценариях использования было обнаружено, что эта стратегия может привести к большому количеству переключений соединений при длительных соединениях, что приводит к частой настройке переменных сеанса и влияет на эффективность выполнения SQL. Поэтому Cetus оптимизировал эту стратегию и не полностью основывает балансировку нагрузки на измерении SQL. Cetus учитывает ситуацию, когда одно и то же соединение отправляет последовательные SQL-запросы. Вместо немедленного возврата соединения с Cetus и MySQL в пул соединений для повторного использования, оно временно удерживает соединение в течение короткого периода времени (256 миллисекунд), ожидая дальнейших SQL-запросов, чтобы избежать частой настройки переменных сеанса и значительно повысить эффективность выполнения SQL.

4. Резюме стратегии маршрутизации запросов на чтение

Когда существует хотя бы одна доступная подчинённая база данных, факторы, влияющие на стратегию маршрутизации запросов на чтение, включают:

  • транзакции;
  • запросы select...for update или select ... lock in share mode;
  • настройку параметра master-preferred=true в Cetus для направления всего трафика на основную базу данных по умолчанию;
  • настройку параметра read-master-percentage для управления распределением нагрузки между основной и подчинённой базами данных для запросов на чтение;
  • использование комментариев /*#mode=READWRITE*/ или /*#mode=READONLY*/.

По умолчанию запросы на чтение сначала маршрутизируются на подчинённые базы данных, и между различными подчинёнными базами данных используется метод циклического перебора для балансировки нагрузки. Как только все подчинённые базы данных становятся недоступными, запросы на чтение перенаправляются на основную базу данных. В настоящее время Cetus не поддерживает балансировку нагрузки между подчинёнными базами данных на основе весов.

Что касается пунктов 1, 2 и 3, Cetus будет направлять запросы непосредственно на основную базу данных.

Относительно пункта 4, если установлено read-master-percentage=100, все запросы на чтение будут направлены на основную базу данных; если установлено read-master-percentage=[0, 100), Cetus будет направлять запросы на чтение на основную и подчинённые базы данных в соответствии с заданным соотношением. Обратите внимание, что здесь «подчинённые базы данных» относятся ко всем подчинённым базам данных, то есть это соотношение между основной базой данных и всеми подчинёнными базами данных.

Что касается пункта 5, если используется комментарий /*#mode=READWRITE*/, запросы на чтение будут направлены на основную базу данных; если используется комментарий /*#mode=READONLY*/, запросы на чтение будут направлены на подчинённые базы данных и будут перенаправлены на основную базу данных только тогда, когда все подчинённые базы данных станут недоступными.

Среди этих факторов приоритет имеют комментарии, затем параметр master-preferred, и наконец, параметр read-master-percentage.

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

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

1
https://api.gitlife.ru/oschina-mirror/gitcrazy-cetus.git
git@api.gitlife.ru:oschina-mirror/gitcrazy-cetus.git
oschina-mirror
gitcrazy-cetus
gitcrazy-cetus
master