2012-11-20 32 views
6

मैं वर्तमान में निगरानी और रखरखाव प्रणाली के लिए समाधान बनाने के लिए एक अच्छा मिडलवेयर ढूंढ रहा हूं। हमें 10,000 व्यक्तिगत नोड्स युक्त एक वितरित प्रणाली से डेटा एकत्रित करने और बनाए रखने की चुनौती का सामना करना पड़ता है।वितरित प्रणाली के लिए डाटा-इकट्ठा करने और निगरानी बनाने के लिए मिडलवेयर

सिस्टम 5-20 नोड्स के समूहों में क्लस्टर किया गया है। प्रत्येक समूह आने वाले सेंसर डेटा को संसाधित करके डेटा (एक टीम के रूप में) उत्पन्न करता है। प्रत्येक समूह में एक समर्पित नोड (नीला बक्से) समूह के लिए एक मुखौटा/प्रॉक्सी के रूप में कार्य करता है, जो समूह से डेटा और राज्य को बाहरी दुनिया में उजागर करता है। ये क्लस्टर भौगोलिक रूप से अलग हैं और बाहरी नेटवर्क से अलग नेटवर्क से जुड़ सकते हैं (एक फाइबर पर चला सकता है, एक और 3 जी/उपग्रह से अधिक)। यह संभावना है कि हम दोनों छोटे (सेकंड/मिनट) और लंबे (घंटे) आबादी का अनुभव करेंगे। डेटा स्थानीय रूप से प्रत्येक क्लस्टर द्वारा जारी रखा जाता है।

इस डेटा को विभिन्न ग्राहकों (नारंगी बक्से) द्वारा आगे की प्रसंस्करण, विश्लेषण और देखने के लिए बाहरी & केंद्रीकृत सर्वर (हरे रंग के बक्से) द्वारा एकत्रित (निरंतर और विश्वसनीय रूप से) एकत्र करने की आवश्यकता है। साथ ही, हमें प्रत्येक समूह प्रॉक्सी नोड के माध्यम से सभी नोड्स की स्थिति की निगरानी करने की आवश्यकता है। प्रत्येक नोड को सीधे मॉनिटर करने की आवश्यकता नहीं है, भले ही यह अच्छा होगा अगर मिडलवेयर इसका समर्थन कर सके (दिल की धड़कन/राज्य संदेश ~ 10,000 नोड्स से संभाल लें)। प्रॉक्सी विफलता के मामले में, व्यक्तिगत नोड्स को इंगित करने के लिए अन्य विधियां उपलब्ध हैं।

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

आवश्यकताएँ:

  • 1000+ नोड्स प्रकाशन/सतत डेटा
  • डाटा मज़बूती से होने की जरूरत है पेशकश (किसी तरह) और लगातार एक या अधिक सर्वर के लिए एकत्र हुए। यह खोए गए डेटा के लिए पूछने के लिए किसी प्रकार के स्पष्ट अनुरोध/प्रतिक्रिया का उपयोग करके मिडलवेयर के शीर्ष पर बनाया जाएगा। यदि इसे मिडलवेयर द्वारा स्वचालित रूप से संभाला जा सकता है तो यह निश्चित रूप से एक प्लस है।
  • एक से अधिक सर्वर/ग्राहक एक ही डेटा निर्माता/प्रकाशक से जुड़े होने की और प्राप्त एक ही डेटा
  • डाटा दर प्रति समूह
  • संदेश 10-20 प्रति सेकंड की सीमा में अधिकतम है सक्षम होने की जरूरत आकार
  • नोड्स एम्बेडेड विवश सिस्टम से सामान्य तख्त लिनक्स/विंडोज बक्से
  • नोड्स आम तौर पर उपयोग करने C/C++, सर्वरों और ग्राहकों को आम तौर पर सी ++/सी #
  • नोड्स चाहिए तक होती है शायद ~ 100 4-5 बाइट्स Kbytes से लेकर (बेहतर) अतिरिक्त एसडब्ल्यू या सर्वर, यानी एक समर्पित ब्रोकर या अतिरिक्त स्थापित करने की आवश्यकता नहीं है प्रति नोड सेवा महंगा है
  • सुरक्षा संदेश के आधार पर किया जाएगा, यानी कोई परिवहन सुरक्षा की जरूरत

हम एक समाधान है कि के लिए मुख्य रूप प्रॉक्सी नोड्स (नीला) और सर्वर (हरा) के बीच संचार संभाल कर सकते हैं के लिए देख रहे हैं tweaking सेटिंग्स के लिए डेटा प्रकाशन/मतदान/डाउनलोड और ग्राहकों (नारंगी) से व्यक्तिगत नोड्स (आरपीसी शैली) से।

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

हम संक्षेप में DDS, ZeroMQ, RabbitMQ (दलाल सभी नोड्स पर जरूरत?), SNMP, विभिन्न निगरानी उपकरणों, वेब सेवा (JSON-RPC, बाकी/प्रोटोकॉल बफ़र) आदि की तरह समाधान को देखा है

तो, क्या आपके पास उपयोग में आसान, मजबूत, स्थिर, प्रकाश, क्रॉस-प्लेटफ़ॉर्म, क्रॉस-भाषा मिडलवेयर (या अन्य) समाधान के लिए कोई अनुशंसा है जो बिल फिट करेगी? जितना संभव हो सके उतना सरल लेकिन आसान नहीं।

+0

1000+ प्रकाशकों के साथ विश्वसनीय संचार बनाए रखना एक मॉनिटर सर्वर के लिए एक आसान काम नहीं है।क्या आपको कोई लोड संतुलन करने की अनुमति है? साथ ही, प्रति ब्लू बॉक्स प्रति सेकंड 2 किलोबाइट्स और 15 संदेश प्रति संदेश का औसत संदेश आकार मानते हुए, नेटवर्क 2x15x1,000 + = 30,000 + kbytes प्रति सेकंड = 240 + एमबीटी के कुल से निपटने में सक्षम होना चाहिए; आपके डेटा को बहने के बारे में सोचने का एक और कारण बहता है। और क्या आपके पास नेटवर्क पर आपके निपटारे में कोई मल्टीकास्ट है? –

+0

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

उत्तर

3

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

http://zguide.zeromq.org/page:all#Distributed-Logging-and-Monitoring

आप "विश्वसनीयता" का उल्लेख है, लेकिन आप असफलताओं आप पुनर्प्राप्त करना चाहते की वास्तविक सेट निर्दिष्ट कर सकता है? यदि आप टीसीपी का उपयोग कर रहे हैं तो नेटवर्क पहले से ही "विश्वसनीय" परिभाषा है।

+0

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

+0

FileMQ प्रोजेक्ट पर एक नज़र डालें, जो 0 एमक्यू पर निर्मित एक बड़े पैमाने पर फ़ाइल पबूब प्रणाली है। यह एक पूर्ण उत्तर नहीं हो सकता है लेकिन यह आपको पूर्ण दृढ़ता, एक बहुत ही सरल एपीआई (फाइल सिस्टम) देता है, और असफलताओं से ठीक हो जाएगा। आपने थ्रूपुट के संदर्भ में अपनी आवश्यकताओं को निर्दिष्ट नहीं किया है, लेकिन मुझे लगता है कि आपके नेटवर्क आपके फाइल सिस्टम की तुलना में बहुत धीमे होंगे। देखें http://zguide.zeromq.org/page:all#Large-scale-File- प्रकाशन –

+1

धन्यवाद, एपीआई-वार और सामान्य दोनों/सर्वोत्तम अभ्यास प्रलेखन (इस तरह के अच्छे दस्तावेज़ीकरण को देखना वास्तव में अच्छा है) मार्गदर्शक)। हमारे नेटवर्क हमारी फाइल सिस्टम की तुलना में बहुत धीमे होंगे, हां। हम कभी-कभी बहुत धीमी नेटवर्क का अनुभव करेंगे और संभवतः सभी मामलों को संभालने में सक्षम होने के लिए अलग-अलग एपीआई (पतली/समृद्ध) प्रदान करने में सक्षम होना चाहिए। बीटीडब्ल्यू, हमने सफलतापूर्वक ZerMQ को clrzmq का उपयोग करके हमारे परीक्षण रिग में जोड़ दिया है। अब तक यह विज्ञापित के रूप में काम करता है, वास्तव में आशाजनक लग रहा है! –

5

प्रकटीकरण: मैं लंबे समय से डीडीएस विशेषज्ञ/उत्साही हूं और मैं डीडीएस विक्रेताओं में से एक के लिए काम करता हूं।

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

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

विशेष रूप से यदि आपके पास अपने निपटान में मल्टीकास्ट है, तो सिस्टम में सभी प्रतिभागियों की खोज स्वचालित रूप से की जा सकती है और न्यूनतम कॉन्फ़िगरेशन की आवश्यकता होगी। हालांकि यह आवश्यक नहीं है।

मेरे लिए ऐसा लगता है कि आपकी प्रणाली अनुकूलन की आवश्यकता के लिए पर्याप्त जटिल है। मुझे विश्वास नहीं है कि कोई भी समाधान "बिल को आसानी से फिट करेगा", खासकर अगर आपके सिस्टम को गलती-सहिष्णु और मजबूत होना चाहिए। सबसे अधिक, आपको अपनी आवश्यकताओं के बारे में पता होना चाहिए। लोगों के संदर्भ में आपने उल्लेख किया है DDS बारे में कुछ जानकारी:

1000+ नोड्स प्रकाशन/सतत डेटा

यह एक बड़ा नंबर की पेशकश, लेकिन संभव हो जाना चाहिए, खासकर जब से तुम हो डीडीएस द्वारा समर्थित डेटा-विभाजन सुविधाओं का लाभ उठाने का विकल्प।

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

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

एक से अधिक सर्वर/ग्राहक-वन से-अनेक एक ही डेटा निर्माता/प्रकाशक से जोड़ा जा करने में सक्षम हो और एक ही डेटा प्राप्त

या कई-से-अनेक वितरण की जरूरत है एक आम उपयोग-मामला है।

डाटा दर समूह

प्रति सेकंड 20,000 गए संदेशों की कुल अधिकतम करने के लिए जोड़ा जा रहा है प्रति 10-20 प्रति सेकंड की सीमा में अधिकतम है संभव है, खासकर अगर डेटा-प्रवाह विभाजित कर रहे हैं।

संदेश आकार हो सकता है ~ 4-5 100 बाइट्स Kbytes

से लेकर

जब तक संदेशों से ज्यादा बड़े नहीं मिलता है के रूप में, संदेशों की संख्या आमतौर पर अधिक ले जाया Kbytes की कुल राशि की तुलना में सीमित है तार पर - जब तक कि बड़े संदेश बहुत जटिल संरचना न हों।

नोड्स सामान्य तख्त के लिए एम्बेडेड विवश सिस्टम से लेकर लिनक्स/विंडोज बक्से

कुछ DDS कार्यान्वयन ओएस/मंच संयोजन है, जो एक प्रणाली में मिलाया जा सकता है की एक बड़ी श्रृंखला समर्थन करते हैं।

नोड्स आम तौर पर C/C++, सर्वर और क्लाइंट का उपयोग आम तौर पर सी ++/सी #

ये आम तौर पर समर्थन कर रहे हैं और एक प्रणाली में मिलाया जा सकता है।

नोड्स (बेहतर) है महंगा

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

सुरक्षा संदेश के आधार पर किया जाएगा, जिसका अर्थ है कोई परिवहन सुरक्षा

कि निश्चित रूप से जीवन को आसान बनाता की जरूरत है।