Как работает согласованность consul KV в отношении обновления одного и того же ключа

#consul #consul-kv

Вопрос:

Если дать ключ consul KV a/key , где запущено несколько экземпляров сервера агентов, что произойдет, если:

Два запроса A (установить значение в val-a ) и B (установить значение в val-b ) направляются в конечную точку создания ключа без использования параметров cas или acquire для обновления одного и того же ключа a/key :

  • Если A и B выполняются параллельно, может ли значение ключа быть повреждено?
  • Или если A приходит немного раньше B, может ли конечное значение все еще стать val-a ?

Ответ №1:

Данные не будут повреждены, если Консул получит два запроса на запись одновременно. Запросы на запись будут обрабатываться лидером последовательно, поэтому значением a/key будет либо val-a или val-b , в зависимости от того, что будет обработано последним.

Вы можете найти подробную информацию о том, как Консул записывает данные, в документации по Консенсусному протоколу Консула.