Согласованность и Репликация данных¶
Определение¶
Репликация — одна из техник масштабирования баз данных. Состоит эта техника в том, что данные с одного сервера базы данных постоянно копируются (реплицируются) на один или несколько других (называемые репликами)
Ссылки:
Разделение репликации по времени¶
- Синхронная репликация
…
- Асинхронная репликация
Асинхронная репликация – это технология, при которой данные сохраняются в локальном сервере, который, со своей стороны, заботится об их передаче к следующему и передает только разницу.
Это правильная технология для построения торговой системы, т.к. нет требований к бесперебойной связи, и данные передаются при первой возможности, но не обязательно в реальном времени.
Разделение репликации по задачам¶
- Master-Slave
Репликация Master-Slave зависит от одного центрального Master сервера, который аккумулирует все данные и передает разницу к подчиненным Slave серверам. Таким образом, Master сервер всегда имеет актуальную копию данных, пока Slave серверы ждут изменений и подчиняются информации, отправленной от Master. Они актуализируют свои данные с опозданием.
Преимущество этой технологии в простом выполнении, недостаток – записи всегда делаются в Master сервере, что требует постоянно связи с этим сервером. Если пропадет связь с центральным сервером, в системе не смогут выводиться новые операции, но можно будет делать справки.
Эта технология реализована в MySQL сервере и часто используется в торговых системах.
Обыкновенно, Master сервер стоит в центральном офисе фирмы.
- Репликация с равноправными серверами (Multi Master)
Репликация с равноправными серверами – прогрессивная технология, где каждый сервер является самостоятельным и, одновременно с этим, частью общей сети. При этой технологии так же существует центральный сервер, который управляет связью между остальными серверами.
Преимущество технологии в полной независимости от связи в работе. Когда есть связь, данные передаются к центральному серверу. Подчиненные серверы передают только свою разницу и не загружают канал обмена данными.
Когда не существует связи между серверами, данные аккумулируются локально для последующего объединения при восстановлении связи. Эта технология называется Transactional Merge и реализуется в MS SQL Server.
- Leaderless Replication
https://medium.com/@nitishchandra/leaderless-replication-d708f3951ef1
Согласованность (consistency)¶
Согласованность — это ключевая проблема в высокодоступных системах. Система согласована, если все узлы видят и возвращают одни и те же данные в одно и то же время.
Чтобы убедиться в том, что каждый узел содержит одну и ту же информацию, они должны отправлять сообщения друг другу, чтобы постоянно быть сихронизированными. Однако, сообщения, отправленные ими друг другу, могут быть не доставлены — они могут потеряться и некоторые из узлов могут быть недоступными.
Существует несколько видов согласованности, самым широко используемым в распределённых системах является сильная согласованность (strong consistency), слабая согласованность (weak consistency) и согласованность в конечном счёте (eventual consistency).
Кворум¶
Во многих распределённых системах есть данные или вычисления, которые реплицируются между несколькими узлами. Чтобы убедиться в том, что операции выполняются согласованно, определяется подход с голосованием, при котором для признания операции успешной нужно, чтобы определённое количество узлов получило один и тот же результат. Этот процесс называется кворумом.
Cassandra (и другие распределённые системы) использует кворум и местный кворум (local quorum) для того, чтобы обеспечить согласованность между кластерами.