ईएसबी क्या है और यह किसके लिए अच्छा है?


88

पिछली नौकरी में, "एंटरप्राइज सर्विस बस" (ESB) के बारे में बहुत सी बातें थीं। मैंने इसके बारे में एक वैचारिक पुस्तक के कुछ हिस्सों को पढ़ा, लेकिन कभी भी यह नहीं समझा कि आप इसे ठोस रूप में कैसे लागू / एकीकृत करेंगे। मैं SOA / कतारबद्ध / निर्देशिका सेवाओं / आदि से परिचित हूं। लेकिन मुझे समझ नहीं आ रहा है कि वास्तव में ESB क्या है।

क्या यह एक ठोस बात है (सेवा / सर्वर / ब्रोकर / आदि।) कि आप अपने सभी ऐप को अलग-अलग तरीकों से हुक करते हैं, या यह सिर्फ सिस्टम को डिजाइन करने का एक वैचारिक तरीका है?

किसी भी स्पष्टीकरण या अच्छे उदाहरणों के लिंक की बहुत सराहना की जाएगी। धन्यवाद।


4
यदि आप मार्टिन फाउलर से पूछते हैं, तो वह आपको बताएगा कि इसका अर्थ एग्रीगियस स्पेगेटी बॉक्स है।
एनाटिक्लस

आप ESB पर जानकारी यहाँ भी प्राप्त कर सकते हैं: wso2.com/library/articles/2017/07/what-is-wso2-esb हालांकि यह विशेष रूप से wso2 esb के बारे में बोलता है।
रियाफा अब्दुल हमीद

जवाबों:


53

यह अमूर्तता की एक उच्च स्तरीय अवधारणा है। केंद्रीय अवधारणा यह है कि ईएसबी मिडलवेयर और इंटरफेस प्रदान करता है जो व्यवसायों को कोड लिखे बिना उनके अनुप्रयोगों को जोड़ने की अनुमति देता है।

इसमें असंगत प्रोटोकॉल, डेटा और इंटरैक्शन को सामंजस्य करने के लिए मध्यस्थता शामिल हो सकती है।

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

वास्तविक कार्यान्वयन

जहां तक ​​वास्तविक कार्यान्वयन की बात है, यह बहुत बड़े उद्यम समर्थन व्यवसायों का डोमेन है। हालांकि यह बहुत ही गूढ़ है, लक्ष्य एक आदर्श है जिसे कुछ छोटे स्तर पर इंटरनेट के साथ तुलना के माध्यम से समझा जा सकता है:

इंटरनेट से समानता

व्यापक रूप से अलग-अलग उपयोगों और डेटा के साथ एक बड़ी संचार बस, लेकिन सभी चल रहे मानकीकृत प्रोटोकॉल।

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

Mashups

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

सभी पूरी तरह से अलग-अलग सेवाएं, स्वयं द्वारा असंगत, लेकिन मानक कनेक्टर (उदाहरण के लिए याहू पाइप) का उपयोग करके, उन्हें एक साथ मिलकर एक उपयोगी और उपयोगी बनाया जा सकता है।

-Adam


45

अस्वीकरण: मैं आईबीएम के लिए काम करता हूं और वेबस्फेयर ईएसबी पर परामर्श करता हूं, एक आईबीएम उत्पाद जिसे ईएसबी के साथ बनाया गया है। निम्नलिखित मेरी राय हैं और जरूरी नहीं कि आईबीएम की स्थिति को प्रतिबिंबित करे।

एक ESB अलग-अलग लोगों के लिए अलग-अलग चीजें हैं, दुर्भाग्य से।

मेरे लिए, एक ईएसबी एक ऐसी तकनीक है जिसे आप SOA (सर्विस-ओरिएंटेड आर्किटेक्चर) में सम्मिलित कर सकते हैं, जिससे आप असमान प्रणालियों को एक साथ जोड़ सकते हैं। यह अक्सर प्रोटोकॉल परिवर्तन, संदेश संशोधन, मार्ग, लॉगिंग, एक सुरक्षा प्रवेश द्वार के रूप में कार्य करता है, और इसी तरह के कार्य करता है। उदाहरण के लिए, आप एक JMS- आधारित सेवा के रूप में एक वेब सेवा के रूप में पहले से ही उपलब्ध सेवा को उजागर करने के लिए ESB का उपयोग कर सकते हैं।

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



37

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

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

IMHO के लिए विशिष्ट इंटरफेस की एक छोटी संख्या का उपयोग करना बेहतर है, आमतौर पर केवल उन्हीं प्रणालियों के बीच वेब सेवाओं का उपयोग करना चाहिए जिनकी इसे आवश्यकता है।


1
मैं "ओवरब्लाउन और महंगी तकनीक" भाग से सहमत हूं। हालाँकि, आपको अभी भी व्यक्तिगत वेब सेवाओं को एक साथ "गोंद" करने के लिए कुछ चाहिए। यह हो सकता है: नई वेब सेवा (शायद सबसे कठोर), ईएसबी पर बीपीईएल - एक बड़ा बुनियादी ढांचा लेकिन कम कठोर, या मैशप सर्वर जैसे कुछ अधिक चुस्त और लचीला। ये ऐप डेवलपमेंट के लिए अच्छा फुर्तीला विकल्प हैं जो इतना समारोह (मॉडलिंग आदि) नहीं करते हैं
Dan

मैशअप दृष्टिकोण वह है जो मुझे सबसे अच्छा लगता है - हम 'अखंड' HTML + JS वेब पेज बनाते थे, अब हम विभिन्न विभिन्न ब्राउज़रों / उपकरणों पर लक्षित सभी प्रकार की सामग्री के मैशअप बनाते हैं। एप्लिकेशन डिज़ाइन उसी तरह जाएगा।
MrTelly

3
BTW तुम शायद मेरे जवाब में थोड़ा विक्रेता थकान का पता लगा सकते हैं - नए ने इतने सारे भुगतान किए हैं इतने कम के लिए इतने सारे।
MrTelly

आप यह कहने में विफल रहे कि ईएसबी क्या है, इसके बजाय आप इस वास्तु पैटर्न को
खत्म

1
".... ईएसबी नई प्रणालियों और विरासत को जोड़ देगा, संदेश बस के ऊपर उड़ जाएंगे और सब कुछ सहज रूप से बात करने में सक्षम होंगे। कुछ लचीलापन, ऑर्केस्ट्रेशन में फेंक दें और आपके पास एंटरप्राइज़ एप्लिकेशन सॉफ़्टवेयर का एक बहुत शक्तिशाली टुकड़ा है। ... "- मैंने सोचा कि यह ठीक है?
MrTelly

12

यह मूल रूप से एक प्रणाली को डिजाइन करने का एक वैचारिक तरीका है - सॉफ्टवेयर कंपनियां आपको उस पर 'ईएसबी' स्टीकर चिपकाकर अधिक बेचने की कोशिश करती हैं और प्रबंधकों को पसंद आती हैं क्योंकि एक ईएसबी एक 'उच्च-स्तर' से अच्छा दिखता है।

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

उदाहरण: मान लीजिए कि आप एप्लिकेशन A को एक मानक संदेश उन्मुख मिडलवेयर में एप्लिकेशन B के साथ कनेक्ट करना चाहते हैं, आइए JMS लें। आप आवेदन बी पर काम कर रहे अपने सहयोगियों से बात करते हैं, किसी विषय, संदेश के प्रकार और क्षेत्रों पर सहमत होते हैं और इसे भेजते हैं (छद्म कोड): sendJms ("TRADE.MSFT", {MapMessage व्यापारी = "पीट" मूल्य = 101% वॉल्यूम = 100})

यदि आप एक सेवा उन्मुख वास्तुकला में एक ही काम करते हैं, तो आपको इसकी आवश्यकता है

  1. एडिटाइनल सॉफ़्टवेयर स्थापित करें
  2. बहुत सी नई अवधारणाएँ सीखते हैं
  3. ईएसबी के एडमिन गुई में अपने नए जावा घटक को परिभाषित करें
  4. ईएसबी द्वारा नियंत्रित कुछ इंटरफेस लागू करें
  5. sendJms (getDestination (), {MapMessage व्यापारी = "पीट" मूल्य = 101.4 वॉल्यूम = 100}) - ध्यान दें कि गंतव्य ईएसबी से इंजेक्ट किया गया है।

पहली बार यह शायद थोड़ा दर्दनाक है, लेकिन मुझे लगता है कि आप इसकी आदत डाल सकते हैं, ठीक उसी तरह जैसे आप EJB-;

आप कह सकते हैं कि एक MOM प्रणाली 'अनपेड' (गतिशील संरचना) है जबकि एक ESB 'टाइप' (स्थिर संरचना) है। कच्चे मैसेजिंग बनाम ईएसबी के व्यापार-बंद अन्य अप्रकाशित / टाइप किए गए विकल्पों के समान हैं:

  • बाकी बनाम साबुन
  • बिना एक्सएमएल बनाम एक्सएमएल के साथ सत्यापित एक्सएमएल बनाम एक्सएमएल
  • ग्रूवी बनाम जावा
  • व्याख्या की गई भाषा बनाम संकलित भाषा

छोटी परियोजनाओं के लिए यह कार्यक्षमता को जल्दी से ठीक करने के लिए अच्छा है (जैसे ग्रूवी कोड) लेकिन बड़ी परियोजनाओं के लिए डिबगर (जैसे जावा) के लिए अच्छा है, अग्रिम में चेतावनी दी जाए जब चीजें टूट जाती हैं और लोगों के लिए एक मानक होने से पहले वे प्रतिबद्ध होते हैं। परियोजना।

इसलिए यदि आपका प्रोजेक्ट बहुत अधिक लोगों से ग्रस्त है, जो कि असमान परिवर्तनों में जाँच करके सिस्टम को तोड़ रहा है - अधिक संरचना (MOM के बजाय ESB) की ओर बढ़ें। यदि आपकी परियोजनाएं समय पर पर्याप्त काम नहीं कर पाती हैं - तो सरल, अप्रयुक्त समाधान चुनें। यदि यह दोनों है - एक सलाहकार प्राप्त करें (बस मजाक कर रहे हैं ;-)


4

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

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

मुझे लगता है कि मैं जितना स्पष्ट हो सकता हूं ... आशा है कि मदद करता है।


3

मेरी प्रस्तुति " च्वाइस फॉर स्पोइल्ड - सही ईएसबी कैसे चुनें " पर एक नज़र डालें ।

मैं समझाता हूं कि कब ईएसबी, इंटीग्रेशन सूट या सिर्फ इंटीग्रेशन फ्रेमवर्क (जैसे अपाचे कैमल) का उपयोग करना है। मैं खुले स्रोत और मालिकाना ईएसबी के बीच अंतर पर भी चर्चा करता हूं।


2

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

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

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