कई माइक्रोसॉर्क्स के लिए साझा डेटाबेस का उपयोग करना संभव है। आप इस लिंक में microservices के डेटा प्रबंधन के लिए पैटर्न पा सकते हैं: http://microservices.io/patterns/data/database-per-service.html । वैसे, यह माइक्रोसर्विस आर्किटेक्चर के लिए बहुत उपयोगी ब्लॉग है।
आपके मामले में, आप प्रति सेवा पैटर्न डेटाबेस का उपयोग करना पसंद करते हैं। यह माइक्रोसर्विसेज को अधिक स्वायत्त बनाता है। इस स्थिति में, आपको अपने कुछ डेटा को कई माइक्रो सर्वरों के बीच डुप्लिकेट करना चाहिए। आप माइक्रोफ़ोन के बीच एपीआई कॉल के साथ डेटा साझा कर सकते हैं या आप इसे एसिंक्स संदेश के साथ साझा कर सकते हैं। यह आपके बुनियादी ढांचे और डेटा के परिवर्तन की आवृत्ति पर निर्भर करता है। यदि यह अक्सर नहीं बदल रहा है, तो आपको async घटनाओं के साथ डेटा को डुप्लिकेट करना चाहिए।
आपके उदाहरण में, वितरण सेवा वितरण स्थानों और उत्पाद जानकारी की नकल कर सकती है। उत्पाद सेवा उत्पादों और स्थानों का प्रबंधन करती है। फिर आवश्यक डेटा को डिलीवरी सेवा के डेटाबेस में async संदेशों के साथ कॉपी किया जाता है (उदाहरण के लिए आप खरगोश mq या Apache kafka का उपयोग कर सकते हैं)। डिलीवरी सेवा उत्पाद और स्थान डेटा को परिवर्तित नहीं करती है लेकिन यह डेटा का उपयोग तब करती है जब यह अपना काम कर रहा होता है। यदि डिलीवरी सेवा द्वारा उपयोग किए जाने वाले उत्पाद डेटा का हिस्सा अक्सर बदल रहा है, तो एसिंक्स संदेश के साथ डेटा दोहराव बहुत महंगा हो जाएगा। इस मामले में आपको उत्पाद और वितरण सेवा के बीच एपी कॉल करना चाहिए। वितरण सेवा उत्पाद सेवा को यह जांचने के लिए कहती है कि क्या उत्पाद किसी विशिष्ट स्थान पर पहुंचाने योग्य है या नहीं। वितरण सेवा किसी उत्पाद और स्थान की पहचानकर्ता (नाम, आईडी आदि) के साथ उत्पाद सेवा से पूछती है। इन पहचानकर्ताओं को अंतिम उपयोगकर्ता से लिया जा सकता है या इसे माइक्रोसर्विस के बीच साझा किया जाता है। क्योंकि यहाँ माइक्रोसॉर्विस के डेटाबेस अलग हैं, हम इन माइक्रोसेवाओं के डेटा के बीच विदेशी कुंजियों को परिभाषित नहीं कर सकते हैं।
आपी को लागू करना आसान लगता है, लेकिन इस विकल्प में नेटवर्क लागत अधिक है। जब आप एपीआई कॉल कर रहे होते हैं तब भी आपकी सेवाएं कम स्वायत्त होती हैं। क्योंकि, आपके उदाहरण में जब उत्पाद सेवा नीचे है, वितरण सेवा अपना काम नहीं कर सकती है। यदि आप डेटा को async मैसेजिंग के साथ डुप्लिकेट करते हैं, तो डिलीवरी करने के लिए आवश्यक डेटा डिलीवरी माइक्रोसर्विस के डेटाबेस में स्थित है। जब उत्पाद सेवा काम नहीं कर रही है तो आप डिलीवरी कर पाएंगे।