लोड बैलेंसर बनाम कनेक्शन पूलिंग - क्या कोई अंतर है?


11

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं जिसके लॉन्च के तुरंत बाद लाखों उपयोगकर्ताओं की सेवा करने की उम्मीद है। डेटाबेस पोस्टग्रेज है, और अब मैं मान रहा हूं कि कम से कम दो सर्वरों की आवश्यकता होगी। एक sys व्यवस्थापक (जो स्पष्ट रूप से स्केलेबल सिस्टम में पारंगत है) ने वेब सर्वर और डेटाबेस सर्वर के बीच लोड बैलेंसर लगाने का सुझाव दिया है।

मेरा सवाल लोड संतुलन बनाम कनेक्शन पूलिंग के अंतर के संबंध में है। प्रदर्शन को बनाए रखने के लिए, मुझे एक या दूसरे, या दोनों को देखना चाहिए?


वे बहुत ज्यादा एक ही बात कर रहे हैं। pgbouncer अनुशंसित पूलर है, pgpool II में अधिक सुविधाएँ हैं लेकिन सेटअप करने के लिए अधिक जटिल है।
स्कॉट मारलोए

जवाबों:


7

PostgreSQL के साथ आपके पास दो अलग-अलग क्षेत्र हैं जो पूलिंग कर सकते हैं, या तो ऐप लेयर (यानी पूलिंग आदि में बनाया गया jdbc) या फिर एक मध्यवर्ती लेयर में जो ऐप और db (s) के बीच बैठता है, जैसे कि Ggouncer या pgpool।

यदि आप pgbouncer या pgpool की तरह एक इंटरमीडिएट लेयर में पूलिंग करते हैं, तो वह लेयर ALSO चुनिंदा प्रश्नों का बैलेंसिंग कर सकता है। आगे जब संतुलन को संतुलित किया जाता है, तो आप दो तरीकों में से एक में लिख सकते हैं: आप या तो एक एकल लेखन मास्टर हो सकते हैं जो आपके पढ़ने वाले दासों के लिए अन्य साधनों के माध्यम से प्रतिकृति बनाता है, जैसे कि एक उपकरण का उपयोग करके स्लाइन या बिल्ट स्ट्रीमिंग प्रतिकृति में बनाया गया है जो कि 9.0 में दिखाया गया है और ऊपर, या आपके पास लोड बैलेंसर हो सकता है सभी लेखन करते हैं, ताकि आने वाले रीड्स केवल एक डीबी को हिट करें, लेकिन उन सभी को अपडेट रखने के लिए प्रत्येक डेटाबेस को हिट करता है।

या यदि आप सलाहकार हैं, तो आप लोड बैलेंसिंग लेयर को एक और लेयर नीचे ले जा सकते हैं, जो कि plproxy का उपयोग करते हुए पोस्टग्रेजेकल में ही हो सकता है। यह pgsql के लिए एक pl भाषा है जिसे आपको एक pg डेटाबेस को सामने के छोर पर रखने की अनुमति देने के लिए डिज़ाइन किया गया है, जिसमें कोई वास्तविक डेटा नहीं है, और यह डेटाबेस तब अविश्वसनीय थ्रूपुट के लिए एकाधिक संभवतः निरर्थक dbs के शीर्ष पर चल सकता है। प्लेपॉक्सी सेट अप और रनिंग के लिए काफी जटिल है, लेकिन साथ ही यह काफी स्केलेबल भी है। ध्यान दें कि आपके आवेदन का समर्थन करने के लिए इसे फिर से लिखना होगा ताकि इसे किसी भी पुराने ऐप के तहत उछाला न जाए और सिर्फ काम किया जा सके।

http://slony.info/ http://wiki.postgresql.org/wiki/PL/Proxy http://pgpool.projects.postgresql.org/


3

लोड संतुलन और कनेक्शन पूलिंग दो बहुत अलग चीजें हैं।

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

लोड बैलेंसिंग आपको लोड बैलेंसर के पीछे कई डेटाबेस सर्वर रखने की अनुमति देता है ताकि आप एक सर्वर को काम के सभी को संभालने के बजाय कई सर्वरों पर लोड फैला सकें।

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

यदि कोई एकल डेटाबेस सर्वर एप्लिकेशन के लोड को संभाल नहीं सकता है, तो वहां 3 सर्वर प्राप्त करें। इस तरह से आप ऐप को क्रैश किए बिना आवश्यकतानुसार रिबूट कर सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.