Si plusieurs serveurs web sont écrits en Erlang (Load Balanced) et que Mnesia est utilisé pour la base de données backend, quelle est la meilleure façon de mettre à jour le système entier vers une version plus récente?Dans Erlang, quelle est la meilleure façon de mettre à niveau un système distribué?
Répondre
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
.
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.
- 1. Quelle est la meilleure façon de mettre à l'échelle un octet de façon uniforme?
- 2. Quelle est la meilleure façon de faire quelque chose périodiquement à Erlang?
- 3. Quelle est la meilleure façon de mettre en cache un système de menu localement, dans le navigateur?
- 4. Quelle est la meilleure façon de renommer (déplacer) les branches du système de fichiers dans .NET?
- 5. Dans un système FIFO Qeueing, quelle est la meilleure façon d'implémenter la messagerie prioritaire?
- 6. Quelle est la meilleure façon de rafraîchir un indice Nutch?
- 7. Quelle est la meilleure façon de mettre à jour une table MsAccess dans .NET
- 8. Quelle est la meilleure façon de dupliquer fork() dans Windows?
- 9. Quelle est la meilleure façon de mettre en évidence un champ obligatoire sur un formulaire Web?
- 10. À quel niveau dois-je mettre en œuvre la communication entre les nœuds sur un système distribué?
- 11. Quelle est la meilleure façon d'écrire dans un fichier Ruby?
- 12. Quelle est la meilleure façon de commencer à utiliser Mylyn?
- 13. Quelle est la meilleure façon de déboguer un Oracle SP?
- 14. Quelle est la meilleure façon de structurer un projet?
- 15. Quelle est la bonne façon de mettre à niveau un plugin eclipse vers une autre version de la plate-forme?
- 16. quelle est la meilleure façon de marquer un texte?
- 17. Quelle est la meilleure façon de déboguer un écrasement explorer.exe?
- 18. Quelle est la meilleure façon de chiffrer un clob?
- 19. Quelle est la meilleure façon de vérifier la capacité du système de fichiers en utilisant .Net?
- 20. Quelle est la meilleure façon de localiser un IEnumerable?
- 21. Quelle est la meilleure façon d'effacer un tableau de chaînes?
- 22. Quelle est la meilleure façon de vider un répertoire?
- 23. Quelle est la meilleure façon de "mettre en carré" une image dans .NET?
- 24. Quelle est la meilleure façon de formater C# dans WordPress?
- 25. Quelle est la meilleure façon d'extraire des données de la couche d'hibernation et de les placer dans un autre niveau?
- 26. Quelle est la meilleure façon de dire à un framework quelle base de données utiliser?
- 27. System.Xml.XmlDocument, quelle est la meilleure façon de mettre en cache une DTD de dépendance externe?
- 28. Quelle est la meilleure façon de permettre à un client d'examiner un schéma XML?
- 29. Quelle est la meilleure façon de faire ce programme Java?
- 30. Quelle est la meilleure façon d'implémenter un délai AJAX?
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. –