2009-07-25 8 views

Répondre

4

Même si Erlang prend en charge le chargement de code à chaud, ce n'est pas quelque chose que l'on doit utiliser. Dans votre cas, il semble plus facile de supprimer un nœud à la fois de l'équilibreur de charge, de le redémarrer en exécutant le nouveau code et de le remettre dans l'équilibreur de charge.

La suppression de nœuds est également quelque chose que vous devez être prêt à faire si vous voulez effectuer une mise à niveau à chaud vers de nouvelles versions d'Erlang/OTP dans votre système live.

Mais le vrai problème qui peut surgir pour vous sont les préoccupations qui viennent de la Mnesia. Je pense que vous devriez poser une nouvelle question avec les détails de ce que veut faire la mnésie. S'il n'y a pas de changements de schéma/table, et que vous voulez simplement supprimer un noeud et l'ajouter plus tard. Ou si vous introduisez de nouvelles tables ou de nouvelles colonnes dans des tables. Mnesia offre la possibilité d'ajouter et de supprimer des nœuds avec des réplicas de table, et supporte également de manière unique plusieurs définitions de tables via mnesia:transform_table/3,4.

+1

Oui, je crains que si j'introduis de nouvelles tables ou de nouvelles colonnes dans les tableaux, je doive prendre tout le système. Merci pour votre réponse, je ne savais pas qu'il existe une fonction transform_table. –

1

Si vous faites juste des mises à jour de code, j'ai écrit un article sur erlang release handling with fab. Avec cette configuration, vous pouvez effectuer un chargement de code en temps réel sans avoir à redémarrer les nœuds. Cependant, la transformation de la base de données devrait se faire à partir d'un seul nœud, déclenché séparément de la mise à jour de la version.

Questions connexes