एफई कोर संगामिति जब कई उदाहरण का उपयोग

0

सवाल

मैं कोड के लिए इसी तरह इस:

var records = db.Records.Where(r => r.IsProcessing == false).Take(100).ToList();
records.IsProcessing = true;
await db.SaveChangesAsync()
...further work with recods

यदि इस कोड पर चलाता है के कई उदाहरण एक microsevice कर सकते हैं, एक संगामिति समस्या होता है? (I. e. दो सेवाओं मिल जाएगा एक ही सेट का रिकॉर्ड). और यदि हाँ - मैं कैसे इसे रोकने के लिए?

मैं करना चाहते हैं को रोकने के लिए मेरी सेवाओं से हो रही है एक ही रिकॉर्ड से डीबी यदि वे कॉल इस विधि के साथ-साथ ।

2

सबसे अच्छा जवाब

1

आप पुनः प्राप्त कर सकता पंक्तियों के साथ एक संग्रहीत प्रक्रिया में चल रहा है, एक serializable लेन-देन. तुम चाहते हो सकता है अन्य गुण में तालिका की तरह कुछ AssignedTo जो रिकॉर्ड सेवा करने के लिए सौंपा है कि पंक्ति है, और एक और विशेषता का संकेत प्रसंस्करण पूरा हो चुका है । अन्यथा, यदि सेवा retrieves कुछ पंक्तियों में विफल रहता है, लेकिन पूरा करने से पहले सभी प्रसंस्करण, उन पंक्तियों रहते हैं unprocessed. जब एक सेवा retrieves पंक्तियों के साथ, यह उपयोग कर सकते हैं एक शर्त की तरह AssignedTo = स्वयं या AssignedTo रिक्त है । शायद वहाँ भी है एक टाइमस्टैम्प या कुछ अन्य तरह से प्राथमिकता करने के लिए चयनित पंक्तियों.

2021-11-23 23:26:52
1

हाँ, यह होगा, और यह इतना आसान नहीं हो सकता इसे रोकने के लिए ।

कल्पना कीजिए इन सेवाओं को काम सौंपा अद्यतन करने के लिए खाते में शेष राशि । वे संतुलन को पढ़ने के लिए, और जोड़ने जमा राशि पर यह:

service 1: on a busy machine (slow)
service 2: on a not so busy machine (fast)
"john" has £100 on his account
service 1: read
service 2: read
service 1: balance = balance + 100;
service 2: balance = balance + 100;
service 2: set processing = true
service 2: set processing = true
service 2: update record
service 1: update record.
john ends up with £200 instead of £300.

आप की आवश्यकता होगी लागू करने के लिए एक लेन-देन की गुंजाइश है, यह प्रबंधन के साथ redis शायद, इतना है कि प्रत्येक उदाहरण एक बिंदु की सच्चाई की जांच करने के लिए अगर यह ठीक है और बाहर पाने के लिए अद्यतन की गुंजाइश है । एक "IsProcessing? या SetIsProcessing" नेटवर्क पर अगर तुम जाएगा.

2021-11-23 21:26:46

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में