गोलंग, या सिर्फ गो, को गो गोफर भाषा के रूप में जाना जाता है। यदि आप अभी भी नहीं समझ पाए हैं कि गोफर क्यों है, तो आप इस लेख में एक आश्चर्यजनक शुभंकर इतिहास पा सकते हैं। खैर, चलिए इसे शुरू से शुरू करते हैं, गोलांग को सबसे अधिक उत्पादक प्रोग्रामिंग भाषाओं में से एक के रूप में जाना जाता है। जावा या पायथन जैसी पारंपरिक भाषाओं के विपरीत, गो लिखने में आसान कोड और त्वरित निष्पादन, विकास में तेजी लाने और डिबगिंग और परीक्षण समय में कटौती के बीच एक अद्वितीय संतुलन बनाता है। यह आलेख एक प्रोजेक्ट में गोरोइन और संदर्भ का उपयोग करने के वास्तविक दुनिया के उदाहरण पर गौर करेगा जो धीमी और अस्थिर REST API माइक्रोसर्विस के साथ इंटरैक्ट करता है।
कार्य
आइए कल्पना करें कि आप अभी-अभी टीम में शामिल हुए हैं और आपकी टीम का नेतृत्व आपसे गोलांग में लिखी गई एक नई माइक्रोसर्विस (उदाहरण के लिए जोखिम प्रबंधक) को REST API के माध्यम से प्रदर्शित उपयोगकर्ता माइक्रोसर्विस से जोड़ने के लिए कहता है।
समस्या
जोखिम प्रबंधक को एक REST API के साथ इंटरैक्ट करने की आवश्यकता होती है जो धीमा और अस्थिर हो सकता है, जिससे हमें ऐसे अनुरोधों को सावधानीपूर्वक संभालने की आवश्यकता होती है। मैं अनुरोध टाइमआउट और त्रुटि प्रबंधन को प्रबंधित करने के लिए एसिंक्रोनस HTTP अनुरोधों और संदर्भ के लिए गोरोइन का उपयोग करूंगा।
समाधान
गोलांग में गोरोइन और संदर्भ का उपयोग समवर्ती कार्यों के कुशल प्रबंधन और धीमी या अस्थिर बाहरी एपीआई को संभालने की अनुमति देता है।
कोड में इसकी व्याख्या करने के लिए पहला कदम एपीआई बनाना है, मैंने शेयरवेयर सेवा का उपयोग किया है https://mockapi.io/ REST उत्पन्न करना सुविधाजनक है संस्थाओं के मूल सेट के साथ एपीआई, जैसे कि उपयोगकर्ता।
मान लीजिए कि किसी ने अपना सर्वश्रेष्ठ प्रयास किया और आपकी कंपनी के पास एक आंतरिक सेवा है जो उपयोगकर्ताओं को सूचीबद्ध करती है। हमारा कार्य नए जोखिम प्रबंधक में उपयोगकर्ता सूची का पुन: उपयोग करना है (उपयोगकर्ता डेटा संरचना mockapi.io द्वारा वर्णित अनुबंध को संतुष्ट करती है)। नीचे दिया गया कोड एक अनुरोध करता है, मुख्य भाग को संसाधित करता है, और या तो उपयोगकर्ताओं की एक सूची या संबंधित त्रुटि उत्पन्न करता है।
type User struct { CreatedAt string Name string Avatar string Id string } // Original slow request func fetchUsers(ctx context.Context) (*[]User, error) { resp, err := http.Get("https://
ऑपरेशन को नियंत्रित करने के लिए, मैं अन्य सभी संदर्भों के लिए सबसे ऊपरी मूल संदर्भ का उपयोग करूंगा - context.Background। मैं इस संदर्भ को नए डेटा के साथ पूरक करूंगा, इस मामले में टाइमआउट - context.WithTimeout, जिसे मैं 2 सेकंड के रूप में परिभाषित करूंगा। आप इस आलेख में गो में संदर्भों के साथ काम करने के बारे में अधिक पढ़ सकते हैं।
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) defer cancel() usersChan := make(chan *[]User) errChan := make(chan error) go func() { users, err := fetchUsers(ctx) if err != nil { errChanउदाहरण में, मैं हमारी आंतरिक सेवा से प्राप्त परिणाम को रिकॉर्ड करने के लिए दो चैनलों - userChan का उपयोग करता हूं, और त्रुटि को रिकॉर्ड करने के लिए दूसरे चैनल errChan का उपयोग करता हूं।
यदि धीमी एपीआई से प्रतिक्रिया 2 सेकंड के भीतर नहीं आती है, तो हम एक त्रुटि का पता लगाते हैं और इसे बाहरी परत पर सही ढंग से संसाधित करने का अवसर देते हैं।जोखिम प्रबंधक के साथ इस व्यावहारिक उदाहरण में, गोरआउट्स ने अतुल्यकालिक HTTP अनुरोधों को सक्षम किया, जबकि संदर्भ ने टाइमआउट हैंडलिंग सुनिश्चित की, जो विश्वसनीय और लचीली माइक्रोसर्विसेज के निर्माण के लिए महत्वपूर्ण है।
पी.एस.
यह आलेख उन शुरुआती डेवलपर्स के लिए है जिनके पास बुनियादी ज्ञान है, लेकिन उन्हें इस बात की कम जानकारी है कि वे अपने ज्ञान को कहां लागू कर सकते हैं। मुझे आपकी प्रतिक्रिया पाकर ख़ुशी होगी और आपके सवालों का जवाब देने में ख़ुशी होगी।
गो भाषा में सबसे बुनियादी चीजों का एक कामकाजी उदाहरण और कई अन्य कार्यान्वयन मेरे GitHub पर लिंक पर पाए जा सकते हैं
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3