In Erlang, qual è il modo migliore per aggiornare un sistema distribuito? [chiuso]

StackOverflow https://stackoverflow.com/questions/1181316

  •  19-09-2019
  •  | 
  •  

Domanda

Se ho più server Web scritto in Erlang in esecuzione (carico equilibrato) e mnesia viene utilizzato per il database back-end, qual è il modo migliore per aggiornare l'intero sistema ad una versione più recente?

È stato utile?

Soluzione

Anche se Erlang supporta la funzione hot code-caricamento, non è qualcosa che si deve usare. Nel tuo caso, sembra più facile da rimuovere un nodo volta dal bilanciamento del carico, riavviarlo in esecuzione il nuovo codice e rimetterlo nel bilanciamento del carico.

Prendendo giù nodi è anche qualcosa che si deve essere disposti a fare se si vuole hot-aggiornamento alle nuove Erlang / OTP rilascia nel sistema live.

Ma il vero problema che può bolla per voi sono quelle preoccupazioni che provengono da mnesia. Penso che si dovrebbe chiedere una nuova domanda con le specifiche di quello che vogliono mnesia da fare. Se non ci sono schema / tabella-modifiche, e si vuole solo prendere un nodo verso il basso e aggiungere in un secondo momento. Oppure, se effettivamente stanno introducendo nuove tabelle o nuove colonne nelle tabelle. Mnesia fornisce la possibilità di aggiungere e rimuovere i nodi con le repliche della tabella, e supporta anche piuttosto univocamente più definions tabella tramite mnesia:transform_table/3,4.

Altri suggerimenti

Se stai solo facendo gli aggiornamenti di codice, ho scritto un un articolo su Erlang movimentazione con fab rilascio. Con questa configurazione, si può fare il codice in tempo reale di carico senza dover riavviare i nodi. Trasformare il database, però, dovrebbe essere fatto da un singolo nodo, innescato separatamente dal rilascio di aggiornamento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top