2009-07-25 4 views

risposta

4

Anche se Erlang supporta il caricamento di codice a caldo, non è qualcosa che si deve usare. Nel tuo caso, sembra più facile rimuovere un nodo una volta dal load balancer, riavviarlo eseguendo il nuovo codice e reinserirlo nel load balancer.

Prendere giù i nodi è anche qualcosa che devi essere pronto a fare se vuoi aggiornare a caldo le nuove versioni di Erlang/OTP nel tuo sistema live.

Ma il vero problema che può farti scoppiare per te sono quelle preoccupazioni che vengono dalla mnesia. Penso che dovresti fare una nuova domanda con le specifiche in quello che vuoi che mnesia faccia. Se non ci sono modifiche schema/tabella e vuoi solo prendere un nodo verso il basso e aggiungerlo in un secondo momento. O se stai introducendo nuove tabelle o nuove colonne nelle tabelle. Mnesia fornisce la possibilità di aggiungere e rimuovere nodi con repliche di tabelle e supporta anche in modo univoco più definizioni di tabelle tramite mnesia:transform_table/3,4.

+1

Sì, ho paura che se introduco nuove tabelle o nuove colonne nelle tabelle, devo ridurre l'intero sistema. Grazie per la risposta, non sapevo che esistesse una funzione transform_table. –

1

Se si stanno solo eseguendo aggiornamenti di codice, ho scritto un articolo su erlang release handling with fab. Con questa configurazione, è possibile eseguire il caricamento del codice in tempo reale senza dover riavviare i nodi. La trasformazione del database, tuttavia, dovrebbe essere eseguita da un singolo nodo, attivato separatamente dall'aggiornamento della versione.