MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

दोहराव वाली चीजें करने वाली एकाधिक नोड प्रक्रियाओं से कैसे बचें?

ऐसा करने का एक तरीका यह है कि आप अपने प्रत्येक MongoDB दस्तावेज़ को एक अद्वितीय संख्यात्मक आईडी असाइन करें, और अपने प्रत्येक नोड.जेएस कार्यकर्ता को एक अद्वितीय संख्यात्मक पहचानकर्ता असाइन करें।

उदाहरण के लिए, NUM_WORKERS नामक एक env var रखें, और फिर अपने node.js मॉड्यूल में:

var NumWorkers = process.env.NUM_WORKERS || 1;

फिर आपको अपने प्रत्येक कार्यकर्ता को एक अद्वितीय, सन्निहित इंस्टेंस नंबर आईडी (रेंज 0 से NumWorkers-1 में) असाइन करने की आवश्यकता है (उदाहरण के लिए आपके नोड.जेएस प्रक्रिया द्वारा पढ़े जाने वाले कमांड लाइन पैरामीटर के माध्यम से जब यह प्रारंभ होता है)। आप इसे MyWorkerInstanceNum नाम के वेरिएबल में स्टोर कर सकते हैं।

जब आप MongoDB से कोई दस्तावेज़ चुनते हैं, तो निम्न फ़ंक्शन को कॉल करें (दस्तावेज़ के अद्वितीय दस्तावेज़ को एक पैरामीटर के रूप में पास करते हुए):

function isMine(documentId){
    //
    // Example: documentId=10
    //          NumWorkers= 4
    // (10 % 4) = 2
    // If MyWorkerInstanceNum is 2, return true, else return false.
    return ((documentId % NumWorkers) === MyWorkerInstanceNum);
}

केवल दस्तावेज़ को वास्तव में संसाधित करना जारी रखें यदि isMine() सत्य लौटाता है। इसलिए, कई कर्मचारी दस्तावेज़ को "चुन" सकते हैं, लेकिन केवल एक कार्यकर्ता वास्तव में इसे संसाधित करेगा।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB शार्प क्लस्टर में दस्तावेज़ों की गलत संख्या

  2. (नेवला/वादे) आप कैसे जांचते हैं कि दस्तावेज़ upsert के साथ findOneAndUpdate का उपयोग करके बनाया गया था या नहीं?

  3. मैं जावा ड्राइवर का उपयोग करके मोंगो डीबी में दस्तावेज़ों के फ़ील्ड कैसे अपडेट करूं?

  4. Meteor.Collection.ObjectID () बनाम MongoDB ObjectId ()

  5. MongoDB पर्यावरण सेटअप | विंडोज़ पर मोंगोडीबी स्थापित करें