2011-08-21 6 views
6

असल में, मैं निम्नलिखित एल्गोरिदम लागू करना चाहता हूं और विश्लेषण कर सकता हूं कि इन एल्गोरिदम का उपयोग करके बनाई गई प्रणाली विभिन्न स्थितियों के तहत कैसे व्यवहार करती है।वितरित संदेश को एल्गोरिदम पास करने के लिए चुनने के लिए प्रोग्रामिंग भाषा

  • बातुनी प्रोटोकॉल
  • एकाधिक Paxos
  • अनुरूप यहां hashing

मेरे हित इन एल्गोरिदम में है। मैं मूल रूप से एक प्रोग्रामिंग भाषा की तलाश में हूं जो मुझे इन एल्गोरिदम को जल्दी से और गहराई से इन एल्गोरिदम को समझने देता है।

मुझे कौन सी भाषा चुननी चाहिए? जावा, स्कैला, एरलांग या कुछ और।

वर्तमान में, मुझे जावा और सी ++ पता है।

+7

मेरे अनुभव में, एरलांग वास्तव में वितरित संदेश पास करने के लिए वास्तव में उपयुक्त है। मैं आपके द्वारा वर्णित किसी भी प्रोटोकॉल को नहीं जानता, लेकिन मुझे लगता है कि इन उद्देश्यों के लिए प्रयास करने के लिए एरलांग अच्छा है। –

+0

बाद में पछतावा मत करो। Erlang गलती सहनशील वितरित सिस्टम के लिए भविष्य के रूप में साबित किया गया है। Erlang में सेमेन्टिक्स को इस तरह के एल्गोरिदम के तेज प्रोटोटाइप का समर्थन करने के लिए शुरुआत से डिजाइन किया गया है –

+1

यदि आप जावा और सी ++ जानते हैं, तो आप विकल्पों की तलाश क्यों कर रहे हैं? यदि आप अपने कारणों को समझा सकते हैं, तो यह सिफारिशें करने में मदद करेगा। –

उत्तर

8

आप Erlang में प्रोटोकॉल को लागू करने की कोशिश कर सकते।

  • प्रक्रिया संचार भाषा और वीएम में बहुत सुंदर ढंग से बेक्ड है। असीमित संदेश दो elrang प्रक्रिया के बीच गुजर रहा है चाहे एक ही वीएम या वीएम में semantically समकक्ष में।
  • एल्गोरिदम के गलती सहिष्णुता पहलुओं/पुनः प्रयास तर्क आदि में कोडिंग erlang में एक हवा है। सबकुछ हल्के वजन प्रक्रियाओं में शामिल करें और पर्यवेक्षकों नामक विशेष प्रक्रियाओं का उपयोग उन्हें पुनरारंभ करने के लिए करें।
  • एरलांग ऑब्जेक्ट्स को सीरियल करना वास्तव में सरल है। आपको अपने सीरियलाइजेशन तर्क को स्पष्ट रूप से कोड करना नहीं है (जैसे कि जावा में सीरियलज़ेबल लागू करना)।
  • एरलांग वितरण rpc नामक मॉड्यूल के साथ आता है जो आपको दूरस्थ वीएम पर कार्यों का आह्वान करने देता है।
  • एल्रांग खोल एक वास्तविक भगवान भेजता है। आप किसी भी दूरस्थ वीएम में एक खोल संलग्न कर सकते हैं। खोल आपको आंतरिक टेबल/डेटा संरचनाओं को प्रोफाइल करने देता है। वीएम में अत्यधिक परिष्कृत डिबगिंग और ट्रेसिंग सुविधाएं भी हैं जो आपके लिए खोल के माध्यम से उपलब्ध हैं।
  • आप Riak पर देख सकते हैं, open source नोएसक्यूएल डेटास्टोर अमेज़ॅन के डायनेमो पर मॉडलिंग एरलांग में लिखा गया है। यह लगातार हैशिंग और गॉसिप प्रोटोकॉल दोनों लागू करता है।
0

क्या आपने अपने संदेश पासिंग लाइब्रेरी के बारे में निर्णय लिया है? यदि आप एमपीआई में रुचि रखते हैं, तो इसके जावा और सी ++ दोनों संस्करण उपलब्ध हैं।

एमपीआई आपके लिए बहुत सारी नौकरियां करता है, जैसे संदेश प्रसारित करना और उत्तरों को पुनर्प्राप्त करना, जो आपके एल्गोरिदम में आवश्यक है। नतीजतन, मैं आपको सी ++ या जावा के लिए एमपीआई का उचित संस्करण खोजने और काम को बंद करने की सलाह देता हूं।

पर एक नज़र डालें:

+1

एमपीआई को स्थिर मशीनों के एक सजातीय समूह की आवश्यकता होती है। यह बादल वास्तुकला के लिए उपयुक्त नहीं है, जहां कॉन्फ़िगर एकरूप नहीं है, विलंबता भिन्न हो सकती है और आप सुनिश्चित नहीं हैं कि मशीन जीवित रहेगी। तो, यह वितरित कंप्यूटेशंस के लिए अंतिम panacea नहीं है। – paradigmatic

+0

@paradigmatic: सहमत नहीं है! एमपीआई कार्यक्रम विषम (एचडब्ल्यू, ओएस, पीएल) वातावरण पर निष्पादित किया जा सकता है। Pls ध्यान देते हैं कि अजव (जिसने पूछा है) प्रोटोकॉल के एक सेट में प्रयोग करके संदेश भेजने के लिए पुस्तकालय की जरूरत है। वह एक वास्तविक बादल वातावरण का सामना नहीं कर रहा है जैसे कि आपने उल्लेख किया है। एमपीआई के गलती सहिष्णु संस्करण के लिए कृपया एफटी-एमपीआई (http://icl.cs.utk.edu/ftmpi/) पर एक नज़र डालें। – hsalimi

+1

Erlang भूल जाओ? यह गलत सलाह है। आज लागू एक एल्गोरिदम आज की चुनौतियों का सामना नहीं कर सकता है जब यह तकनीक कल की चुनौतियों पर आधारित थी। Erlang स्केलेबिलिटी, उपलब्धता और स्थिरता (एक छोटे प्रोटोटाइप समय के साथ) पर परीक्षण किया गया है। Riak, Membase, Scalaris, Yaws e.t.c. जैसे सिस्टम की तुलना करें ये सिस्टम एरलांग में बने स्थिर मॉडल पर भरोसा करते हैं और आजकल चुनौतियों के खिलाफ भरोसेमंद साबित हुए हैं। Erlang आज़माएं, आपको पछतावा नहीं होगा –

2

उन सभी प्रोटोकॉल को पहले से ही विभिन्न एर्लांग परियोजनाओं में लागू किया गया था। अधिक जानकारी के लिए Mnesia, Riak, CouchDB, Scalaris देखें (प्रत्येक प्रोजेक्ट में सभी प्रोटोकॉल नहीं)।मैं Erlang की तुलना में इस तरह के प्रोटोकॉल प्रयोगों के लिए और अधिक अनुकूल वातावरण की कल्पना नहीं कर सकता।

4

ओह हाँ! आप इन पर देख कर Erlang प्रोग्रामिंग शुरू कर सकते हैं:

  1. Learn You some Erlang for great good
  2. Erlang Book Part 1
  3. Orielly's Erlang Programming Text Book (Francesco Cezarini and Simon Thompson)
  4. Joe Armstrong's Programming Erlang Text Book

उपरोक्त उन लिंक आपको आपको आवश्यक सभी एर्लैंग प्रोग्रामिंग के लिए संसाधन प्रदान करेंगे। हालांकि मैं सुझाव देता हूं कि आप Joe Armstrongs Programming Erlang Text Book से शुरू करें, और जैसा कि आप इसे पढ़ते हैं, डेटा संरचनाओं को और समझने के लिए संदर्भ के रूप में वेबसाइट का उपयोग करें: Learn you some erlang for great good (ऊपर संदर्भ संख्या 1)।

आप यहां से एरलांग डाउनलोड कर सकते हैं: Erlang Download official Page

आप अन्य लिंक और संसाधन (अनुप्रयोगों, पुस्तकालयों e.t.c.), जिनमें से अधिकांश यहाँ इंडेक्स किए गए आवश्यकता हो सकती है: Erlang/OTP .com website

कभी-कभी, आप हमेशा स्टैक ओवरफ्लो पर किसी भी प्रश्न पूछ सकते हैं, या आप स्रोत फोर्ज से उपकरण और पुस्तकालयों की खोज कर सकते हैं।

+1

यह शानदार लगता है। सुविधाओं पर नज़र डालने पर, मुझे लगता है कि मुझे सी ++ और जावा के साथ कोडिंग के 10 साल बाद इस सुरुचिपूर्ण पीएल को सीखना चाहिए। – hsalimi

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