Архитектуры мультимастерных и одноранговых БД

Мое понимание заключается в том, что в архитектуре БД с несколькими мастерами:

  • У вас есть 2+ сервера БД, оба действуют как мастера чтения/записи; и
  • Это либо какой-то тип балансировщика нагрузки для балансировки операций между этими несколькими мастерами; и
  • Всякий раз, когда сервер получает чтение, он извлекает и возвращает запрошенные данные локально; и
  • Всякий раз, когда сервер получает запись, он записывает + фиксирует локально, но затем реплицирует эту запись в режиме реального времени на другие серверы (вот почему системе неявно требуется балансировщик нагрузки, чтобы предотвратить передачу одной и той же записи на 2+ разных мастера в в то же время); и
  • У вас могут быть установки Active/Active или Active/Passive. В первом случае балансировщик нагрузки действительно балансирует записи на всех узлах. Я не совсем понимаю последнее (активное/пассивное)

Итак, для начала, если что-то из того, что я сказал выше, неверно, пожалуйста, начните с того, что поправьте меня или проясните это для меня! Предполагая, что я более или менее попал в цель:

Тогда в чем (на самом деле) разница между Multi-Master и Peer-To-Peer (P2P)? В системе P2P любое чтение выполняется и возвращается локально, а любая запись записывается локально, а затем реплицируются на все одноранговые узлы...так разве они не являются одним и тем же?!


person smeeb    schedule 02.03.2018    source источник


Ответы (2)


Главный подчиненный

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

Мастер — мастер или мультимастер

  • Любой из серверов может выполнять чтение/запись.
  • Все серверы реплицируются синхронно. Таким образом, данные всегда совпадают.
  • Можно настроить для асинхронной репликации, но тогда она становится похожей на одноранговую архитектуру.
  • Имеет проблему с разделенным мозгом только с двумя мастерами. Может быть решена при наличии как минимум 3-х мастеров.
  • CouchDB

Одноранговая связь

  • Все серверы могут выполнять как чтение, так и запись.
  • Репликация между серверами асинхронная, поэтому чтения могут быть разными. (Возможная согласованность)
  • Кассандра, ElasticSearch

Лидер-последователь

  • Только лидер обслуживает чтение/запись.
  • Последователи реплицируются только асинхронно.
  • Можно настроить синхронную репликацию N последователей, чтобы предотвратить потерю данных в случае выхода из строя лидера.
  • Кафка
person Archit Rai Gupta    schedule 01.07.2020
comment
CouchDB относится как к мультимастеру, так и к одноранговым узлам, мультимастер больше относится к своему кластеру (docs.couchdb.org/en/stable/cluster/index.html), в то время как одноранговая связь — это скорее его репликация (docs.couchdb.org/en/stable/replication/index.html) - person Howard Lince III; 05.07.2020

Они могут показаться похожими, но есть тонкие различия, надеюсь, это поможет:

В Active/Active записи могут идти на любой сервер, а затем каскадироваться на другие серверы в кластере.

При активном/пассивном чтении всегда будет идти только один узел в кластере, а затем каскадироваться на другие узлы.

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

person Rob Stone    schedule 08.03.2018