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 processDevo 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 ;-)?