मेरे पास एक ऐसा एप्लिकेशन है जो सॉलारिस पर जावा और सी ++ का मिश्रण है। कोड के जावा पहलू वेब यूआई चलाते हैं और उन डिवाइसों पर राज्य स्थापित करते हैं जिनके साथ हम बात कर रहे हैं, और सी ++ कोड डिवाइस से वापस आने वाले डेटा की रीयल-टाइम क्रंचिंग करता है। साझा स्मृति का उपयोग जावा कोड से सी ++ कोड तक डिवाइस स्थिति और संदर्भ जानकारी को पास करने के लिए किया जाता है। जावा कोड अपने राज्य को जारी रखने के लिए PostgreSQL डेटाबेस का उपयोग करता है।सॉलारिस पर जावा/सी ++ के लिए उच्च उपलब्धता और स्केलेबल प्लेटफ़ॉर्म
हम कुछ बहुत ही गंभीर प्रदर्शन बाधाओं में भाग ले रहे हैं, और अभी हम स्केल कर सकते हैं एकमात्र तरीका स्मृति और सीपीयू मायने रखता है। साझा स्मृति डिजाइन के कारण हम एक भौतिक बॉक्स पर फंस गए हैं।
सी ++ कोड द्वारा यहां वास्तव में बड़ी हिट ली जा रही है। वेब इंटरफ़ेस को डिवाइस को कॉन्फ़िगर करने के लिए काफी हल्के ढंग से उपयोग किया जाता है; जहां हम वास्तव में संघर्ष कर रहे हैं डेटा वॉल्यूम्स को संभालने के लिए है जो डिवाइस कॉन्फ़िगर किए जाने पर वितरित करते हैं।
हमारे द्वारा डिवाइस से वापस आने वाले प्रत्येक डेटा में एक पहचानकर्ता है जो डिवाइस संदर्भ पर वापस इंगित करता है, और हमें इसे देखने की आवश्यकता है। फिलहाल साझा मेमोरी ऑब्जेक्ट्स की श्रृंखला है जो जावा/यूआई कोड द्वारा रखी जाती है और सी ++ कोड द्वारा संदर्भित होती है, और यह बाधा है। उस आर्किटेक्चर के कारण हम सी ++ डेटा हैंडलिंग को किसी अन्य मशीन पर नहीं ले जा सकते हैं। हमें स्केल करने में सक्षम होना चाहिए ताकि विभिन्न मशीनों द्वारा उपकरणों के विभिन्न सबसेट को संभाला जा सके, लेकिन फिर हम उस संदर्भ लुकअप को करने की क्षमता खो देते हैं, और यही समस्या है जिसे मैं हल करने का प्रयास कर रहा हूं: असली- डिवाइस के संदर्भ को संदर्भित करने में सक्षम होने पर अन्य बक्से पर समय डेटा प्रोसेसिंग।
मुझे ध्यान रखना चाहिए कि हमारे पास डिवाइस द्वारा उपयोग किए जाने वाले प्रोटोकॉल पर कोई नियंत्रण नहीं है, और स्थिति में कोई संभावित मौका नहीं है।
हम हम बाहर पैमाने पर करने में सक्षम होने की इस से दूर स्थानांतरित करने क्लस्टर के लिए अधिक मशीनों जोड़कर जरूरत है पता है, और मैं बाहर काम कर हम वास्तव में यह कैसे करूँगा के प्रारंभिक दौर में हूँ।
अभी मैं टेराकोटा को जावा कोड को स्केल करने के तरीके के रूप में देख रहा हूं, लेकिन मुझे यह पता लगाने के लिए नहीं मिला है कि सी ++ मिलान करने के लिए कैसे स्केल करें।
साथ ही प्रदर्शन के लिए स्केलिंग के लिए हमें उच्च उपलब्धता पर विचार करने की आवश्यकता है। आवेदन को पूरे समय काफी उपलब्ध होना चाहिए - बिल्कुल 100% नहीं, जो लागत प्रभावी नहीं है, लेकिन हमें मशीन आउटेज से बचने का उचित काम करने की आवश्यकता है।
यदि आपको वह कार्य करना है जो मुझे दिया गया है, तो आप क्या करेंगे?
संपादित करें: @ जॉन चैनिंग द्वारा उपलब्ध कराए गए आंकड़ों के आधार पर, मैं दोनों GigaSpaces और रत्न को देख रहा हूँ। ओरेकल कोहेरेंस और आईबीएम ऑब्जेक्टग्रिड केवल जावा ही दिखते हैं।
यहां कुछ उत्कृष्ट लिंक हैं, जॉन। धन्यवाद। मुझे कुछ पढ़ने के लिए मिला है। – Andrew