2008-08-30 13 views
40

Broadcast like UDP with the Reliability of TCP के उत्तरों में से एक में, उपयोगकर्ता Spread संदेश API का उल्लेख करता है। मैंने ØMQ नामक एक को भी चलाया है। मुझे MPI के साथ कुछ परिचितता भी है।स्प्रेड बनाम एमपीआई बनाम ज़ीरोमक?

तो, मेरा मुख्य प्रश्न यह है कि: मैं एक दूसरे को क्यों चुनूं? अधिक विशेष रूप से, जब मैं एमपीआई के परिपक्व कार्यान्वयन के दौरान स्प्रेड या ØMQ का उपयोग करना चुनूं?

उत्तर

46

एमपीआई तेज, भरोसेमंद नेटवर्क के साथ कसकर-युग्मित गणना क्लस्टर को डिज़ाइन किया गया था। फैला और ØMQ बड़े वितरित सिस्टम के लिए डिजाइन किए गए हैं। यदि आप समानांतर वैज्ञानिक अनुप्रयोग तैयार कर रहे हैं, तो एमपीआई के साथ जाएं, लेकिन यदि आप एक सतत वितरित प्रणाली तैयार कर रहे हैं जिसे दोषों और नेटवर्क अस्थिरता के प्रति लचीला होना आवश्यक है, तो दूसरों में से एक का उपयोग करें।

एमपीआई में गलती सहनशीलता के लिए बहुत सीमित सुविधाएं हैं; अधिकांश कार्यान्वयन में डिफ़ॉल्ट त्रुटि हैंडलिंग व्यवहार एक प्रणाली-व्यापी विफल है। इसके अलावा, एमपीआई के अर्थशास्त्र की आवश्यकता है कि अंततः भेजे गए सभी संदेशों का उपभोग किया जाए। यह क्लस्टर पर सिमुलेशन के लिए बहुत समझ में आता है, लेकिन वितरित अनुप्रयोग के लिए नहीं।

13

मैंने इनमें से किसी भी पुस्तकालय का उपयोग नहीं किया है, लेकिन मैं कुछ संकेत दे सकता हूं।

  1. एमपीआई एक संचार प्रोटोकॉल है जबकि स्प्रेड और ØMQ वास्तविक कार्यान्वयन हैं।
  2. एमपीआई "समांतर" प्रोग्रामिंग से आता है जबकि स्प्रेड "वितरित" प्रोग्रामिंग से आता है।

तो, यह वास्तव में इस पर निर्भर करता है कि आप समानांतर प्रणाली या वितरित प्रणाली बनाने की कोशिश कर रहे हैं या नहीं। वे एक दूसरे से संबंधित हैं, लेकिन अंतर्निहित अर्थ/लक्ष्य अलग हैं। समांतर प्रोग्रामिंग एक साथ कई कंप्यूटरों का उपयोग करके बढ़ती कम्प्यूटेशनल पावर के साथ सौदा करता है। कंप्यूटर के विश्वसनीय (सुसंगत, गलती-सहनशील और अत्यधिक उपलब्ध) समूह के साथ वितरित प्रोग्रामिंग सौदों।

"विश्वसनीयता" की अवधारणा टीसीपी की तुलना में थोड़ा अलग है। टीसीपी की विश्वसनीयता "इस पैकेट को अंतिम कार्यक्रम में दें चाहे कोई फर्क नहीं पड़ता।" वितरित प्रोग्रामिंग की विश्वसनीयता "यहां तक ​​कि अगर कुछ मशीनें मरती हैं, तो पूरी तरह से सिस्टम लगातार तरीके से काम करना जारी रखता है।" वास्तव में गारंटी देने के लिए कि सभी प्रतिभागियों को संदेश मिला, किसी को 2 phase commit या तेज विकल्पों में से एक की आवश्यकता होगी।

5

आप यहां उपलब्ध विभिन्न प्रकार की सेवाओं और बुनियादी ढांचे के बारे में विभिन्न विचारों के साथ यहां विभिन्न अलग-अलग एपीआई को संबोधित कर रहे हैं। मुझे एमपीआई और स्प्रेड के बारे में पर्याप्त जानकारी नहीं है, लेकिन मैं ज़ीरोएमक्यू के साथ थोड़ा और मदद कर सकता हूं।

ज़ीरोएमक्यू एक साधारण संदेश संचार पुस्तकालय है। यह आम संदेश पैटर्न (पुश/पुल, अनुरोध/उत्तर, PUB/SUB, आदि) के प्रतिबंधित सेट के आधार पर अलग-अलग सहकर्मियों (स्थानीय लोगों सहित) को संदेश भेजने से कुछ और नहीं करता है। यह उन पैटर्न के आधार पर सख्ती से ग्राहक कनेक्शन, पुनर्प्राप्ति, और बुनियादी भीड़ को संभालता है और आपको स्वयं को बाकी करना है।

हालांकि बहुत प्रतिबंधित दिख रहा है, लेकिन यह सरल व्यवहार अधिकतर है जो आपको अपने आवेदन की संचार परत के लिए आवश्यक होगा। यह आपको सरल प्रोटोटाइप, सभी स्मृति में, विभिन्न वातावरण में अधिक जटिल वितरित अनुप्रयोगों के लिए, सरल प्रॉक्सी और नोड्स के बीच गेटवे का उपयोग करके बहुत तेज़ी से स्केल करने देता है। हालांकि, यह नोड तैनाती, नेटवर्क खोज, या सर्वर निगरानी करने की उम्मीद नहीं है; आपको इसे स्वयं करना होगा।

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

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