Как решить условия гонки среди стручков K8s - PullRequest
0 голосов
/ 01 мая 2019

Это может не иметь ничего общего с модулями K8s, но я подозреваю, что-то более алгоритмическое. Но это полный сценарий, с которым мы столкнулись.

Допустим, у нас есть 2 модуля -> Java-приложение.

У нас есть 1 таблица динамо -> имеющая id (hash_key) (не уникально), created_date (sort_key), id_2

Ожидаемое поведение программы - проверить наличие данного id (последний) и извлечь его id_2. Если такого id не существует, создайте новый id_2.

Теперь наступает состояние гонки -> Два модуля параллельно начинают выполнять логику, и оба они начинают запрашивать динамо, и по совпадению имеют одинаковые значения id. Теперь они не находят таких id .., поскольку ни один из них не был вставлен в «Динамо», и поэтому они создают совершенно новые отдельные id_2 .. и оба модуля заканчивают тем, что вставляли новые id_2 для того же id .. чего не должно быть.

Как мы можем решить это условие гонки?

Любые выводы будут оценены. Thx

1 Ответ

0 голосов
/ 02 мая 2019

Я думаю, вы должны переосмыслить схему таблицы.

Наличие таблицы с id_2 в качестве хэша, без ключа сортировки и глобального вторичного индекса для id / create_data

Конечно, это будет работать, только если id_2 уникален в таблице, а не уникален для каждого id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...