2012-10-18 15 views
5

हमारे पास रचनात्मक रूप से "बूटस्ट्रैप" नामक एक प्रक्रिया है जो हमारे कैसंड्रा क्लस्टर को पर्यावरण (डीवी 1, देव 2, क्यूए, ..., प्रोड) में दिए गए सॉफ्टवेयर के दिए गए संशोधन के लिए सेट करती है। यह बूटस्ट्रैप गैर-प्रोड में प्रारंभिक डेटा को पॉप्युलेट करने के साथ-साथ कुंजीपटल और कॉलम परिवार बनाता है।मैं अपने मेटाडेटा के लिए कैसंद्रा क्लस्टर से कैसे पूछ सकता हूं?

हम एस्ट्यानैक्स का उपयोग कर रहे हैं, लेकिन हम बूटस्ट्रैपिंग के लिए हेक्टर का उपयोग कर सकते हैं।

यह देखते हुए कि एक और टीम ने फैसला किया है कि प्रत्येक पर्यावरण के अपने डेटासेंटर नाम होंगे। और यह देखते हुए कि मैं इसे दो से अधिक डेटासेंटर से जाने पर प्रोड में काम करना चाहता हूं। और यह देखते हुए कि हम PropertyFileSnitch का उपयोग करेंगे:

मैं अपने लेआउट के लिए कैसंद्रा क्लस्टर से कैसे पूछ सकता हूं? (nodetool ring पर शेलिंग के बिना)

विशेष रूप से, मुझे डेटासेंटर के नामों को जानने की आवश्यकता है ताकि मैं NetworkTopologyStrategy का उपयोग करते समय रणनीति विकल्पों के लिए सही सेटिंग्स के साथ एक कुंजीपटल बना या अपडेट कर सकूं। हम प्रति डेटा 3 प्रतियां चाहते हैं। कुछ envs में एक और कई दो होते हैं, अंततः उत्पादन में और अधिक होगा।

क्या सीक्यूएल या थ्रिफ्ट कॉल है जो मुझे क्लस्टर लेआउट के बारे में जानकारी देगा?

मैंने देखा है कि विभिन्न डॉक्टर सेट में कई टीओसी हैं, और थोड़ी सी गुगल हो गई है। मैंने सोचा कि मैं नोडेटूल कोड हालांकि खोदने से पहले यहां पूछूंगा।

उत्तर

4

मुझे यकीन नहीं है कि हेक्टर या एस्ट्यानैक्स इसका खुलासा कैसे करते हैं, लेकिन बुनियादी थ्रिफ्ट विधि describeRing(keyspace) आपको जो भी ढूंढ रहे हैं उसे देना चाहिए। जानकारी है कि इसमें से भाग EndpointDetails structs कि इस तरह दिखना हैं:

endpoint_details=[EndpointDetails(datacenter='datacenter1', host='127.0.0.1', rack='rack1')] 

कि विधि से परिणाम के बाकी के साथ, आप टोकन यह पता लगाने में सक्षम होना चाहिए, डीसी, रैक, और इतने पर, क्लस्टर में प्रत्येक नोड के लिए।

चूंकि आप जावा क्लाइंट का उपयोग कर रहे हैं, तो आप क्लस्टर के अधिक चयन भागों का वर्णन करने के लिए कुछ जेएमएक्स विधियों (जो नोडेटूल उपयोग) का उपयोग भी कर सकते हैं। उदाहरण के लिए, आप स्निच एमबीन ("org.apache.cassandra.db:type=EndpointSnitchInfo") देख सकते हैं, विशेष रूप से getDatacenter(ip) और getRack(ip) विधियां।

0

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

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

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