Ho bisogno di scrivere un server che riceverà istruzioni da altri moduli e intraprendere azioni a seconda delle istruzioni ricevute. L'efficienza è la mia preoccupazione principale. Così uso gen_server
o scrivo il mio server. Con "mio server" Voglio dire una cosa del genere:Erlang: gen_server o il mio server personalizzato?
-module(myserver).
-export([start/0, loop/0]).
start() ->
spawn(myserver, loop, []).
loop() ->
receive
{From, Msg} -> %Do some action here... ;
message2 -> %Do some action here...;
message3 -> %Do some action here...;
message4 -> %Do some action here...;
.
.
.
_-> ok
end,
loop().
Quindi, per usare myserver
, io probabilmente registrare il processo con una denominazione registrata durante l'avvio, e poi ogni cliente invierà messaggi al server utilizzando questo pid .
Quindi dovrei utilizzare questo metodo o implementare il server utilizzando il comportamento gen_server
? Ci sono dei vantaggi nell'uso di gen_server
? Ma usando gen_server
aggiungerai un sovraccarico, se confrontato con myserver
?
Sei stato molto preoccupato dell'efficienza per le ultime domande. Avete qualche numero di quali sono i requisiti di prestazione? – Christian
Oh, e sicuramente andare con gen \ _server fino a quando non si può misurare dove sono i colli di bottiglia. – Christian
Non ho numeri per quantificare i requisiti prestazionali per il sistema ora. Questo è un sistema sperimentale, quindi tutto quello che so per ora è che i server dovranno gestire un incredibile volume di traffico. Quindi sto cercando di essere più consapevole dell'efficienza e ottimizzare il più possibile. – ErJab