Qual é a melhor e mais eficiente técnica de pool de clientes com Erlang

Sou um novato em Erlang (iniciado há uma semana) e estou tentando aprender esse idioma criando um servidor de bate-papo pequeno, mas eficiente. (Quando digo eficiente, quero dizer, tenho 5 servidores usados para testar isso com centenas de milhares de clientes conectados - um milhão seria ótimo!)

Eu encontrei alguns tutoriais para fazer isso, a única coisa é que todos os tutoriais que encontrei são do tipo IRC. Se um usuário enviar uma mensagem, todos os usuários, exceto o remetente, a receberão. Gostaria de mudar um pouco isso e usar a discussão individual.

Qual seria o pool de clientes mais eficaz para pesquisar um usuário conectado? Pensei em registrar o processo, porque parece fazer tudo o que preciso, mas realmente não acho que essa seja a melhor maneira de fazê-lo. (Ou a maneira mais bonita de fazer isso).

Alguém teria alguma sugestão para fazer isso?

EDIT:

odo cliente conectado é afetado por um I

Quando o usuário está conectado, primeiro envia um comando de login para fornecer sua identificação. Quando um usuário deseja enviar uma mensagem para outro, a mensagem fica assim

[ID-NUMBER][Message] %% ID-NUMBER IS A FIXED LENGTH

Quando solicito "o pool de clientes mais eficaz", na verdade, estou procurando a maneira mais rápida de recuperar / adicionar / excluir um cliente na lista de clientes conectados que pode ser potencialmente grande (centenas de milhares - talvez milhões)

EDIT 2:

Para responder a algumas perguntas:

Estou usando o Raw Socket (usando o telnet agora para se comunicar com o servidor) - provavelmente passará para o ssl mais tarde ... É o meu próprio protocolo Todo Cliente é um Pid geraada PID do cliente está vinculado ao seu próprio monitor (principalmente por motivo de depuração - o cliente, se desconectado, deve se reconectar por sua própria autenticação inicial do zer Eu li alguns livros antes de começar a codificar, por isso ainda não domino todos os aspectos do Erlang, mas não estou ciente disso, vou ler mais sobre ele quando necessário, eu ach O que estou realmente procurando é a melhor maneira de armazenar e pesquisar esses PIDs para enviar mensagens diretamente de processo para process

Devo escrever minha própria função de cliente de pesquisa usando listas?

ou devo usar ets?

Ou até use register / 2 unregister / 1 e whereis / 1 para manter minha lista de clientes, usando seu ID exclusivo como atom, parece ser a maneira mais simples de fazer isso, eu realmente não sei se é eficiente, mas Tenho certeza de que esta é a solução feia ;-)?

questionAnswers(6)

yourAnswerToTheQuestion