Я настоящий новичок в Erlang (начал неделю назад), и я пытаюсь изучить этот язык, создав небольшой, но эффективный чат-сервер. (Когда я говорю «эффективный», я имею в виду, что у меня есть 5 серверов, используемых для стресс-теста с сотнями тысяч подключенных клиентов - миллион было бы здорово!)
Я нашел несколько руководств, делающих это, единственное, что все найденные мной учебники похожи на IRC. Если один пользователь отправит сообщение, все пользователи, кроме отправителя, получат его. Я хотел бы немного изменить это и использовать обсуждение один на один.
Какой пул клиентов был бы наиболее эффективным для поиска подключенного пользователя? Я думал о регистрации процесса, потому что он, кажется, делает все, что мне нужно, но я действительно не думаю, что это лучший способ сделать это. (Или, по крайней мере, самый красивый способ сделать это).
Есть ли у кого-нибудь предложения по этому поводу?
РЕДАКТИРОВАТЬ:
Каждый подключенный клиент зависит от идентификатора.
Когда пользователь подключен, он сначала отправляет команду входа в систему, чтобы дать свой идентификатор.Когда пользователь хочет отправить сообщение другому, сообщение выглядит так
[НОМЕР ID] [Сообщение] %% НОМЕР ИДЕНТИФИКАЦИИ - ФИКСИРОВАННАЯ ДЛИНА
Когда я спрашиваю «наиболее эффективный пул клиентов», я на самом деле ищу самый быстрый способ получить / добавить / удалить одного клиента в списке подключенных клиентов, который потенциально может быть большим (сотни тысяч - может быть, миллионы)
РЕДАКТИРОВАТЬ 2:
Для ответа на некоторые вопросы:
Должен ли я написать свою собственную функцию клиента поиска с использованием списков?
или я должен использовать ets?
Или даже использовать register / 2 unregister / 1 и whereis / 1 для поддержки моего списка клиентов, используя его уникальный идентификатор в качестве атома, это кажется самым простым способом сделать это, я действительно не знаю, эффективен ли он , но я почти уверен, что это ужасное решение ;-)?