Гарантия согласованности Azure CosmosDB

#azure #azure-cosmosdb #eventual-consistency

Вопрос:

Корпорация Майкрософт в своей документации указывает для согласованной согласованности префикса следующее:

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

Два абзаца ниже этого, в них говорится:

Ниже приведены гарантии согласованности для согласованного префикса:

  • Согласованность для клиентов в одном регионе для учетной записи с одним регионом записи = Согласованный префикс
  • Согласованность для клиентов в разных регионах для учетной записи с одним регионом записи = Согласованный префикс
  • Согласованность для клиентов, пишущих в один регион для учетной записи с несколькими регионами записи = Согласованный префикс
  • Согласованность для клиентов, пишущих в несколько регионов для учетной записи с несколькими регионами записи = Возможная

Я действительно не понимаю, как клиенты, пишущие в несколько регионов для учетной записи с несколькими регионами записи, могут в конечном итоге гарантировать согласованность. Поскольку согласованная согласованность префикса гарантирует, что чтение никогда не приведет к нарушению порядка записи, то приведенное ниже утверждение (несколько записей) должно быть неправильным, поскольку оно гарантирует конечную согласованность.

Может кто-нибудь помочь мне понять, чего мне не хватает, пожалуйста?

Ответ №1:

Как правило, гарантии согласованности записываются в предположении, что это запись в одном регионе (один мастер). Поскольку Cosmos DB предоставляет возможности записи с несколькими регионами (мульти-мастер), гарантии согласованности требуют дальнейшего объяснения для детализации поведения службы при различном количестве читателей и авторов, включая запись с несколькими регионами (мульти-мастер).

При наличии нескольких устройств записи и использовании записи из нескольких регионов данные, записанные локально в регионах, настроенных в учетной записи, фиксируются локально, затем реплицируются по глобальной сети и объединяются в основном регионе. Как только данные объединяются в основном регионе, они реплицируются обратно как полностью переданные в любой другой регион учетной записи.

Поскольку это происходит по глобальной сети, невозможно гарантировать, что данные, записанные в нескольких вторичных регионах, будут реплицированы и объединены в первичном регионе точно в том порядке, в котором они были зафиксированы локально. Данные не всегда реплицируются с одинаковой скоростью и скоростью в глобальной сети. Это связано как с тем, что регионы находятся на разных расстояниях друг от друга, так и с тем, что WAN иногда могут быть несколько неустойчивыми.

По этой причине при использовании записи в нескольких регионах с несколькими авторами читатели могут получить только окончательные гарантии согласованности.