2017-05-15 53 views
9

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

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

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

क्या कोई भी इसी तरह की दुविधा में आया है? हम में से कोई भी ग्राफक्लुएल के साथ अनुभव नहीं कर रहा है, तो क्या यहां कुछ स्पष्ट समर्थक हैं और यहां पर विचार है कि हम गायब हो सकते हैं?

अग्रिम धन्यवाद!

उत्तर

13

शानदार सवाल! लगता है जैसे आप पूछ रहे हैं कि ग्राफ़क्लुएल और माइक्रोसर्विसेज के लिए अपना आर्किटेक्चर कैसे सेट अप करें, और क्यों।

पृष्ठभूमि

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

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

वास्तुकला

तो वास्तुकला मैं सिफारिश करेंगे एक GraphQL प्रॉक्सी अपने microservices के सामने बैठे है, और अपने GraphQL क्वेरी और उत्परिवर्तन रिसोल्वर में, समारोह है कि आप आवश्यक डेटा पुनः प्राप्त करने की आवश्यकता है के लिए बाहर कॉल ।

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

आप microservice प्रदाताओं के लिए देख रहे हैं सबसे अच्छा जो कि मैंने देखा है AWS Lambda, Webtask, Azure Functions, और Google Cloud Functions हैं। और आप इन microservice कार्यों को प्रबंधित और तैनात करने के तरीके के रूप में Serverless का उपयोग कर सकते हैं।

उदाहरण के लिए:

import request from 'request'; 

// GraphQL resolver to get authors 
const resolverMap = { 
    Query: { 
    author(obj, args, context, info) { 
     // GET request to fetch authors from my microservice 
     return request.get('https://example.com/my-authors-microservice'); 
    }, 
    }, 
}; 

GraphQL सेवा

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

यदि आप क्षेत्र :)

आशा इस मदद करता है में हैं भी एस एफ में Serverless GraphQL Meetup में शामिल होने के लिए स्वतंत्र महसूस!

+0

काफी विस्तृत और स्पष्ट उत्तर के लिए धन्यवाद! – tiansivive

+0

ग्राफक्लुएल और सॉफ़्टवेयर आर्किटेक्चर के बारे में कुछ प्रश्न हैं जो एच 1 खिताब और एकाधिक अनुभागों के उपयोग को आमंत्रित करते हैं। मुझे पता है कि मैंने उस निमंत्रण का उत्तर दिया है :-) –

+0

प्रश्न मैं इसके बारे में बहुत कुछ कर रहा हूं, और जो चीज मुझे आश्चर्य रखती है वह है, अगर हमारे पास ग्राफक्ल के साथ गेटवे के रूप में कार्य करने वाली सेवा है, तो यह इसे नहीं बनायेगा तुल्यकालिक सेवा? या आप कह रहे हैं कि ग्राफक्ल सेवा केवल उन सेवाओं के साथ सिंक्रनाइज़ कनेक्ट होनी चाहिए जो सार्वजनिक हैं? – RicardoDuarte

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