हमारी दुकान ने हाल ही में आवेदन विकास के लिए एसओए दृष्टिकोण शुरू करना शुरू कर दिया है। हम चिंताओं, पुन: प्रयोज्यता, और एसओए/माइक्रोसर्विसेज के अन्य लाभों को अलग करने के साथ कुछ शानदार लाभ देख रहे हैं।माइक्रोस्कोर्सेस में क्वेरी/अंकन
हालांकि, एक बड़ा आइटम जो हम फंस गए हैं, सेवाओं में समेकित, फ़िल्टरिंग और पेजिंग परिणाम हैं। मुझे इस परिदृश्य के साथ इस मुद्दे का वर्णन करने दें।
कहते हैं कि हम 3 सेवाओं है:
- PersonService - आइटम है कि खरीद-कर रहे हैं पर स्टोर जानकारी - लोगों पर स्टोर जानकारी (नाम, पते, आदि)
- ItemService।
- भुगतान सेवा - लोगों द्वारा विभिन्न वस्तुओं के लिए किए गए भुगतानों के संबंध में स्टोर जानकारी।
अब, हम एक रिपोर्टिंग/एडमिन टूल बनाना चाहते हैं जो कुल मिलाकर कई सेवाओं पर प्रदर्शित/रिपोर्ट कर सकता है। उदाहरण के लिए, हम व्यक्तियों और मदों के साथ भुगतान की एक पृष्ठांकित सूची प्रदर्शित करना चाहते हैं, जिसके लिए प्रत्येक भुगतान किया गया था। यह बहुत सरल है: भुगतान की सूची प्राप्त करें, फिर संबंधित व्यक्ति और आइटम रिकॉर्ड के लिए व्यक्ति सेवा और आइटम सेवा से पूछें।
हालांकि, जब हम उस डेटा को फ़िल्टर करना चाहते हैं तो समस्या तब खेलती है: उदाहरण के लिए, पहले नाम 'बॉब' वाले लोगों द्वारा किए गए भुगतान की एक पृष्ठांकित सूची प्रदर्शित करना, जिन्होंने आइटम 'कार' खरीदा है। इससे चीजों को और अधिक जटिल बना दिया जाता है, क्योंकि हमें यह जानने के बिना 3 अलग-अलग सेवाओं से परिणामों को फ़िल्टर करने की आवश्यकता होती है कि प्रत्येक सेवा कितनी नतीजे वापस आ रही है।
एक प्रदर्शन परिप्रेक्ष्य से, परिणामों को कम करने के लिए बार-बार सेवाओं की पूछताछ करना महंगा होगा, इसलिए मैं बेहतर समाधान खोज रहा हूं। हालांकि, मुझे इस समस्या के ठोस समाधान नहीं मिल रहे हैं (या कम से कम एक "सर्वोत्तम अभ्यास")। एक मोनोलिथिक एप्लिकेशन में, हम बस अलग-अलग तालिकाओं में SQL जोड़ों का उपयोग करेंगे। मुझे परेशानी का एक टन मिल रहा है यह पता लगाने के लिए कि कैसे/अगर सेवाओं में कुछ समान संभव है।
समुदाय से मेरा प्रश्न है: आपका दृष्टिकोण क्या होगा? हालात मैं माना जाता है:
- (Elasticsearch, Solr) है कि सभी सेवाओं के लिए सभी डेटा शामिल हैं (घटनाओं के माध्यम से अद्यतन सेवाओं द्वारा बाहर धक्का दे दिया) खोज अनुक्रमणिका के कुछ प्रकार का उपयोग करना, और फिर खोज अनुक्रमणिका से क्वेरी परिणामों के लिए।
- जैसे ग्राफिकल और नियो 4j इन समस्याओं के साथ हमारी सहायता कर सकते हैं, यह समझने का प्रयास कर रहे हैं।
क्रिस रिचर्डसन के पास सेवाओं के बीच डाटाबेस प्रति सेवा कविता साझा डेटाबेस पर कुछ अंतर्दृष्टि है: http://microservices.io/patterns/data/database-per-service.html –