Политика разграничения
Протокол разграничения (Demarcation protocol) изначально был предложен для реплицируемых систем. Идея этого протокола состоит в том, что каждому серверу назначается некоторый объем ценностей (например, часть запаса товаров), и весь объем ценностей распределяется между серверами. Каждый сервер может изменять свой локальный объем ценностей, но не выходить за локальные границы. Эти границы обеспечивают глобальную согласованность без потребности в коммуникации серверов. Если границы нарушаются, сервер должен запросить дополнительную долю от других серверов или синхронизоваться с ними для регулировки границ. Этот протокол гарантирует, что общий объем ценностей никогда не станет меньше некоторого порогового значения, и что координация будет производиться только при реальной потребности.
Мы можем перенять протокол разграничения следующим образом. У каждого сервера имеется некоторая доля ценностей, которые он может использовать без блокировок. Далее мы без потери общности будем предполагать, что для каждой записи предельным значением является ноль. Если n – это число серверов, и v – общий объем ценностей (например, размер запаса продуктов), то мы можем определить долю, которую сервер может использовать без строгой согласованности, как


Все серверы вынуждаются использовать строгую согласованность, только если им нужно использовать ценности в объеме, превышающем выделенную им долю. За счет применения строгой согласованности сервер видит текущее реальное значение, и несогласованности удается избежать. Поскольку все серверы выдут себя одинаковым образом и сокращают свой объем ценностей одним и тем же образом, этот метод гарантирует, что общий объем ценностей не станет отрицательным.
В контексте "облачных" служб Политика разграничения не всегда может обеспечивать должную согласованность, потому что предполагается, что серверы не могут осуществлять коммуникации в произвольный момент времени. Значения записей актуализируются только после истечения некоторого интервала времени (т.е.
интервала кэширования). Может случиться так, что сервер исчерпает выделенную ему долю и будет продолжать, например, продавать товары (теперь в режиме с блокировками), в то время как другой сервер будет продолжать продавать товары из своего все еще имеющегося запаса без блокировок. В таких ситуациях объем ценностей может сократиться ниже установленной границы. Тем не менее, идея, лежащая в основе протокола разграничения, является очень привлекательной, и можно предположить, что такие ситуации возникают крайне редко.
Дополнительным недостатком Политики разграничения является то, что при большом числе серверов n пороговое значение стремится к v. Тогда Политика разграничения будет трактовать данные категории B как данные категории A, и для большинства транзакций потребуются блокировки. Проблемой является и скошенное распределение данных: если некоторый элемент используется редко или неравномерно, пороговое значение может быть увеличено без соответствующего повышения расходов, вызываемых несогласованностью данных.