синхронизация баз данных (после записи / обновления) по регионам / зонам - PullRequest
0 голосов
/ 15 октября 2019

Мне нужно написать веб-сервис на php для обслуживания в трех разных зонах / (города или страны). Каждая зона будет иметь свой собственный компьютер для запуска этого экземпляра веб-службы, за каждой веб-службой находится база данных, которая является точным клоном / копией в каждом регионе, веб-служба обслуживает клиентов данными из базы данных. Основной причиной нескольких экземпляров веб-службы является распределение нагрузки клиента.

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

Я предполагаю, что вызовы записи должны идти на какой-то главный сервер, который координирует работу всех веб-сервисов и т. д. Но я уверен, что этот шаблон довольно распространен, и какое-то решение уже существует.

Пожалуйста, сообщите, существует ли какая-либо техника уровня базы данных или приложения, которая бы синхронизировала базы данных при вызовах записи, чтобы изменение или добавление отражалось во всех случаях db? Я могу выбрать базу данных по своему выбору, но основным выбором будет сервер MySQL или postgres, но я могу перейти на другую базу данных, которая может решить эту проблему.

1 Ответ

1 голос
/ 22 октября 2019

Вы правы, этот шаблон довольно распространен, и для него есть название - Синхронная репликация Мастер-Мастер. Большинство современных СУБД поддерживают его:

Но прежде чем приступить к его реализации, я 'рекомендую прочитать больше о различных типах репликации, их плюсах и минусах:

Синхронная репликация Master-Masterбудет довольно медленным, особенно в многозонном сценарии, поэтому вы можете рассмотреть другие методы:

  • асинхронная репликация
  • Sharding / Partitioning
  • Сочетание Shardingи репликация

Существует очень хорошая книга о различных распределенных методах (включая сегментирование и репликацию) - "Проектирование приложений с интенсивным использованием данных" Мартина Клеппмана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...