Теорема CAP и MySQL

Sep 10 2020

Существует теорема CAP: R + W> N. Допустим, у меня W = 1 (ведущее устройство), R = 6 (ведомые устройства), N = 6, поэтому одно ведомое устройство может писать и читать. Как гласит теорема, мы можем быть уверены в строгой согласованности (мы всегда получим самое новое значение).

Я читал, что хранилище данных может проверить версию и вернуть самую новую. Но так ли это на самом деле при использовании MySQL? Или, может быть, нам нужно использовать какого-нибудь посредника? Как теорема CAP применима к MySQL?

Ответы

1 RolandoMySQLDBA Sep 10 2020 at 19:04

То, что вы предлагаете, на самом деле не является теоремой CAP, если только кластер не является полностью архитектурой без совместного использования. Обратите внимание, что такое теорема CAP из моего старого сообщения Jan 01, 2013: Согласованность в теореме ACID и CAP, они одинаковы?

КЕПКА

  • Согласованность (все узлы имеют одинаковые данные благодаря возможной согласованности)
  • Доступность
  • Разделение-толерантность: система продолжает работать, несмотря на произвольную потерю сообщения или отказ части системы

У каждого узла будет полная копия полного набора данных. Данный кластер БД должен поддерживать конечную согласованность, то есть иметь поддержку ACID Compliance для всего кластера.

ВАШ АКТУАЛЬНЫЙ ВОПРОС

Но так ли это на самом деле при использовании MySQL? Или, может быть, нам нужно использовать какого-нибудь посредника? Как теорема CAP применима к MySQL?

Установки MySQL, которые работают с теоремой CAP , следующие:

  • Кластер InnoDB
  • Кластер MariaDB Galera
  • Кластер Percona XtraDB

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

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