Распределенные блокировки не являются способом контроля идемпотентности параллелизма.

задняя часть WeChat Безопасность
Распределенные блокировки не являются способом контроля идемпотентности параллелизма.

Оригинальный адрес:Блог Лян Гуйчжао

адрес блога:blog.720ui.com/

Добро пожаловать в перепечатку, пожалуйста, указывайте автора и источник, спасибо!

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

Обратите внимание, что во избежание параллельных сценариев мы можем обеспечить уникальность данных с помощью механизмов блокировки, таких как пессимистическая блокировка и оптимистическая блокировка. Здесь часто используемой схемой является распределенная блокировка, которая обычно является реализацией пессимистической блокировки. Однако многие люди часто рассматривают пессимистичные блокировки, оптимистичные блокировки и распределенные блокировки как решения для идемпотентных механизмов, что неверно. Параллельное управление предназначено только для обеспечения безопасности ресурсов критической области и предотвращения появления грязных данных.Если используется параллелизмное управление, множественные представления разрешены, но бизнес-аспекты недопустимы, поэтому выполняется идемпотентный контроль.

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

(над)

Другие интересные статьи можно найти в общедоступном аккаунте WeChat «Server Thinking»!