माइक्रोसर्विस सिस्टम आर्किटेक्चर नेटवर्क बाधाओं से कैसे बचते हैं?


72

मैं सर्वर अनुप्रयोगों के लिए माइक्रोसॉर्फ़ आर्किटेक्चर के बारे में बहुत कुछ पढ़ रहा हूं, और सोच रहा था कि एक अखंड वास्तुकला की तुलना में आंतरिक नेटवर्क का उपयोग एक अड़चन या एक महत्वपूर्ण नुकसान कैसे नहीं है।

सटीकता के लिए, यहाँ दो शब्दों की मेरी व्याख्या है:

  1. मोनोलिथ वास्तुकला: एकल भाषा में एक एप्लिकेशन जो सभी कार्यक्षमता, डेटा, आदि को संभालती है। एक लोड बैलेंसर कई मशीनों में अंतिम उपयोगकर्ता से अनुरोध वितरित करता है, प्रत्येक हमारे आवेदन का एक उदाहरण है।

  2. माइक्रोसैस्टवर्क आर्किटेक्चर: कार्यक्षमता और डेटा के एक छोटे हिस्से को संभालने वाले कई एप्लिकेशन (माइक्रोसर्विसेज)। प्रत्येक माइक्रोसर्विस एक सामान्य एपीआई को उजागर करता है जिसे नेटवर्क के माध्यम से एक्सेस किया जाता है (जैसा कि अंतर-प्रक्रिया संचार या एक ही मशीन पर साझा की गई मेमोरी के विपरीत)। एपीआई कॉल ज्यादातर सर्वर पर एक पेज बनाने के लिए स्टिच किया जाता है, हालांकि शायद इस काम में से कुछ क्लाइंट द्वारा अलग-अलग माइक्रोसॉफ़्ट को क्वेरी करते हैं।

मेरी भोली कल्पना करने के लिए, ऐसा लगता है कि एक माइक्रोसरकारी आर्किटेक्चर धीमी नेटवर्क ट्रैफ़िक का उपयोग उसी मशीन (मेमोरी और डिस्क) पर तेज़ संसाधनों के विपरीत करता है। यह कैसे सुनिश्चित करता है कि आंतरिक नेटवर्क के माध्यम से एपीआई की क्वेरी समग्र प्रतिक्रिया समय को धीमा नहीं करेगी?


आंतरिक नेटवर्क अक्सर 1 Gbps होता है, कभी-कभी तेज होता है। एक एपीआई से JSON प्रतिक्रिया के औसत आकार के बारे में सोचें। एक सेकंड में 1 Gbps कनेक्शन पर ऐसी कितनी प्रतिक्रियाएँ प्रसारित हो सकती हैं?
आर्सेनी मूरज़ेंको

3
अगर आपको लगता है कि आपको माइक्रोसेवा की आवश्यकता है - और आप कर सकते हैं! - दो बेहतरीन पुस्तकें प्रस्तुत करने के लिए: amazon.com/Building-Microservices-Sam-Newman/dp/1491950358 और amazon.com/Release-It-Product-Ready-Pragyatic-Programmers/dp/…
Steven A. Lowe

@ मेनमा समस्या बैंडविड्थ में नहीं है, लेकिन देरी में है। और अगर आपको राउंडट्रिप की जरूरत है, तो आपको आश्चर्य होगा कि आप कितनी वास्तविक बैंडविड्थ का उपयोग कर सकते हैं
Stephan Eggermont

जवाबों:


61

आंतरिक नेटवर्क अक्सर 1 Gbps कनेक्शन, या तेज का उपयोग करते हैं। ऑप्टिकल फाइबर कनेक्शन या बॉन्डिंग सर्वरों के बीच अधिक उच्च बैंडविंड की अनुमति देते हैं। अब एक एपीआई से JSON प्रतिक्रिया के औसत आकार की कल्पना करें। एक सेकंड में 1 Gbps कनेक्शन पर इस तरह की प्रतिक्रियाओं को कितना प्रसारित किया जा सकता है?

चलो वास्तव में गणित करते हैं। 1 जीबीपीएस 131 072 केबी प्रति सेकंड है। यदि एक औसत JSON प्रतिक्रिया 5 KB (जो कि बहुत अधिक है!), तो आप तार के माध्यम से प्रति सेकंड 26 जोड़ी प्रतिक्रियाएं भेज सकते हैं बस एक जोड़ी मशीनों के साथ । इतना बुरा नहीं है, है ना?

यही कारण है कि नेटवर्क कनेक्शन आमतौर पर अड़चन नहीं है।

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

यह तब होता है जब हमारे पहले 26 264 प्रति सेकंड प्रतिक्रियाएं ऐप के पैमाने के लिए बहुत छोटी हो जाती हैं। आप अन्य नौ जोड़े जोड़ते हैं, और आप अब 262 140 प्रतिक्रियाएं देने में सक्षम हैं।

लेकिन हम अपने सर्वर की जोड़ी पर वापस आते हैं और कुछ तुलना करते हैं।

  • यदि किसी डेटाबेस के लिए औसत गैर-कैश की गई क्वेरी 10 एमएस लेती है, तो आप प्रति सेकंड 100 प्रश्नों तक सीमित हैं। 100 प्रश्न। 26 214 प्रतिक्रियाएँ। प्रति सेकंड 26 214 प्रतिक्रियाओं की गति को प्राप्त करने के लिए बड़ी मात्रा में कैशिंग और ऑप्टिमाइज़ेशन की आवश्यकता होती है (यदि प्रतिक्रिया वास्तव में कुछ उपयोगी करने की आवश्यकता होती है, जैसे डेटाबेस को क्वेरी करना, "हैलो वर्ल्ड" -स्टाइल प्रतिक्रियाएं योग्य नहीं हैं)।

  • मेरे कंप्यूटर पर, अभी Google के होम पेज के लिए DOMContentLoaded 394 एमएस हुआ। अनुरोध भेजे जाने के बाद। यह प्रति सेकंड 3 अनुरोधों से कम है। प्रोग्रामर के लिए। होम पेज पर, यह 603 एमएस में हुआ। अनुरोध भेजे जाने के बाद। वह प्रति सेकंड 2 अनुरोध भी नहीं है। वैसे, मेरे पास 100 एमबीपीएस इंटरनेट कनेक्शन और एक तेज कंप्यूटर है: कई उपयोगकर्ता लंबे समय तक इंतजार करेंगे।

    यदि सर्वरों के बीच टोंटी नेटवर्क की गति है, तो वे दोनों साइटें पृष्ठ की सेवा करते समय विभिन्न एपीआई के लिए हजारों कॉल कर सकती हैं।

उन दो मामलों से पता चलता है कि नेटवर्क संभवतः सिद्धांत में आपकी अड़चन नहीं होगा (व्यवहार में, आपको किसी विशेष हार्डवेयर पर होस्ट किए गए आपके विशेष सिस्टम की अड़चन का सटीक स्थान निर्धारित करने के लिए वास्तविक बेंचमार्क और प्रोफाइलिंग करना चाहिए )। वास्तविक कार्य करने में लगने वाला समय (क्या यह SQL क्वेरीज़, कम्प्रेशन, जो भी होगा) और अंतिम उपयोगकर्ता को परिणाम भेजने के लिए अधिक महत्वपूर्ण है।

डेटाबेस के बारे में सोचो

आमतौर पर, डेटाबेस का उपयोग करके वेब एप्लिकेशन से अलग से होस्ट किया जाता है। यह एक चिंता पैदा कर सकता है: एप्लिकेशन को होस्ट करने वाले सर्वर और डेटाबेस की मेजबानी करने वाले सर्वर के बीच कनेक्शन की गति के बारे में क्या?

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

जब स्थानांतरण गति वास्तव में मायने रखती है, जब कोई कंपनी NAS पर बड़े डेटा सेट की मेजबानी कर रही है, और NAS एक ही समय में कई ग्राहकों द्वारा एक्सेस किया जाता है। यह वह जगह है जहाँ SAN एक समाधान हो सकता है। यह कहा जा रहा है, यह एकमात्र समाधान नहीं है। कैट 6 केबल 10 जीबीपीएस तक की गति का समर्थन कर सकते हैं; केबल या नेटवर्क एडेप्टर को बदले बिना गति बढ़ाने के लिए भी बॉन्डिंग का उपयोग किया जा सकता है। अन्य समाधान मौजूद हैं, जिसमें कई NAS में डेटा प्रतिकृति शामिल है।

गति के बारे में भूल जाओ; स्केलेबिलिटी के बारे में सोचें

एक वेब ऐप का एक महत्वपूर्ण बिंदु स्केल करने में सक्षम होना है। हालांकि वास्तविक प्रदर्शन मायने रखता है (क्योंकि कोई भी अधिक शक्तिशाली सर्वर के लिए भुगतान नहीं करना चाहता है), स्केलेबिलिटी बहुत अधिक महत्वपूर्ण है, क्योंकि यह आपको जरूरत पड़ने पर अतिरिक्त हार्डवेयर फेंकने देता है।

  • यदि आपके पास विशेष रूप से तेज़ ऐप नहीं है, तो आप पैसे खो देंगे क्योंकि आपको अधिक शक्तिशाली सर्वर की आवश्यकता होगी।

  • यदि आपके पास एक तेज़ ऐप है जो पैमाने पर नहीं आ सकता है, तो आप ग्राहकों को खो देंगे क्योंकि आप बढ़ती मांग का जवाब नहीं दे पाएंगे।

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

इस प्रदर्शन के नुकसान के बावजूद, आभासी वातावरण लचीलेपन के कारण बहुत लोकप्रिय हो गए।

नेटवर्क की गति के साथ, आप पा सकते हैं कि वीएम वास्तविक अड़चन है और आपके वास्तविक पैमाने को देखते हुए, आप वीएम के बिना, सीधे अपने ऐप की मेजबानी करके अरबों डॉलर बचा सकते हैं। लेकिन 99.9% ऐप्स के लिए ऐसा नहीं होता है: उनकी अड़चन कहीं और होती है, और वीएम की वजह से कुछ माइक्रोसेकंड के नुकसान का खामियाजा हार्डवेयर एब्सट्रैक्शन और स्केलेबिलिटी के लाभ से आसानी से चुकाया जा सकता है।


यकीन है, हम कह सकते हैं कि JSON प्रतिक्रियाएं छोटी हैं, लेकिन उनकी मात्रा के बारे में क्या ? मुझे लगता है कि भारी भार के तहत एक वेबसाइट एक microservice वास्तुकला में एक अखंड वास्तुकला (जहां केवल नेटवर्क यातायात / डेटाबेस सर्वर से / के लिए है) की तुलना में अधिक नेटवर्क ट्रैफ़िक होगा। कैशिंग मदद कर सकता है, लेकिन वास्तविक समय और / या गतिशील रूप से उत्पन्न सामग्री के लिए, मुझे नहीं पता कि कैशिंग कितनी दूर जाएगी।
जेम्स मिश्रा

@JamesMishra: मैंने आपकी चिंताओं का समाधान करने के लिए अपना उत्तर संपादित किया।
आर्सेनी मूरज़ेंको

आपका जवाब एकदम सही है । न केवल आपने हर आपत्ति का जवाब दिया, जिसके बारे में मैं सोच सकता था, आपने उन आपत्तियों का जवाब दिया, जिनके बारे में मैंने नहीं सोचा था।
जेम्स मिश्रा

5
वास्तविक दुनिया से मेरे 2 सेंट: एक सिस्टम जो बहुत गंदी microservices से बना है विशुद्ध रूप से एक घुट नेटवर्क के कारण प्रदर्शन के मुद्दों को पीड़ित कर सकते हैं। कैशिंग और एक इवेंट स्ट्रीम आधारित डिजाइन ऐसे मामलों में आपका दोस्त है। नेटवर्क, सीपीयू और मेमोरी के अलावा, एक माइक्रोसैस आधारित प्रणाली को भी इसके डिजाइन में लचीलापन शामिल करने की आवश्यकता होती है: अगर एक माइक्रोसेवा डाउन हो जाए तो क्या होगा? आप रिट्रीट, डिस्ट्रीब्यूटेड ट्रांजेक्शन, सेल्फ हीलिंग, मॉनिटरिंग का निर्माण कैसे करते हैं - मैं सुझाव देता हूं कि आप "माइक्रोसेवा का उपयोग करने के लिए यह लंबा होना चाहिए"
सुधांशु मिश्रा

4
कृपया मुझे सही करें अगर मैं गलत हूं, लेकिन जहां तक ​​मुझे पता है, यदि आपके पास 1 जीबीपीएस नेटवर्क है, तो इसका मतलब है कि आप सैद्धांतिक रूप से उस नेटवर्क के माध्यम से प्रति सेकंड 1 जीबी डेटा भेज सकते हैं। चाहे कनेक्शन की संख्या कितनी भी हो। कनेक्शन की संख्या जितनी अधिक होगी, प्रत्येक कनेक्शन के लिए बैंडविड्थ उतनी ही कम होगी। तो, एक उच्च बैंडविड्थ का समर्थन करने के लिए अपने नेटवर्क को अपग्रेड किए बिना आपकी वास्तविक सीमा 26.214 प्रति सेकंड प्रतिक्रिया होगी। अधिक सर्वर जोड़ने से आपका नेटवर्क बैंडविड्थ नहीं बढ़ेगा। यदि एक एकल क्लस्टर ट्रैफ़िक की मात्रा को थूक सकता है, तो अधिक डेटा उत्पन्न करने वाले अधिक सर्वरों को जोड़ने से आपके नेटवर्क पर भीड़भाड़ होगी।
सेबे

7

मुझे लगता है कि आप 'सूक्ष्म' भाग में बहुत अधिक पढ़ रहे हैं। इसका मतलब यह नहीं है कि हर वर्ग को एक नेटवर्क सेवा से बदल दिया जाए, लेकिन एक मोनोलिथिक एप्लिकेशन को समझदारी से आकार के घटकों में विभाजित करें, प्रत्येक आपके प्रोग्राम के एक पहलू से निपटता है। सेवाएं एक-दूसरे से बात नहीं करेंगी, इसलिए सबसे खराब स्थिति में आपने बड़े नेटवर्क अनुरोध को कई छोटे लोगों में विभाजित किया है। लौटाया गया डेटा आपके द्वारा प्राप्त किसी भी चीज़ से बहुत भिन्न नहीं होगा (हालाँकि आप अधिक डेटा लौटा सकते हैं और क्लाइंट में समेकित कर सकते हैं)


3
"सेवाएं एक दूसरे से बात नहीं करेंगी।" मैं कल्पना करता हूं कि माइक्रोसॉर्फ़िस ने साझा निर्भरता (प्रमाणीकरण, शायद?) को साझा किया हो सकता है कि कोई अन्य माइक्रो-सर्विस में अलग हो सकता है। LDAP, एक अर्थ में, एक प्रमाणीकरण microservice है और मैं कल्पना करता हूं कि अन्य सभी माइक्रोसर्विसेज इस पर बात करते हैं। या ... क्या प्रमाणीकरण केवल एक बार होता है? डायरेक्ट ऑब्जेक्ट एक्सेस अटैक को रोकने के लिए प्रत्येक माइक्रोसेवा प्रमाणीकरण के खिलाफ अनुमतियों की जांच कैसे करता है?
जेम्स मिश्रा

2
@JamesMishra अच्छी तरह से .. यह निर्भर करता है। जब मैंने आखिरी बार माइक्रोसिस्टवर्क आर्किटेक्चर का उपयोग किया था, तो प्रत्येक सेवा सुरक्षा उद्देश्यों के लिए दूसरों से पूरी तरह से स्वतंत्र थी (लेकिन कॉर्पोरेट साइलो कारणों से भी)। प्रत्येक को अलग-अलग तरीके से नियंत्रित किया गया था, हालांकि एक वास्तुकला नीति द्वारा नियंत्रित किया गया था। फिर भी, ऐसा कोई कारण नहीं है कि वे उदाहरण के लिए सामान्य से बात नहीं कर सकते हैं, या बस एक पुस्तकालय के आधार पर स्थित है। लेकिन .. मैं यह कहने की कोशिश कर रहा था कि उन्हें आपस में बहुत सारी कॉल पास नहीं करनी चाहिए, यह नहीं कि वे खुद को क्लाइंट के रूप में सेवाओं का उपभोग न करें।
gbjbaanb

@JamesMishra, इन वातावरणों में अक्सर ओर्ट्स खुद की सेवा है, और इसलिए प्रत्येक सेवा को केवल एक पूर्ण कार्यान्वयन करने के बजाय इसका उपयोग करना चाहिए।
पॉल

2

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


यह समझाने के लिए एक उदाहरण कि मैं क्या मानता हूं कि @mortalapeman का अर्थ है: आपके पास एक java / c # इंटरफ़ेस IProductAvailibitiy है जहाँ सभी IProductAvailibitiy उपभोक्ताओं के विरुद्ध लिंक किए गए हैं। एक वर्ग ProductAvailibitiyImpl भी है जो इस इंटरफ़ेस को लागू करता है और ProductAvailibitiyMicroservice जो ProductAvailibitiyImpl का उपयोग करता है। उपभोक्ताओं को या तो एक स्थानीय ProductAvailibitiyImpl या ProductAvailibitiyMicroservice को एक दूरस्थ प्रॉक्सी का उपयोग करने के लिए कॉन्फ़िगर किया जा सकता है
3 बी

2

मैं एक अलग उद्योग से बहुत अलग मान्यताओं के साथ एक अलग परिप्रेक्ष्य जोड़ना चाहता हूं - वितरित (इकाई-स्तर) सिमुलेशन। वैचारिक रूप से, यह वितरित FPS वीडियो गेम की तरह है। मुख्य अंतर: सभी खिलाड़ी कुछ राज्य साझा करते हैं: जहां अभी ड्रैगन है; कोई डेटाबेस कॉल नहीं; सब कुछ रैम में गति और कम विलंबता के लिए आयोजित किया जाता है, थ्रूपुट कम प्रासंगिक है (लेकिन मुझे लगता है कि आप इसे पूरी तरह से अनदेखा नहीं कर सकते हैं)।

आप प्रत्येक प्रतिभागी आवेदन के बारे में सोच सकते थे या तो एक मोनोलिथ (जो किसी खिलाड़ी के सभी पहलुओं का प्रतिनिधित्व करता है), या माइक्रोसेवर के रूप में (जो कि भीड़ में सिर्फ एक खिलाड़ी का प्रतिनिधित्व करता है)।

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

समस्या कॉल भेजने और अनुरोधों की प्रतीक्षा करने की विलंबता है। बैंडविड्थ अप्रासंगिक और बहुतायत से है, जैसा कि दूसरों ने बताया है। लेकिन अगर एक लाइन-ऑफ़-विज़न कम्प्यूटेशन 1 microsec से 100 microsec (सभी खिलाड़ियों के अनुप्रयोगों के बीच साझा किए गए नए microservice में कतार के कारण) जाता है, तो यह एक बहुत बड़ा नुकसान है (इसके लिए कई या कई लाइन-ऑफ़-विज़न गणना की आवश्यकता हो सकती है प्रत्येक अपडेट, कई अपडेट / सेकंड)।

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

इसलिए उच्च आवृत्ति पर बढ़िया अनाज पर एक सेवा का अनुरोध करने के बजाय, आवृत्ति को कम करने का प्रयास करें:

  1. कौन से डेटा का अनुरोध किया जाता है और स्थानीय गणनाओं का उपयोग करना
  2. एक अतुल्यकालिक प्रतिक्रिया के लिए क्वेरी या ट्रिगर पैरामीटर भेजना
  3. बैचिंग अनुरोध
  4. अनुरोधों की आशंका और अग्रिम में एक प्रतिक्रिया तैयार करना, अटकलों पर (आलसी मूल्यांकन के विपरीत)
  5. जहाँ भी संभव हो, अन्य माइक्रोसॉर्क्स को कॉल करने वाले माइक्रोसर्विस से बचें; यह समस्या को स्पष्ट करता है। मैं समझता हूं कि यह माइक्रोसेवर्स को बड़ा बनाने के लिए एक प्रोत्साहन है और कुछ हद तक यह बात पराजित करता है, लेकिन माइक्रोसिस्टेंस लेटेंसी के लिए कोई दोस्त नहीं है। हो सकता है कि बस इसे स्वीकार करें और इसे प्राप्त करें।

अब अपने सिस्टम के बारे में अपनी मान्यताओं की जांच करना याद रखें। यदि आप विलंबता की तुलना में थ्रूपुट के साथ अधिक चिंतित हैं, या उनके पास साझा राज्य आदि नहीं हैं, तो हर तरह से, उन माइक्रोसॉर्क्स का उपयोग करें जहां यह समझ में आता है। मैं बस कह रहा हूं कि शायद उनका उपयोग न करें जहां वे समझ में नहीं आते हैं।


1

आपकी भोली कल्पना सही है। और अक्सर ऐसा नहीं होता है। आधुनिक मशीनें तेज हैं। सूक्ष्म सेवा वास्तुकला के मुख्य लाभ विकास और रखरखाव के प्रयास और समय में देखे जाते हैं।

और निश्चित रूप से कोई नियम नहीं है कि आप साझा मेमोरी का उपयोग नहीं कर सकते हैं या यहां तक ​​कि एक निष्पादन में कई सेवाओं को शारीरिक रूप से तैनात नहीं कर सकते हैं। जब तक आप इसे डिज़ाइन करते हैं, तब तक आप उस पर निर्भर नहीं होते हैं।


सीपीयू तेज हैं। याददाश्त तेज होती है। एसएसडी तेज हैं। लेकिन क्या नेटवर्क कार्ड और राउटर और स्विच "तेज" हैं? एक अन्य उत्तर में जोर दिया गया है, लेकिन मुझे यकीन नहीं है।
जेम्स मिश्रा

यह निश्चित रूप से नेटवर्क गति की समस्याओं में चलाने के लिए आसान है। सैन फ्रांसिस्को में एक सेवा, एक और एम्स्टर्डम में चलाएं और सिडनी में उनका उपभोग करें। विलंब कुंजी है, बैंडविड्थ नहीं। तो ऐसा मत करो। और जब तक समझ में आता है तब तक सेवाएं बनाएं
स्टीफन एगरमोंट

1

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

इस अच्छाई को प्राप्त करने का तरीका यह है कि आप पहले अपनी व्यावसायिक क्षमताओं को पहचानें। व्यापार-क्षमता एक विशिष्ट व्यवसाय-जिम्मेदारी है। समग्र व्यापार-मूल्य में कुछ योगदान। इसलिए यहाँ मेरा चरण अनुक्रम है जो मुझे लगता है जब मैं सिस्टम सीमाओं के बारे में सोचता हूं:

  1. उच्च-स्तरीय व्यावसायिक-जिम्मेदारियों की पहचान करें। उनमें से कुछ होंगे। इस सेवा को अपने व्यवसाय-लक्ष्य को प्राप्त करने के लिए आपके संगठन को एक कदम के रूप में चलना चाहिए।
  2. प्रत्येक सेवा के भीतर गहरा काम करें। निम्न स्तर की सेवाओं की पहचान करें जिसमें माता-पिता शामिल हों।
  3. सेवा संचार के बारे में पहले दो बिंदुओं पर विचार करें। उन्हें यह मुख्य रूप से घटनाओं के माध्यम से करना चाहिए, बस एक-दूसरे को उनके व्यापार-प्रक्रिया परिणाम के बारे में सूचित करने के लिए। घटनाओं को डेटा कन्वेयर के रूप में नहीं माना जाना चाहिए।

ध्यान रखें कि व्यवसाय-सेवा में लोग, अनुप्रयोग, व्यवसाय-प्रक्रियाएँ शामिल हैं। आमतौर पर इसका केवल एक हिस्सा तकनीकी प्राधिकरण के रूप में दर्शाया जाता है।

यह थोड़ा सार लग सकता है, इसलिए शायद सेवा सीमाओं की पहचान का एक उदाहरण कुछ रुचि का होगा।


0

वर्तमान उत्तरों में जोड़ने के लिए बस एक और कारक। एक साथ मोटे कणों सेवाओं । आप सभी कॉल से विलंबता से बचना चाहते हैं, इसलिए 10 कॉल करने के बजाय आप एक कॉल करें जिसमें डीटीओ में आवश्यक डेटा के 10 टुकड़े हो जाएं।

और याद रखें कि माइक्रोसोर्सेज उतने सूक्ष्म नहीं हैं जितना लोग सोचते हैं।

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