मैं वर्तमान में निगरानी और रखरखाव प्रणाली के लिए समाधान बनाने के लिए एक अच्छा मिडलवेयर ढूंढ रहा हूं। हमें 10,000 व्यक्तिगत नोड्स युक्त एक वितरित प्रणाली से डेटा एकत्रित करने और बनाए रखने की चुनौती का सामना करना पड़ता है।वितरित प्रणाली के लिए डाटा-इकट्ठा करने और निगरानी बनाने के लिए मिडलवेयर
सिस्टम 5-20 नोड्स के समूहों में क्लस्टर किया गया है। प्रत्येक समूह आने वाले सेंसर डेटा को संसाधित करके डेटा (एक टीम के रूप में) उत्पन्न करता है। प्रत्येक समूह में एक समर्पित नोड (नीला बक्से) समूह के लिए एक मुखौटा/प्रॉक्सी के रूप में कार्य करता है, जो समूह से डेटा और राज्य को बाहरी दुनिया में उजागर करता है। ये क्लस्टर भौगोलिक रूप से अलग हैं और बाहरी नेटवर्क से अलग नेटवर्क से जुड़ सकते हैं (एक फाइबर पर चला सकता है, एक और 3 जी/उपग्रह से अधिक)। यह संभावना है कि हम दोनों छोटे (सेकंड/मिनट) और लंबे (घंटे) आबादी का अनुभव करेंगे। डेटा स्थानीय रूप से प्रत्येक क्लस्टर द्वारा जारी रखा जाता है।
इस डेटा को विभिन्न ग्राहकों (नारंगी बक्से) द्वारा आगे की प्रसंस्करण, विश्लेषण और देखने के लिए बाहरी & केंद्रीकृत सर्वर (हरे रंग के बक्से) द्वारा एकत्रित (निरंतर और विश्वसनीय रूप से) एकत्र करने की आवश्यकता है। साथ ही, हमें प्रत्येक समूह प्रॉक्सी नोड के माध्यम से सभी नोड्स की स्थिति की निगरानी करने की आवश्यकता है। प्रत्येक नोड को सीधे मॉनिटर करने की आवश्यकता नहीं है, भले ही यह अच्छा होगा अगर मिडलवेयर इसका समर्थन कर सके (दिल की धड़कन/राज्य संदेश ~ 10,000 नोड्स से संभाल लें)। प्रॉक्सी विफलता के मामले में, व्यक्तिगत नोड्स को इंगित करने के लिए अन्य विधियां उपलब्ध हैं।
इसके अलावा, हमें सेटिंग्स को ट्विक करने के लिए प्रत्येक नोड के साथ बातचीत करने में सक्षम होने की आवश्यकता है, लेकिन ऐसा लगता है कि अधिक आसानी से हल किया जाता है क्योंकि अधिकतर मैन्युअल रूप से प्रति-नोड को मैन्युअल रूप से संभाला जाता है। कुछ बैच ट्वीकिंग की आवश्यकता हो सकती है, लेकिन यह सब एक मानक आरपीसी स्थिति (वेब सेवा या एक जैसे) की तरह दिखता है। बेशक, यदि मिडलवेयर कुछ अनुरोध/प्रतिक्रिया तंत्र के माध्यम से भी इसे संभाल सकता है जो एक प्लस होगा।
आवश्यकताएँ:
- 1000+ नोड्स प्रकाशन/सतत डेटा
- डाटा मज़बूती से होने की जरूरत है पेशकश (किसी तरह) और लगातार एक या अधिक सर्वर के लिए एकत्र हुए। यह खोए गए डेटा के लिए पूछने के लिए किसी प्रकार के स्पष्ट अनुरोध/प्रतिक्रिया का उपयोग करके मिडलवेयर के शीर्ष पर बनाया जाएगा। यदि इसे मिडलवेयर द्वारा स्वचालित रूप से संभाला जा सकता है तो यह निश्चित रूप से एक प्लस है।
- एक से अधिक सर्वर/ग्राहक एक ही डेटा निर्माता/प्रकाशक से जुड़े होने की और प्राप्त एक ही डेटा
- डाटा दर प्रति समूह
- संदेश 10-20 प्रति सेकंड की सीमा में अधिकतम है सक्षम होने की जरूरत आकार
- नोड्स एम्बेडेड विवश सिस्टम से सामान्य तख्त लिनक्स/विंडोज बक्से
- नोड्स आम तौर पर उपयोग करने C/C++, सर्वरों और ग्राहकों को आम तौर पर सी ++/सी #
- नोड्स चाहिए तक होती है शायद ~ 100 4-5 बाइट्स Kbytes से लेकर (बेहतर) अतिरिक्त एसडब्ल्यू या सर्वर, यानी एक समर्पित ब्रोकर या अतिरिक्त स्थापित करने की आवश्यकता नहीं है प्रति नोड सेवा महंगा है
- सुरक्षा संदेश के आधार पर किया जाएगा, यानी कोई परिवहन सुरक्षा की जरूरत
हम एक समाधान है कि के लिए मुख्य रूप प्रॉक्सी नोड्स (नीला) और सर्वर (हरा) के बीच संचार संभाल कर सकते हैं के लिए देख रहे हैं tweaking सेटिंग्स के लिए डेटा प्रकाशन/मतदान/डाउनलोड और ग्राहकों (नारंगी) से व्यक्तिगत नोड्स (आरपीसी शैली) से।
उल्टा स्थिति के लिए बहुत सी चर्चाएं और सिफारिशें प्रतीत होती हैं; कई ग्राहकों को सर्वर से डेटा वितरित करना, लेकिन वर्णित स्थिति से संबंधित जानकारी ढूंढना मुश्किल हो गया है। सामान्य समाधान एसएनएमपी, नागियोस, गैंग्लिया इत्यादि का उपयोग बड़ी संख्या में नोड्स की निगरानी और संशोधित करने के लिए किया जाता है, लेकिन हमारे लिए मुश्किल हिस्सा डेटा एकत्रण है।
हम संक्षेप में DDS, ZeroMQ, RabbitMQ (दलाल सभी नोड्स पर जरूरत?), SNMP, विभिन्न निगरानी उपकरणों, वेब सेवा (JSON-RPC, बाकी/प्रोटोकॉल बफ़र) आदि की तरह समाधान को देखा है
तो, क्या आपके पास उपयोग में आसान, मजबूत, स्थिर, प्रकाश, क्रॉस-प्लेटफ़ॉर्म, क्रॉस-भाषा मिडलवेयर (या अन्य) समाधान के लिए कोई अनुशंसा है जो बिल फिट करेगी? जितना संभव हो सके उतना सरल लेकिन आसान नहीं।
1000+ प्रकाशकों के साथ विश्वसनीय संचार बनाए रखना एक मॉनिटर सर्वर के लिए एक आसान काम नहीं है।क्या आपको कोई लोड संतुलन करने की अनुमति है? साथ ही, प्रति ब्लू बॉक्स प्रति सेकंड 2 किलोबाइट्स और 15 संदेश प्रति संदेश का औसत संदेश आकार मानते हुए, नेटवर्क 2x15x1,000 + = 30,000 + kbytes प्रति सेकंड = 240 + एमबीटी के कुल से निपटने में सक्षम होना चाहिए; आपके डेटा को बहने के बारे में सोचने का एक और कारण बहता है। और क्या आपके पास नेटवर्क पर आपके निपटारे में कोई मल्टीकास्ट है? –
हां, संभावित सर्वर प्रकाशकों को विभिन्न समूहों में विभाजित करना है, जो एकाधिक सर्वर/ग्राहकों द्वारा संचालित हैं। हकीकत में, 1000 नोड्स (प्लस सब-नोड्स) की निगरानी करने का निचला कार्य निश्चित रूप से एक अच्छे और प्रबंधनीय तरीके से हल करने के लिए मुश्किल है। हालांकि, हम बुनियादी समाधान को यथासंभव सरल, निष्पादक और मजबूत रखना चाहते हैं। हालांकि हमें प्रदान की गई संख्याओं के लिए योजना बनाने की आवश्यकता है, लेकिन ऐसा नहीं है कि हम शुरू से ऐसे बड़े सेटअप का अनुभव करेंगे (हमारे ग्राहकों पर निर्भर करता है)। सबसे खराब के लिए योजना - सर्वश्रेष्ठ के लिए आशा है। हम अभी तक नहीं जानते कि हमारे पास सभी नेटवर्क के लिए मल्टीकास्ट उपलब्ध है या नहीं। –