2008-12-09 8 views
8

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

आप मेमकैड सर्वर को एक साथ कैसे जोड़ते हैं या आप MemCached सर्वर के बीच डेटा को दोहराते हैं?

अतिरिक्त: क्या यह कार्यक्षमता सर्वर या ग्राहकों द्वारा नियंत्रित की जाती है और कैसे?

उत्तर

5

मैंने BeITMemcached का उपयोग किया है और उसमें आप MemcacheClient का एक उदाहरण बनाते हैं और उन सर्वरों को सेट करते हैं जिन्हें आप उपयोग करना चाहते हैं, बस तारों के रूप में।

उस बिंदु पर ग्राहक स्वयं निर्धारित करता है कि अलग-अलग आइटमों को रखने के लिए कौन से सर्वर उपलब्ध हैं। आप कभी नहीं जानते कि कौन सा आइटम होगा।

here to see how the servers handle failover देखें।

सबसे आसान बात यह है कि एक स्थाई तंत्र होना है। मेरे मामले में, मैं memcache में कई सौ वस्तुओं को संग्रहीत करता हूं जो डेटाबेस से बाहर आते हैं।मैं सिर्फ दोबारा कॉल कर सकता हूं और उन्हें वहां वापस रख सकता हूं। जब भी मैं उन्हें डेटाबेस में जोड़ता हूं, अद्यतन करता हूं या हटा देता हूं, तो मैं उन कॉल को memcache पर बना देता हूं।

7

जब आप कई सर्वर सेट करते हैं, तो क्लाइंट लाइब्रेरी प्रत्येक कुंजी/डेटा जोड़ी को स्टोर करने के लिए एक हैश चुनने के लिए पहले हैश का उपयोग करती है। इसका मतलब है कि कोई प्रतिकृति नहीं है, और यह भी कि प्रत्येक क्लाइंट को सर्वर के एक ही सेट का उपयोग करना होगा।

पेशेवरों:

  • लगभग शून्य भूमि के ऊपर, भंडारण और बैंडविड्थ रैखिक बढ़ता है।
  • सर्वर कोड सरल और विश्वसनीय रखा जाता है।

विपक्ष:

  • सर्वर के सेट में कोई बदलाव (एक नीचे चला जाता है, या आप एक नया जोड़ें) अचानक अमान्य कर देता है (लगभग) पूरे कैश।
  • आपको प्रत्येक क्लाइंट पर एक ही एल्गोरिदम का उपयोग करना सुनिश्चित करना होगा।

यदि आपके पास ग्राहक के कोड पर नियंत्रण है, तो आप प्रत्येक कुंजी/डेटा जोड़ी को दो सर्वरों पर दो बार स्टोर कर सकते हैं। किसी भिन्न ग्राहक से पढ़ने पर बस उसी स्थान पर खोज करना सुनिश्चित करें।

+0

निश्चित रूप से ऐसा करने का एकमात्र तरीका नहीं है? –

+1

लगातार हैशिंग एक अलग सर्वर पर अपने पुनः-हैशिंग द्वारा अमान्य कुंजी की संख्या को सीमित कर सकता है। यह आपके पास मौजूद सर्वरों की संख्या पर भी निर्भर है। –

1

ऐसा लगता है कि आप कैश कि रिबूट आदि यदि ऐसा है तो मशीनों के साथ सामना कर सकते हैं करना चाहते हैं ...

मामले का एक बहुत में (यह मानते हुए आप फेसबुक लेखन नहीं कर रहे हैं) एक RDMS कैशिंग के लिए काफी तेजी से है। बस एक टेबल बनाएं जिसमें एक कुंजी और ब्लॉब कॉलम हो। यदि आरडीबीएस सर्वर में पर्याप्त रैम है, तो सभी डेटा रैम में होंगे और डिस्क पर सहेजे जाएंगे ताकि रिकवरी की अनुमति मिल सके।

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

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

कोई भी आप कैश से अमान्य पंक्तियों को साफ़ करने के लिए ट्रिगर्स सेट अप कर सकते हैं, हालांकि यह बहुत जटिल हो सकता है।

2

http://repcached.lab.klab.org/

इसके अलावा, पीएचपी PECL मेम्कैश ग्राहक कई सर्वरों के लिए डेटा को दोहराने कर सकते हैं, memcache.redundancy देखते हैं।

0

मेमकैड प्रतिकृति संपत्ति प्रदान नहीं करता है। ऐसा करने के लिए, आपको सर्वर को memcached क्लाइंट सर्वर सूची में जोड़ने की आवश्यकता है और उसके बाद डेटा को उस विशेष सर्वर में संग्रहीत करने के लिए डीबी दबाएं।

0

आपको गंभीरता से CouchBase पर विचार करना चाहिए। यह memcached प्रोटोकॉल का उपयोग करता है, लगभग एक ही गति प्रदान करता है, और स्वचालित प्रतिकृति प्रदान करता है जिसे आप ढूंढ रहे हैं। यह डिस्क पर भी रहता है ताकि आपका कैश कभी ठंडा न हो।

+0

क्या आपके पास कोई हाथ-अनुभव है? मैं कोचबेस के साथ कई अजीब मुद्दों में भाग गया। बूटस्ट्रैपिंग मुद्दों से क्रैश और क्या नहीं। मैंने उन मुद्दों को आगे बढ़ाने की कोशिश की - कोई फायदा नहीं हुआ। मुझे आशा है कि आपका अनुभव बेहतर होगा। – Till

+0

मेरे पास मेम्बेस के साथ उत्पादन अनुभव है, लेकिन कॉचबेस नहीं। मेरी समझ यह है कि कॉचबेस अब मेम्बेस + कॉच डीबी है। –

+0

हाँ, मैंने मेम्बेस की भी कोशिश की। मैंने सोफेबेस का इस्तेमाल नहीं किया है। – Till

संबंधित मुद्दे