एक माइक्रोसैस आर्किटेक्चर में बड़ी फाइल / डाटा ट्रांसफर


22

मेरी कंपनी वर्तमान में एक microservice वास्तुकला को अपनाने पर काम कर रही है, लेकिन हम रास्ते में कुछ बढ़ते दर्द (सदमे!) का सामना कर रहे हैं। प्रमुख विवाद बिंदुओं में से एक है कि हम अपनी विभिन्न सेवाओं के बीच बड़ी मात्रा में डेटा का संचार कैसे करें।

पृष्ठभूमि के एक बिट के रूप में हमारे पास एक दस्तावेज स्टोर है जो किसी भी दस्तावेज के लिए भंडार के रूप में कार्य करता है जिसे हमें कंपनी भर में संभालना पड़ सकता है। कहा दुकान के साथ बातचीत एक सेवा के माध्यम से की जाती है जो एक ग्राहक को एक अद्वितीय आईडी और दस्तावेज़ को स्ट्रीम करने के लिए एक स्थान प्रदान करती है। दस्तावेज़ का स्थान बाद में प्रदान की गई आईडी के साथ एक खोज के माध्यम से पहुँचा जा सकता है।

समस्या यह है कि - क्या यह हमारे सभी माइक्रोसर्विसेस के लिए इस विशिष्ट आईडी को उनके एपीआई के हिस्से के रूप में दस्तावेजों के साथ बातचीत के प्रयोजनों के लिए स्वीकार करने के लिए समझ में आता है या नहीं? मेरे लिए यह स्वाभाविक रूप से गलत लगता है - सेवाएं अब स्वतंत्र नहीं हैं और दस्तावेज़ स्टोर की सेवा पर निर्भर हैं। हालांकि मैं यह स्वीकार करता हूं कि यह एपीआई डिज़ाइन को सरल बना सकता है और शायद कुछ प्रदर्शनों के परिणामस्वरूप लाभ को असंतुलित करने से अधिक युग्मन प्राप्त होता है।

क्या किसी को पता है कि इंद्रधनुष यूनिकॉर्न (नेटफ्लिक्स, अमेज़ॅन, Google, आदि) अपनी सेवाओं के बीच बड़ी फ़ाइलों / डेटा एक्सचेंज को कैसे संभालता है?


अत्यधिक उपलब्ध दस्तावेज़ / फ़ाइल स्टोर के लिए आप क्या उपयोग कर रहे हैं?
टेरेंस जॉनसन

@TerenceJohnson हम अभी के लिए एक घर में विकसित समाधान का उपयोग कर रहे हैं। हम एक समाधान की ओर पलायन कर रहे हैं, जो एक Restful Api का लाभ उठाता है जो केवल एक अद्वितीय दस्तावेज़ आईडी और उसके स्थान को बनाए रखता है (जो क्लाइंट को अनावश्यक आंतरिक नेटवर्क बोझ को रोकने के लिए एक धारा के बजाय प्रदान किया जाता है)। वास्तविक दृढ़ता AWS के माध्यम से किया जाएगा।
प्रीमियमटीयर

जवाबों:


7

क्या किसी को पता है कि इंद्रधनुष यूनिकॉर्न (नेटफ्लिक्स, अमेज़ॅन, Google, आदि) अपनी सेवाओं के बीच बड़ी फ़ाइलों / डेटा एक्सचेंज को कैसे संभालता है?

दुर्भाग्य से मुझे नहीं पता कि वे इस तरह की समस्याओं से कैसे निपटते हैं।

समस्या यह है कि - क्या यह हमारे सभी माइक्रोसर्विसेस के लिए इस विशिष्ट आईडी को उनके एपीआई के हिस्से के रूप में दस्तावेजों के साथ बातचीत के प्रयोजनों के लिए स्वीकार करने के लिए समझ में आता है या नहीं?

यह एकल जिम्मेदारी सिद्धांत का उल्लंघन करता है, जो स्वाभाविक रूप से आपके माइक्रो सर्विस की वास्तुकला में होना चाहिए। एक microservice - तार्किक रूप से एक, शारीरिक रूप से एक का प्रतिनिधित्व करने वाले कई उदाहरण - एक विषय के साथ काम करना चाहिए ।

आपके दस्तावेज़ स्टोर के मामले में, आपके पास एक बिंदु है, जहाँ दस्तावेज़ों के सभी प्रश्न चलते हैं (बेशक आप इस तार्किक इकाई को कई दस्तावेज़ दस्तावेज़ों में कई प्रकार के दस्तावेज़ों में विभाजित कर सकते हैं)।

  • यदि आपके "एप्लिकेशन" को किसी दस्तावेज़ पर काम करने की आवश्यकता है, तो यह संबंधित माइक्रोसर्विस से पूछता है और इसके परिणाम को संसाधित करता है।

  • यदि किसी अन्य सेवा को किसी वास्तविक दस्तावेज़ या उसके कुछ हिस्सों की आवश्यकता है, तो उसे दस्तावेज़ सेवा से पूछना होगा।

प्रमुख विवाद बिंदुओं में से एक है कि हम अपनी विभिन्न सेवाओं के बीच बड़ी मात्रा में डेटा का संचार कैसे करें।

यह एक वास्तु समस्या है:

  1. बड़ी मात्रा में डेटा स्थानांतरित करने की आवश्यकता कम करें

    आदर्श रूप से, प्रत्येक सेवा में सभी डेटा होते हैं और केवल अनुरोधों को पूरा करने के लिए स्थानांतरण की आवश्यकता नहीं होती है। इस विचार के विस्तार के रूप में - यदि आपको डेटा स्थानांतरित करने की आवश्यकता है, तो अतिरेक के बारे में सोचें (* सकारात्मक तरीके से_): क्या यह कई स्थानों (जहां उन्हें आवश्यकता होती है) में डेटा को निरर्थक होने का अर्थ है? सोचें कि संभव असंगतता आपकी प्रक्रियाओं को कैसे नुकसान पहुंचा सकती है। वास्तव में कोई नहीं के रूप में तेजी से कोई हस्तांतरण नहीं है

  2. डेटा का आकार स्वयं घटाएं

    सोचें कि आप अपने डेटा को कैसे संपीड़ित कर सकते हैं : वास्तविक संपीड़न से शुरू होकर स्मार्ट डेटा संरचनाओं तक । तार पर जितना कम होता है, आप उतने तेज़ होते हैं।


2

यदि आपके दस्तावेज़ स्टोर द्वारा लौटी आईडी पूरे सिस्टम में दस्तावेज़ों को संदर्भित करने का तरीका है, तो सभी सेवाओं के लिए यह स्वीकार करना आवश्यक है कि उनके एपीआई पर उस 'दस्तावेज़ आईडी' को जब सेवा को यह पता होना चाहिए कि उसे किस दस्तावेज़ के साथ काम करना है।

यह आवश्यक रूप से सेवाओं के बीच एक सख्त युग्मन नहीं बनाता है। दस्तावेज़ों को एक्सेस करने की आवश्यकता वाली सेवाओं को वैसे भी दस्तावेज़-स्टोर सेवा तक पहुंचने की आवश्यकता होती है और उन्हें उस आईडी की आवश्यकता होती है जो उस स्टोर को बताती है कि किस दस्तावेज़ को एक्सेस करना है।
ऐसी सेवाएँ जो सीधे दस्तावेज़ों तक नहीं पहुँचती हैं, उन्हें दस्तावेज़ ID पास करने की आवश्यकता हो सकती है, लेकिन उन सेवाओं के लिए यह सिर्फ एक मनमाना स्ट्रिंग होगा जो निर्भरता पैदा नहीं करता है।


आपके जवाब के लिए धन्यवाद। मुझे यह जोड़ना चाहिए कि हम बाहरी उपभोक्ताओं के लिए अपने माइक्रोसर्विसेज को उजागर करने से संभावित रूप से लाभान्वित हो सकते हैं जो हमारे आंतरिक दस्तावेज़ स्टोर का लाभ नहीं उठाना चाहते हैं। उस के साथ मन में आप अभी भी लगता है कि यह सबसे अच्छा तरीका है?
प्रीमियमटीयर

@PremiumTier: हाँ। लेकिन उन बाहरी ग्राहकों को अपना स्वयं का स्टोर प्रदान करना होगा जो आपके आंतरिक स्टोर के समान एपीआई का समर्थन करता है, ताकि आपकी सेवाएं इसमें सहयोग कर सकें।
बार्ट वैन इनगेन शेनॉ

यह समझ में आता है, लेकिन यह अभी भी सेवाओं के संदर्भों के बजाय धाराओं, बाइट सरणियों या जोंस ब्लॉब्स को स्वीकार करने की तुलना में अधिक बोझिल लगता है। उस स्थिति में 'एडेप्टर' सेवा आसानी से मंगाई जा सकती है ताकि यदि बाद में किसी भी सेवा को कॉल करने से पहले जरूरत हो तो फाइल स्ट्रीम प्राप्त कर सके। मैं इस तरह से तर्कपूर्ण होने की कोशिश नहीं कर रहा हूं, बल्कि इस दृष्टिकोण के गुणों को समझने की कोशिश कर रहा
हूं

2

व्यक्तिगत रूप से, मैं एक अलग दस्तावेज़ स्टोर सेवा और दस्तावेज़ आईडी का उपयोग नहीं करूंगा, लेकिन दस्तावेज़ों तक पहुंचने के लिए एक URL (उचित हेडर प्रमाणीकरण के साथ)। इस दृष्टिकोण के साथ आपको दस्तावेज़ सेवा पर भरोसा करने के लिए अन्य सेवाओं की आवश्यकता नहीं होगी बल्कि यह दस्तावेज़ तक पहुँचने के लिए पूर्ण URL का उपयोग कर सकती है। और यह भी समझ में आता है जब यह स्केलिंग की बात आती है, तो आप कई दस्तावेज़ स्टोर का उपयोग कर सकते हैं और जब संग्रहण बढ़ता है और URL प्रदान करता है।

हालाँकि आपको दस्तावेज़ अपलोड करने और इसे प्राप्त करने के लिए एक सेवा की आवश्यकता हो सकती है।


1

क्या किसी को पता है कि इंद्रधनुष यूनिकॉर्न (नेटफ्लिक्स, अमेज़ॅन, Google, आदि) अपनी सेवाओं के बीच बड़ी फ़ाइलों / डेटा एक्सचेंज को कैसे संभालता है?

चेकआउट Amazon S3 REST API स्पेक्स, प्रतीत होता है कि वे बाइट्स में पूरी वस्तु वापस करते हैं। यदि आप एक microservice डिजाइन कर रहे हैं नहीं कई विकल्प लगता है। अमेज़न S3 प्रतिक्रिया स्वरूप लिंक

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.