netch80: (Default)
[personal profile] netch80
Erlang'овский global - нечто, мягко говоря, очень своеобразное. Чтобы зарегистрировать имя, он:
* бежит по всем известным нодам, расставляя свой лок;
* модифицирует имя на каждой ноде отдельно;
* бежит по тем же нодам, снимая лок.
(Это я не учитываю варианты типа - нашли конфликт, удаляем все регистрации)
Если происходит конфликт в процедуре установки лока, он снимает свои локи, ждёт случайное время (от 0 до 8 секунд) и повторяет снова. И так до посинения (мы как-то насчитали несколько часов ожидания). Никакого преимущества у ранее пытавшегося нет, и реальный приоритет определяется сочетанием случайностей. Сейчас при одновременном рестарте многих приложений регистрация на старте может длиться десятки и сотни секунд.

Может, в устойчивой среде это и хорошо. Но представим себе разорванный кластер, который соединился снова. Одно имя зарегистрировано двумя => конфликт => одного удаляют (или обоих, тоже возможно). Значит, поздний конфликт возможен? Таки более чем. Что мешает положиться на изначальную неконфликтность и срубать только по достижению конфликта?

Да, я знаю про CAP-теорему и что любая попытка решения будет крива. Но чисто по-человечески решение с выделенным ведущим и остальными, клонирующими его данные, проще даже в устойчивой среде. А для наших условий, похоже, самым эффективным является ранее выявление конфликта только на исходной ноде запроса (этого достаточно для 99... с кучей девяток процентов случаев) и дальше "разливка" уже ленивым образом.

В R12, кроме того, ещё периодически регистрации терялись молча, без каких-то признаков проблемы. В R14 такого уже, к счастью, не наблюдается.
(will be screened)
(will be screened if not validated)
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 8th, 2026 04:39 pm
Powered by Dreamwidth Studios