Go पर API गेटवे: माइक्रोसर्विस ऑर्केस्ट्रा का आपका निजी संचालक

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

परिचय: आपके Go प्रोजेक्ट को एक संचालक की आवश्यकता क्यों है

\n\n

एक सिम्फनी ऑर्केस्ट्रा की कल्पना करें। आपके पास वायलिन (उपयोगकर्ता सेवा), वुडविंड (ऑर्डर सेवा), पर्कशन (भुगतान सेवा) हैं। प्रत्येक वाद्य अपने आप में सुंदर है, लेकिन एक संचालक के बिना वे असंगत बजेंगे। Go पर माइक्रोसर्विसेज की दुनिया में API गेटवे वही संचालक है।

\n\n

जब आप Go में लिखते हैं, तो आप प्रदर्शन, सरलता और सुंदरता के आदी होते हैं। लेकिन जैसे ही सेवाओं की संख्या 3-4 से अधिक हो जाती है, अराजकता शुरू हो जाती है: क्लाइंट नहीं जानते कि कहाँ जाएँ, प्रमाणीकरण हर सेवा में दोहराया जाता है, और निगरानी सिरदर्द बन जाती है। Go सेवाओं के लिए API गेटवे इन समस्याओं को एक साथ हल करता है।

\n\n

इस लेख में, हम केवल सिद्धांत के बारे में बात नहीं करेंगे। हम Go, मानक लाइब्रेरी और कुछ लोकप्रिय पैकेज लेंगे, और अपना खुद का गेटवे बनाएंगे। संचालन के लिए तैयार हैं? चलिए शुरू करते हैं!

\n\n

API गेटवे क्या है और Go में इसकी आवश्यकता क्यों है?

\n\n

API गेटवे आपकी बैकएंड सेवाओं के लिए सभी क्लाइंट अनुरोधों का एक एकल प्रवेश बिंदु है। कल्पना करें कि आपके पास है:

\n\n
    \n
  • user-service:8081 — पंजीकरण और प्रोफाइल
  • \n
  • order-service:8082 — कार्ट और ऑर्डर
  • \n
  • payment-service:8083 — लेन-देन
  • \n
\n\n

गेटवे के बिना, क्लाइंट को तीनों सेवाओं के पते पता होने चाहिए। Go पर API गेटवे के साथ, वह केवल api.example.com पर दस्तक देता है, और गेटवे स्वयं तय करता है कि अनुरोध कहाँ भेजना है।

\n\n

गेटवे के मुख्य कार्य

\n\n
    \n
  • रूटिंग — अनुरोधों को उपयुक्त सेवा पर रीडायरेक्ट करना
  • \n
  • प्रमाणीकरण और प्राधिकरण — एक स्थान पर JWT टोकन की जाँच
  • \n
  • रेट लिमिटिंग — DDoS और ओवरलोड से सुरक्षा
  • \n
  • डेटा एकत्रीकरण — कई सेवाओं से प्रतिक्रियाओं को एक में संकलित करना
  • \n
  • लोड बैलेंसिंग — इंस्टेंस के बीच अनुरोधों का वितरण
  • \n
\n\n

Go इस भूमिका के लिए आदर्श है: यह हल्का, तेज़ है और एक कोर पर प्रति सेकंड हजारों अनुरोधों को संसाधित कर सकता है।

\n\n

Go पर एक सरल API गेटवे लिखना: विचार से कोड तक

\n\n

आइए एक न्यूनतम लेकिन कार्यात्मक Go API गेटवे बनाएं। हम केवल मानक लाइब्रेरी net/http और प्रॉक्सी के लिए httputil.ReverseProxy पैकेज का उपयोग करेंगे।

\n\n

चरण 1: बुनियादी रूटिंग

\n\n

सरल से शुरू करें: पथ के आधार पर अनुरोधों को विभिन्न सेवाओं पर निर्देशित करें।

\n\n
package main\n\nimport (\n    "log"\n    "net/http"\n    "net/http/httputil"\n    "net/url"\n)\n\nfunc main() {\n    // उपयोगकर्ता सेवा\n    userServiceURL, _ := url.Parse("http://localhost:8081")\n    userProxy := httputil.NewSingleHostReverseProxy(userServiceURL)\n\n    // ऑर्डर सेवा\n    orderServiceURL, _ := url.Parse("http://localhost:8082")\n    orderProxy := httputil.NewSingleHostReverseProxy(orderServiceURL)\n\n    http.HandleFunc("/api/users/", func(w http.ResponseWriter, r *http.Request) {\n        log.Printf("user-service को अनुरोध रीडायरेक्ट कर रहे हैं: %s", r.URL.Path)\n        userProxy.ServeHTTP(w, r)\n    })\n\n    http.HandleFunc("/api/orders/", func(w http.ResponseWriter, r *http.Request) {\n        log.Printf("order-service को अनुरोध रीडायरेक्ट कर रहे हैं: %s", r.URL.Path)\n        orderProxy.ServeHTTP(w, r)\n    })\n\n    log.Println("API गेटवे :8080 पर शुरू हुआ")\n    log.Fatal(http.ListenAndServe(":8080", nil))\n}\n
\n\n

यह कोड पहले से ही 80% काम करता है: /api/users/ का कोई भी अनुरोध user-service पर जाता है, और /api/orders/ का order-service पर। लेकिन प्रमाणीकरण कहाँ है?

\n\n

चरण 2: JWT के लिए मिडलवेयर जोड़ना

\n\n

Go पर API गेटवे की असली जादू मिडलवेयर में होती है। आइए प्रॉक्सी करने से पहले JWT टोकन की जाँच जोड़ें।

\n\n
package main\n\nimport (\n    "context"\n    "log"\n    "net/http"\n    "net/http/htt                

ब्लॉग

पुस्तक अनुशंसाएँ