मैं एक वेब एप्लिकेशन पर काम कर रहा हूं, जो ऐतिहासिक रूप से एक PHP/MySQL स्टैक पर बनाया गया था।क्या राज्यव्यापी वेब सर्वर का उपयोग करना समझ में आता है?
आवेदन के उन प्रमुख संचालनों में से एक को भारी गणना करना पड़ा जो पूरे डीबी तालिका की हर पंक्ति पर पुनरावृत्ति की आवश्यकता थी। कहने की जरूरत नहीं है कि यह एक गंभीर बाधा थी। तो जावा में पूरी प्रक्रिया को फिर से लिखने के लिए एक निर्णय लिया गया था।
इससे हमें दो लाभ मिले। एक यह था कि जावा, एक भाषा के रूप में, एक PHP प्रक्रिया से बहुत तेज था। दूसरा यह था कि हम जावा एप्लिकेशन सर्वर मेमोरी में पूरे डेटा सेट को बनाए रख सकते थे। तो अब हम स्मृति में गणना-भारी संचालन कर सकते हैं, और सबकुछ बहुत तेज होता है।
यह थोड़ी देर के लिए काम करता था, जब तक हमें एहसास हुआ कि हमें स्केल करने की आवश्यकता है, इसलिए अब हमें और अधिक वेब सर्वर की आवश्यकता है।
समस्या है - वर्तमान डिजाइन द्वारा, वे सभी को एक ही स्थिति को बनाए रखना चाहिए। वे सभी डीबी से पूछताछ करते हैं, डेटा को संसाधित करते हैं, और इसे स्मृति में बनाए रखते हैं। लेकिन जब आपको यह डेटा बदलने की आवश्यकता होती है तो क्या होता है? सभी सर्वर स्थिरता कैसे बनाए रखते हैं?
यह वास्तुकला मुझे दोषपूर्ण लगती है। स्मृति में सभी डेटा रखने से प्रदर्शन लाभ स्पष्ट है, लेकिन यह गंभीरता से स्केलेबिलिटी को प्रभावित करता है।
यहां से विकल्प क्या हैं? इन-मेमोरी, की-वैल्यू, डेटा स्टोर पर स्विच करें? क्या हमें पूरी तरह से वेब सर्वर के अंदर होल्डिंग स्टेटस छोड़ देना चाहिए?
+1। – duffymo