2015-10-16 22 views
7

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

मेरा प्रश्न है,

  1. किसी को भी कैसे भाग मार्ग अनुरोध एपीआई गेटवे में किया जाता है के बारे में पता है?
  2. कि सरल द्वारा किया जा सकता है अगर हालत [छद्म कोड: अगर (कीवर्ड == "उत्पाद") तो मार्ग ("उत्पाद सेवा")]?
  3. या क्या यह करने का कोई बेहतर तरीका है?

मैं सी # का उपयोग कर रहा हूं। एपी विकसित करने के लिए।
मैं https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

Api Gateway

+1

एपीआई गेटवे एक सुरक्षित प्रॉक्सी + लॉगिंग की तरह कार्य करता है। आप अपनी 'उत्पाद' सेवा पर यूआरएल पास कर सकते हैं जिसे आप एक्सेस करना चाहते हैं और गेटवे इसे प्रॉक्सी करेगा। – sed

उत्तर

9

से एपीआई गेटवे के बारे में कुछ जानकारी मिल आप काफी तीन सवाल पूछा और वे सब कुछ हद तक संबंधित होंगे तो मैं सभी तीन एक साथ संबोधित करने के लिए पूरी कोशिश करेंगे।

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

एक ई-कॉमर्स एप्लिकेशन जैसे एक छोटे से उदाहरण लेते हैं जिसमें उत्पादों को सूचीबद्ध करने, उत्पादों की खोज करने और शॉपिंग कार्ट के लिए एक सेवा शामिल है। एपीआई गेटवे के पास भी वही अंतराल होंगे और अनुरोध के लिए उत्तरदायी सेवा के लिए अनुरोध को आगे भेज देंगे। इस उदाहरण में एपीआई में उत्पादों को खोजने के लिए सभी उत्पादों, /products?query=..., और अंत में /carts/:id/products को शॉपिंग कार्ट में उत्पादों की सूची के लिए /products हो सकता है। उम्मीद है कि यह आपके प्रश्न का उत्तर देगा।

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

+0

यह कुछ विचार देता है। धन्यवाद! –

1

अपने आर्किटेक्चर के आधार पर, आप कोरओस (https://github.com/weaveworks/weave) के साथ वीव जैसे कुछ वास्तव में अच्छे सॉफ़्टवेयर का उपयोग कर सकते हैं। हम अपने अनुप्रयोगों को कोरोस नोड्स पर वितरित करने के लिए डॉकर का उपयोग कर रहे हैं, और फिर आंतरिक DNS को वेव द्वारा नियंत्रित किया जाता है।

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

उदाहरण के लिए, एक उपयोगकर्ता अनुरोधों

हमारा प्रवेश द्वार नोड के साथ लागू किया गया था application.com/api/apiName/request/path।जेएस, और यह apiName के बाद/api को उस एपीआई पर रूट करने के लिए ले जाता है, और फिर यूआरएल के निम्नलिखित पथ को कॉल में जोड़ने के लिए।

तो गेटवे से अनुरोध को आंतरिक रूप से apiName: 8080/अनुरोध/पथ के रूप में प्रॉक्सी किया जाएगा। उस संबंध में, एपीआई को नई सेवाओं के आने पर कोई बदलाव की आवश्यकता नहीं होती है, क्योंकि पथ आपके अनुरोध से गतिशील रूप से बनाया जाता है।

यह बहुत अच्छा है क्योंकि हमें अलग-अलग एपीआई के पथों को ट्रैक करने और कहीं उन्हें संग्रहीत करने की चिंता करने की आवश्यकता नहीं है।

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

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

संबंधित मुद्दे