2011-10-10 13 views
7

मैं सत्र संबंधी सूचनाओं को संग्रहीत करने के लिए कैसंद्रा का उपयोग करना चाहता हूं। मेरे पास असली HTTP सत्र नहीं है - यह अलग प्रोटोकॉल है, लेकिन एक ही अवधारणा है।भारी लोड के तहत सत्र स्टोर के रूप में कैसंद्रा

मेमकैड ठीक होगा, लेकिन मैं अतिरिक्त रूप से डेटा जारी रखना चाहता हूं।

कैसेंड्रा स्थापना:

  • गैर दोहराया कुंजी अंतरिक्ष
  • एकल स्तंभ परिवार, जहां कुंजी सत्र आईडी और पंक्ति भंडार के भीतर प्रत्येक स्तंभ है एक कुंजी/मान - (Map<String,Set<String,String>>)
  • स्तंभ टीटीएल = 10 मिनट
  • लिखने सीएल = एक
  • 2.000 = एक
  • सीएल पढ़ा लिखते हैं/एस
  • 5.000 पढ़ता/एस

डेटा का उदाहरण:

session1:{ // CF row key 
    {prop1:val1, TTL:10 min}, 
    {prop2:val2, TTL:10 min}, 
..... 
    {propXXX:val3, TTL:10 min} 
}, 
session2:{ // CF row key 
    {prop1:val1, TTL:10 min}, 
    {prop2:val2, TTL:10 min}, 
}, 
...... 
sessionXXXX:{ // CF row key 
    {prop1:val1, TTL:10 min}, 
    {prop2:val2, TTL:10 min}, 
} 

इस मामले स्थिरता में एक समस्या नहीं है, लेकिन प्रदर्शन हो सकता है, विशेष रूप से डिस्क आईओ।

चूंकि मेरे सत्र में डेटा कम समय के लिए छोड़ देता है, इसलिए मैं इसे हार्ड ड्राइव पर संग्रहीत करना चाहता हूं - प्रतिबद्ध लॉग को छोड़कर। स्तंभ SSTable को यह निस्तब्धता से पहले Memtable में समाप्त हो जाता है

  1. , कैसेंड्रा वैसे भी SSTable (HDD करने के लिए इसे फ्लश) में इस तरह के कॉलम स्टोर करेगा:

    मैं कुछ प्रश्न हैं?

  2. मेरी कुंजी स्पेस के लिए प्रतिकृति अक्षम है, इस मामले में एसएसटीबल में इस तरह के समाप्त कॉलम को संग्रहीत करना आवश्यक नहीं होगा, है ना?
  3. प्रत्येक सीएफ टोपी अधिकतम 10 कॉलम। ऐसे मामले में मैं पंक्ति कैश सक्षम करता हूं और कुंजी कैश अक्षम करता हूं। लेकिन मुझे उम्मीद है कि मेरे डेटा को अभी भी मेमटेबल में उपलब्ध होने की उम्मीद है, इस मामले में मैं पूरे कैश को अक्षम कर सकता हूं, है ना? इस तरह के सत्र-स्टोर उपयोग के मामले के लिए
  4. किसी भी कैसेंड्रा विन्यास संकेत वास्तव में सराहना किया जाएगा :)

धन्यवाद, मेसिएज

+0

आप कहते हैं कि आप डेटा जारी रखना चाहते हैं, लेकिन 10 मिनट के बाद भी टीटीएल करना चाहते हैं। – sdolgy

+0

यह महत्वपूर्ण प्रक्रिया है और मैं यह सुनिश्चित करना चाहता हूं कि –

उत्तर

4

यहाँ मैं क्या किया है - और यह ठीक काम करता है:

  1. सेट replication_factor 1 के लिए - साधन पहले संघनन पर स्तंभ हटाना - अक्षम प्रतिकृति
  2. सेट gc_grace to 0 का मतलब है। यह ठीक है, क्योंकि डेटा दोहराया नहीं गया है।
  3. मेमटेबल आकार बढ़ाएं और कैश आकार घटाएं। हम memtable से डेटा पढ़ना चाहते हैं और कैश छोड़ना चाहते हैं - एचडीडी में डेटा फ्लश करना और एचडीडी से कैश में इसे फिर से पढ़ना।
  4. साथ ही प्रतिबद्ध लॉग निष्क्रिय किया जा सकता - durable_writes = false

इस सेटअप में, डेटा memtable से पढ़ा जाएगा और कैश उपयोग नहीं किया जाएगा। मेमटेबल मेरे डेटा को समाप्त होने तक या यहां तक ​​कि लंबे समय तक रखने के लिए पर्याप्त ढेर आवंटित कर सकता है।

एसएसटीबल को डेटा फ्लश करने के बाद, gc_grace=0 के बाद से कॉम्पैक्शन तुरंत समाप्त हो गई पंक्तियों को हटा देगा।

+4

मैं ऐसा करने में बिंदु नहीं देख सकता। यदि आप प्रतिलिपि नहीं बना रहे हैं तो आपको पहले से ही memcached के साथ क्या मिलता है। यदि आपका डेटा नोड पर रहता है तो आपका डेटा गुम हो जाता है। निश्चित रूप से यह प्रतिबद्धता में है, लेकिन 10 मिनट में एक नोड पुनर्निर्माण? क्या मैं कुछ भूल रहा हूँ? –

1

आपके उपयोग के मामले को ध्यान में रखते अगर मैं गलत नहीं कर रहा हूँ आप सभी करना चाहते हैं आपका मुख्य मान [sessionID => sessionData] स्मृति में जोड़े और वे मान प्रत्येक 10min की अवधि समाप्त हो जाएंगे [मतलब आप दृढ़ता नहीं चाहते हैं]।

तो फिर आप रेडिस की तरह कुछ क्यों नहीं कर सकते जो एक मेमोरी स्टोर है।

डॉक्टर से:

Redis एक खुला स्रोत, उन्नत कुंजी-मान दुकान है। इसे अक्सर डेटा संरचना सर्वर के रूप में जाना जाता है क्योंकि कुंजी में तार, हैंश, सूचियां, सेट और सॉर्ट किए गए सेट हो सकते हैं।

के बाद से यू की जरूरत नहीं है प्रतिकृति redis गुरु दास वास्तुकला भी आप

Redis को प्रभावित नहीं कर सकते हैं समर्थन करता है, टीटीएल भी

AFAIK कैसेंड्रा विस्तृत वसा पंक्तियां [अधिक स्तंभों कम पंक्तियों] बल्कि पतला पंक्तियां [के लिए अच्छा है पिछले का स्थानांतरण]। आपका उपयोग केस ऐसा प्रतीत नहीं होता है।

सादर, तमिल

+0

तोड़ नहीं है हम पहले से ही memcached है - यह इस तरह के उपयोग के मामले के लिए भी ठीक होगा। लेकिन कहें, कि मेरी प्रक्रिया महत्वपूर्ण है और मैं यह सुनिश्चित करना चाहता हूं कि डेटा 10 मिनट के दौरान खो नहीं जाएगा - 30 मिनट भी हो सकता है। –

+0

आप जो भी रुचि रखते हैं वह कैसंद्रा में लॉग कार्यान्वयन प्रतिबद्ध है। मुझे उम्मीद है कि यह http://redis.io/topics/persistence में मदद करता है, मैं किसी भी तरह से memcached abt – Tamil

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