Re[13]: WA: 3 млн tcp соединений на одном сервере
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 21.05.25 16:00
Оценка:
Здравствуйте, SkyDance, Вы писали:

N>>И таки да. Принято в 28.0.


SD>Знаю, я ж с Rockard'ом это и начал. Но в то время не было понимания, как сделать это непротиворечивым способом. Сейчас понимание есть, и конкретное применение тоже, и полная обратная совместимость через process options. Ты обрати внимание, там реально интересный подход! С сохранением всех существующих гарантий очередности доставки сообщений. Весьма элегантный способ, который 6 лет назад мне просто не пришел в голову (а должен был, ведь именно тогда process aliases появились, пусть и для других целей).


Ёпрст... ты серьёзно???

Представим себе расширенный send(), в котором указывается номер очереди. В процессе — N очередей списками, для каждой строго FIFO порядок. Умолчательная очередь для совместимости — номер 0, а, например, ответы на gen_server:send идут в очередь 7. Есть "cохранение всех существующих гарантий очередности доставки сообщений"? Да, есть. Это тупейшая тривиальщина, над которой в принципе не надо думать более пяти минут, и то которые уйдут на перекур.

Если о чём-то стоило тут вообще думать, так это о том, как доработать синтаксис, если надо выбирать только из конкретной очереди, с приоритетами, ограничением по длине, таймауту и всё такое.

Алиас процесса — чтобы не расширять межнодовый протокол? Так почему бы не расширить его?

N>>Ну, слушаю комментарии. Например, о том, что священная чистота нарушена, что надо было на все заседания приносить мумию Армстронга, чтобы это не случилось, и так далее.

SD>Процесс потому и занял много лет, что потребовалось переосмысление некоторых в начале неясных моментов. Основная идея, которой не существовало 15 лет назад — process aliases. А вовсе не банальые multiple message queue (много mailbox'ов). Традиционно, процесс сам выбирает, из какого mailbox'а читать. На современном витке спирали эволюции, скажем, тот же Go, каналы.

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

SD>Реализация в Erlang кардинально отличается. Очередь сообщений все равно только одна. Получателю не нужно жонглировать множественными mailbox'ами. Вместо этого, создается process alias с приоритетной отправкой сообщений. Это решение отличается от предложенного мной изначально. В хорошую ли сторону или нет, можно спорить. Но — факт — инвариант сохраняется: между двумя процессами соблюдаются гарантии по доставке сообщений.


Повторюсь — сделать так, чтобы в пределах _одного номера очереди_ между двумя процессами соблюдались гарантии очерёдности доставки — задача для студента-первокурсника. А между разными очередями она и не предполагалась. Можно начать с одинаковых приоритетов, будет работать просто за счёт того, что недефолтные очереди короче. А потом прикручивать приоритеты, по желанию, но я бы их по умолчанию не делал абсолютными.

N>>Или же с честным признанием, что пока 15 лет тормозили с решением насущных проблем, пользовательская база сократилась в разы, все, кто мог, сбежали на другие средства, а дедам остаётся только идти ловить рыбу и заниматься другими пенсионерскими делами.

SD>"Что мертво умереть не может" (С)
SD>Пользовательская база, кстати, возросла. Я Elixir считаю диалектом Erlang'а, потому что BEAM. Даже в EEF board members, теперь половина Elixir-овски. Жаль, я больше не имею достаточно времени на поддержку этой экосистемы, да и open source в целом. Так что, завтра официально последний день в качестве board member'а EEF.

Ну абсолютные цифры меня не очень волнуют, а вот относительные — для общей группы ниш — резко упали. Но я подозреваю, что и в абсолютных не всё гладко.

SD>Про пенсионерские дела согласен, я уже тоже готов. Хочу на пенсию. Устал работать.



Мне казалось, я старше. Мне по-прежнему многое интересно, хотя половину времени, да, чертыхаюсь от "до чего же всё повторяется".
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.