मुझे डेटा डुप्लिकेट या एक साझा डेटाबेस से बचना मुश्किल लग रहा है, यहां तक कि सरलतम माइक्रोसॉर्सेज डिज़ाइन के लिए, जिससे मुझे लगता है कि मुझे कुछ याद आ रहा है। यहाँ समस्या का एक मूल उदाहरण मैं देख रहा हूँ। यह मानते हुए कि किसी व्यक्ति को एक इन्वेंट्री का प्रबंधन करने के लिए एक वेब एप्लिकेशन का उपयोग कर रहे हैं, उन्हें दो सेवाओं की आवश्यकता होगी; वस्तु और स्टॉक में मात्रा का प्रबंधन करने वाली इन्वेंट्री के लिए एक और एक उपयोगकर्ता सेवा जो उपयोगकर्ताओं के डेटा का प्रबंधन करेगी। यदि हम चाहते हैं कि डेटाबेस का स्टॉक रखने वाला एक ऑडिट हम मूल्य के अनुसार अंतिम स्टॉक के रूप में इन्वेंट्री सेवा के लिए डेटाबेस में उपयोगकर्ता आईडी जोड़ सके।
एप्लिकेशन का उपयोग करके हम उन सभी वस्तुओं को देखना चाहते हैं जो कम चल रहे हैं, और पिछली बार उन्हें स्टॉक करने वालों की एक सूची है ताकि हम उन्हें फिर से शुरू करने के लिए कह सकें। ऊपर वर्णित वास्तुकला का उपयोग करते हुए, सभी वस्तुओं के आइटम विवरणों को पुनर्प्राप्त करने के लिए इन्वेंट्री सेवा से अनुरोध किया जाएगा जहां मात्रा 5 से कम है। यह उपयोगकर्ता आईडी सहित एक सूची लौटाएगा। फिर इन्वेंट्री सेवा से प्राप्त उपयोगकर्ता आईडी की सूची के लिए उपयोगकर्ता नाम और संपर्क विवरण प्राप्त करने के लिए उपयोगकर्ताओं की सेवा के लिए एक अलग अनुरोध किया जाएगा।
ऐसा लगता है कि यह बहुत ही अक्षम है और इससे पहले कि हम कई सेवाओं को अलग-अलग सेवाओं के एपीआई के लिए कई अनुरोध कर रहे हैं जो बदले में कई डेटाबेस क्वेरी नहीं कर रहे हैं। एक विकल्प इन्वेंट्री डेटा में उपयोगकर्ताओं के विवरण को दोहराने के लिए है। जब कोई उपयोगकर्ता अपना संपर्क विवरण बदलता है तो हमें अन्य सभी सेवाओं के माध्यम से परिवर्तन को दोहराने की आवश्यकता होगी। लेकिन यह माइक्रोसर्विसेज के बंधे हुए संदर्भ विचार के साथ फिट नहीं लगता है। हम एकल डेटाबेस का भी उपयोग कर सकते हैं और इसे विभिन्न सेवाओं के बीच साझा कर सकते हैं, और एक एकीकरण डेटाबेस की सभी समस्याएं हैं ।
इसे लागू करने का सही / सर्वोत्तम तरीका क्या है?