2009-07-25 12 views
6

यदि मेरे पास एरलांग चलने (लोड संतुलित) में कई वेब सर्वर लिखे गए हैं और मैनेशिया बैकएंड डेटाबेस के लिए उपयोग किया जाता है, तो पूरे सिस्टम को नए संस्करण में अपग्रेड करने का सबसे अच्छा तरीका क्या है?एरलांग में, वितरित सिस्टम को अपग्रेड करने का सबसे अच्छा तरीका क्या है?

उत्तर

4

हालांकि एर्लांग हॉट कोड लोडिंग का समर्थन करता है, लेकिन ऐसा कुछ नहीं होना चाहिए। आपके मामले में, लोड-बैलेंसर से एक नोड को एक समय निकालना आसान लगता है, इसे नए कोड को पुनरारंभ करें और इसे लोड-बैलेंसर में वापस रखें।

नोड्स को लेना भी कुछ ऐसा है जो आपको करने के लिए तैयार होना चाहिए यदि आप अपने लाइव सिस्टम में नए एरलांग/ओटीपी रिलीज में हॉट-अपग्रेड करना चाहते हैं।

लेकिन वास्तविक समस्या जो आपके लिए बुलबुला कर सकती है वे हैं जो मेनेसिया से आती हैं। मुझे लगता है कि आपको मिनेसिया को क्या करना है, उसमें विनिर्देशों के साथ एक नया प्रश्न पूछना चाहिए। यदि कोई स्कीमा/टेबल-चेंज नहीं है, और आप बस एक नोड लेना चाहते हैं और इसे बाद में जोड़ना चाहते हैं। या यदि आप वास्तव में टेबल में नई टेबल या नए कॉलम पेश कर रहे हैं। मेनेसिया टेबल प्रतिकृतियों के साथ नोड्स जोड़ने और निकालने की क्षमता प्रदान करता है, और यह mnesia:transform_table/3,4 के माध्यम से कई तालिका परिभाषाओं का विशिष्ट रूप से समर्थन करता है।

+1

हाँ, मुझे डर है कि अगर मैं टेबल में नई टेबल या नए कॉलम पेश करता हूं, तो मुझे पूरी प्रणाली को नीचे ले जाना होगा। आपके उत्तर के लिए धन्यवाद, मुझे नहीं पता था कि एक transform_table फ़ंक्शन है। –

1

यदि आप केवल कोड अपग्रेड कर रहे हैं, तो मैंने erlang release handling with fab के बारे में एक लेख लिखा था। इस सेटअप के साथ, आप नोड्स को पुनरारंभ किए बिना रीयल-टाइम कोड लोडिंग कर सकते हैं। डेटाबेस को ट्रांसफॉर्म करना, हालांकि, एक एकल नोड से किया जाना चाहिए, रिलीज अपग्रेड से अलग से ट्रिगर किया गया।

संबंधित मुद्दे