2009-02-13 8 views
8

क्या एकाधिक परियोजनाओं के बीच मेमकैच का एक उदाहरण साझा करना संभव है।मेमकेचे साझाकरण

मान लीजिए मैं एक परियोजना में मेम्कैश अंदर एक वस्तु धक्का, यह मुझे एक अलग परियोजना से एक ही वस्तु को पुनः प्राप्त करने के लिए संभव है। ?

उत्तर

14

मेमकैच सिर्फ एक मेमोरी स्टोर है। यह कई मशीनों में चलाया जा सकता है। ऐसा कोई कारण नहीं है कि दो पूरी तरह से अलग प्रक्रियाएं एक दूसरे से बात नहीं कर सकती हैं।

मुझे स्पष्टीकरण दें। आप एक या अधिक सर्वर पर memcache चला सकते हैं। आप अपने ग्राहकों को उदाहरणों के एक विशिष्ट सेट से बात करने के लिए कॉन्फ़िगर कर सकते हैं। आप एक ही मेजबान (विभिन्न आईपी पते और/या बंदरगाहों को सुनकर) पर दो (या अधिक) विभिन्न memcache प्रक्रियाओं को चला सकते हैं और वे पूरी तरह से स्वतंत्र हैं।

यदि आपके दो अनुप्रयोग एक ही उदाहरण से बात करते हैं तो कोई कारण नहीं है कि वे संवाद नहीं कर सकते हैं।

जटिलता तब आती है जब आप कई उदाहरणों से बात करते हैं और अपने डेटा को विभाजित करते हैं (यानी इसे अलग-अलग उदाहरणों में विभाजित करते हैं) तो आपके ग्राहकों को यह जानने की आवश्यकता है कि डेटा को डेटा प्राप्त करने या डेटा को किस प्रकार प्राप्त करना है। यदि आप एक ही क्लाइंट लाइब्रेरी का उपयोग कर रहे हैं (उदाहरण के लिए आपके ग्राहक दोनों PHP5 हैं) तो यह नाटक नहीं है। यदि वे समान नहीं हैं तो आपको किसी भी तरह से उस समस्या को संभालना होगा।

अन्य मुद्दा यदि आप अलग अलग तकनीकों का उपयोग आप विनिमय प्रारूप के बारे में सोचना के बाद से PHP में कस्टम क्रमबद्धता में जावा या सी # तो पठनीय नहीं होगा है। विशिष्ट विकल्प एक्सएमएल या यहां तक ​​कि JSON भी हैं।

+0

मैं पूरी तरह से प्रश्न को गलत तरीके से पढ़ता हूं, इसे इंगित करने के लिए धन्यवाद :) –

4

हां, जब तक प्रत्येक परियोजना के एक ही तरीके से मेम्कैश नोड्स कॉन्फ़िगर करता है, और एक ही तरीके से एक कैश तत्व के लिए एक महत्वपूर्ण उत्पन्न करता है के रूप में, वे डेटा साझा कर सकते हैं।

0

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

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

0

प्रत्येक परियोजना के लिए मैं नामस्थान द्वारा कुंजी और विभाजन परियोजनाओं को उत्पन्न करने के लिए एक विधि प्रदान करूंगा। तो प्रोजेक्ट बी से कुंजी = foo के लिए, यह एफू द्वारा संग्रहीत/लाया जाता है, और प्रोजेक्ट बी से foo को बीएफयू आदि कहा जाता है।

इस तरह इसे काम करना चाहिए। हालांकि जब उत्पादन की बात आती है, तो यह दृष्टिकोण बहुत निराश होता है, क्योंकि आप डीबगिंग (प्रदर्शन/विश्वसनीयता इत्यादि) में नरक में हो सकते हैं।

बेहतर तरीका यह अधिक स्वच्छ IMHO है, भिन्न पोर्ट पर मेम्कैश चल के कई उदाहरण है।