вопрос о межпроцессном обмене сообщениями - PullRequest
1 голос
/ 08 ноября 2010

Привет, я реализую приложение, похожее на IM-сервер, в Erlang.Я использовал один процесс агента для каждого клиента, подключающегося к серверу, и процесс агента отвечает за отправку сообщений на шлюз сообщений, который, в свою очередь, отправляет сообщение другому процессу агента.Похоже, что межпроцессный обмен сообщениями erlang реализован в виде TCP-соединений.Таким образом, для каждого процесса агента будет установлено одно соединение со шлюзом.Означает ли это, что количество агентов на одном компьютере никогда не превысит 65 535 из-за ограничения номеров портов?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 08 ноября 2010

Некоторые ограничения для Erlang: Руководство по эффективности / 10 Advanced :

Распределенные узлы Известные узлы Удаленный узел Y должен быть известен узлу X, если он существуетpids, ports, reference или funs (типы данных Erlang) из Y на X, или если X и Y соединены.Максимальное количество удаленных узлов, одновременно или когда-либо известных узлу, ограничено максимальным числом атомов, доступных для имен узлов.Все данные, касающиеся удаленных узлов, за исключением атома имени узла, собираются сборщиком мусора.

Подключенные узлы Максимальное количество одновременно подключенных узлов ограничено либо максимальным числом одновременно известных удаленных узлов, либо максимальным числом(Erlang) доступных портов или максимальное количество доступных сокетов.

0 голосов
/ 08 ноября 2010

Erlang соединяет узлы Erlang по сети, а не процессы Erlang. (И каждый узел Erlang является процессом операционной системы).

Таким образом, у вас закончатся соединения TCP, когда у вас будет несколько десятков K узлов Erlang на одном компьютере (что нецелесообразно), а не когда у вас будет несколько десятков K процессов Erlang на одном узле Erlang.

(Я не даю никаких абсолютных чисел, так как каждый узел Erlang также должен будет обмениваться данными с epmd, который создает другое сетевое соединение. Но у вас, вероятно, в любом случае не будет 30 + K узлов Erlang, то есть процессов ОС на одной машине.)

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