Пишет в географически распределенную базу данных - PullRequest
0 голосов
/ 15 ноября 2018

Если у нас есть система баз данных, реплицированная в географически разных местах ... и мы хотим разрешить запись в каждую из них.Каков наилучший способ сделать это?Например: такой сайт, как expedia.com, позволяет клиентам по всему миру забронировать любой отель.Скажем, клиенты в США, Европе и Азии хотят забронировать номер в одном отеле.Мы можем читать из нескольких экземпляров RO, которые географически разделены (и реплицированы), поэтому мы показываем клиентам, что в этом отеле есть номер.Теперь, если все эти клиенты попытаются забронировать, самым простым способом будет написать один экземпляр.Перед тем как писать, мы каждый раз проверяем, свободна комната или нет.Если это все еще доступно, мы пишем.Таким образом, как только первый запрос будет выполнен, мы можем отклонить остальные.Но в этом случае клиент в США (где расположен главный экземпляр) будет иметь несправедливое преимущество, так как запрос записи будет проходить по проводам на большие расстояния.Поэтому нам придется разрешить запись в несколько экземпляров ... и затем дать некоторое время для синхронизации между экземплярами.Но если мы напишем в два экземпляра, как мы сможем обеспечить успешное выполнение только одного запроса на запись?Я уверен, что должен быть какой-то стандартный способ сделать это.Но я не могу найти ничего хорошего для чтения.

...