Go में माइक्रोसर्विसेज़: कहाँ से शुरू करें और छोड़ें नहीं

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

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

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

Go माइक्रोसर्विसेज़ के लिए सबसे अच्छा विकल्प क्यों है (और कब ऐसा नहीं है)

\n\n

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

\n\n

यह माइक्रोसर्विसेज़ आर्किटेक्चर है। और Go (Golang) ऐसे 'पवेलियन' बनाने के लिए एक आदर्श सामग्री है। क्यों?

\n\n
    \n
  • त्वरित शुरुआत: एक बाइनरी में संकलन। कोई JDK, वर्चुअल मशीन या node_modules नहीं।
  • \n
  • प्रदर्शन: Go C++ के स्तर पर काम करता है, लेकिन Python की तरह लिखा जाता है।
  • \n
  • अंतर्निहित समवर्तीता: गोरूटीन (goroutines) और चैनल (channels) प्रति सेकंड सैकड़ों अनुरोधों को संभालने के लिए एक सुपरपावर हैं।
  • \n
  • सरलता: Go जानबूझकर सीमित है। कोई जेनेरिक (Go 1.18 से पहले नहीं थे), कोई इनहेरिटेंस नहीं। कोड वैक्यूम क्लीनर के निर्देशों की तरह पढ़ा जाता है - यह तुरंत स्पष्ट होता है कि प्रत्येक पंक्ति क्या करती है।
  • \n
\n\n

लेकिन नुकसान भी हैं। Go उपयुक्त नहीं होगा यदि आपको चाहिए:\n

    \n
  • भारी क्लास इनहेरिटेंस (यहाँ यह बिल्कुल नहीं है)।
  • \n
  • किसी भी कार्य के लिए तैयार लाइब्रेरीज़ की एक विशाल संख्या (पारिस्थितिकी तंत्र Java या Python की तुलना में गरीब है)।
  • \n
  • डायनेमिक टाइपिंग (Go सख्ती से टाइप किया गया है, आपको अधिक boilerplate लिखना होगा)।
  • \n
\n

\n\n

यदि आपका प्रोजेक्ट एक उच्च-लोड API, चैट के लिए बैकएंड, भुगतान गेटवे या मॉनिटरिंग सिस्टम है - Go आपकी पसंद है। यदि आप एक सप्ताहांत में एक प्रोटोटाइप लिख रहे हैं और गति की परवाह नहीं करते - Python लें।

\n\n

चरण 1. सामान पैक करें: उपकरण और प्रोजेक्ट संरचना

\n\n

क्या स्थापित करने की आवश्यकता है

\n

कोड लिखने से पहले, आइए वातावरण सेट करें। आपको आवश्यकता होगी:

\n
    \n
  • Go (संस्करण 1.21+)। go.dev से डाउनलोड करें।
  • \n
  • Docker (कंटेनरीकरण के लिए)।
  • \n
  • curl या Postman (API परीक्षण के लिए)।
  • \n
  • कोई भी IDE: GoLand, Go प्लगइन के साथ VS Code, Vim। मैं VS Code की सलाह देता हूँ - मुफ्त और सुविधाजनक।
  • \n
\n\n

सही फ़ोल्डर संरचना

\n

आइए तुरंत सहमत हों: कोई लापरवाही नहीं। Go में माइक्रोसर्विस के लिए यहाँ मानक संरचना है:

\n\n
/user-service\n├── cmd/\n│   └── server/\n│       └── main.go        # प्रवेश बिंदु\n├── internal/\n│   ├── handler/           # HTTP हैंडलर\n│   ├── service/           # व्यावसायिक तर्क\n│   ├── repository/        # डेटाबेस के साथ काम\n│   └── model/             # डेटा संरचनाएँ\n├── pkg/\n│   └── middleware/        # सामान्य उपयोगिताएँ\n├── Dockerfile\n├── go.mod\n└── go.sum\n
\n\n

ऐसा क्यों? Go एक ऐसी भाषा है जहाँ फ़ोल्डर संरचना आर्किटेक्चर को निर्धारित करती है। cmd/ - प्रवेश बिंदु। internal/ - वह सब कुछ जो बाहर से आयात नहीं किया जा सकता (मूर्खता से सुरक्षा)। pkg/ - वह जो अन्य सेवाओं के साथ साझा किया जा सकता है।

\n\n

चरण 2. पहला माइक्रोसर्विस लिखें: Hello, World! 2.0

\n\n

आइए Go में एक सरल HTTP सर्वर लिखें जो JSON लौटाएगा। यह हमारा 'अभिवादन माइक्रोसर्विस' होगा।

\n\n

चरण 1. मॉड्यूल आरंभीकरण

\n
mkdir hello-service\ncd hello-service\ngo mod init github.com/आपका-उपयोगकर्ता-नाम/hello-service
\n\n

चरण 2. main.go लिखें

\n
package main\n\nimport (\n    "encoding/json"\n    "log"\n    "net/http"\n    "time"\n)\n\n// GreetingResponse — प्रतिक्रिया संरचना\ntype GreetingResponse struct {\n    Message   string `json:"message"`\n    Timestamp string `json:"timestamp"`\n}\n\nfunc greetHandler(w http.ResponseWriter, r *http.Request) {\n    // हेडर सेट करें\n    w.Header().Set("Content-Type", "application/json")\n    w.WriteHeader(http.StatusOK)\n\n    // प्रतिक्रिया बनाएँ\n    response := GreetingResponse{\n        Message:   "नमस्ते, माइक्रोसर्विसेज़!",\n                

ब्लॉग

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