जावास्क्रिप्ट में माइक्रोसर्विसेज़: आर्किटेक्चर और प्रैक्टिस ए टू ज़ेड

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

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

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

परिचय: जावास्क्रिप्ट में माइक्रोसर्विसेज़ क्यों?

\n

आधुनिक वेब डेवलपमेंट तेजी से मोनोलिथिक एप्लिकेशन से हटकर माइक्रोसर्विसेज़ आर्किटेक्चर की ओर बढ़ रहा है। जावास्क्रिप्ट, और विशेष रूप से इसका सर्वर साइड एनवायरनमेंट Node.js, एसिंक्रोनसिटी, इवेंट-ओरिएंटेड मॉडल और विशाल इकोसिस्टम समुदाय के कारण माइक्रोसर्विसेज़ बनाने के लिए आदर्श है। इस लेख में, हम जावास्क्रिप्ट में माइक्रोसर्विसेज़ को डिज़ाइन, डेवलप और डिप्लॉय करने के तरीके पर चर्चा करेंगे - सिद्धांत से लेकर प्रैक्टिकल कोड उदाहरणों तक।

\n\n

1. माइक्रोसर्विसेज़ आर्किटेक्चर के मूल सिद्धांत

\n

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

\n

Node.js पर माइक्रोसर्विसेज़ के लाभ

\n
    \n
  • स्केलेबिलिटी: Node.js नॉन-ब्लॉकिंग I/O के कारण हजारों समवर्ती कनेक्शनों को आसानी से संभालता है।
  • \n
  • त्वरित प्रोटोटाइपिंग: npm पैकेज और फ्रेमवर्क (Express, Fastify, NestJS) REST/GraphQL API को जल्दी से बनाने की अनुमति देते हैं।
  • \n
  • एरर आइसोलेशन: एक सर्विस में खराबी पूरे एप्लिकेशन को पंगु नहीं बनाती।
  • \n
  • टेक्नोलॉजिकल फ्लेक्सिबिलिटी: विभिन्न सर्विसेज़ Node.js के विभिन्न संस्करणों या यहां तक कि विभिन्न भाषाओं का उपयोग कर सकती हैं।
  • \n
\n

प्रमुख घटक

\n
    \n
  • API Gateway — एक एकल प्रवेश बिंदु जो अनुरोधों को उपयुक्त सर्विसेज़ पर रूट करता है।
  • \n
  • मैसेज ब्रोकर (RabbitMQ, Redis, Kafka) — एसिंक्रोनस डेटा एक्सचेंज के लिए।
  • \n
  • सर्विस रजिस्ट्री (Consul, etcd) — सर्विस डिस्कवरी के लिए।
  • \n
  • कंटेनरीकरण (Docker, Kubernetes) — एनवायरनमेंट को मानकीकृत करने के लिए।
  • \n
\n\n

2. प्रैक्टिस: दो माइक्रोसर्विसेज़ बनाना

\n

हम एक ऑर्डर सिस्टम का उदाहरण देखेंगे। हमारे पास दो माइक्रोसर्विसेज़ होंगी: user-service (उपयोगकर्ता प्रबंधन) और order-service (ऑर्डर प्रबंधन)। वे REST API और एसिंक्रोनस रूप से RabbitMQ के माध्यम से संवाद करेंगी।

\n\n

2.1. Express पर बेसिक सर्विस

\n

हम user-service से शुरू करते हैं। डिपेंडेंसी इंस्टॉल करें:

\n
npm init -y\nnpm install express body-parser
\n

index.js फ़ाइल बनाएं:

\n
const express = require('express');\nconst bodyParser = require('body-parser');\nconst app = express();\nconst PORT = process.env.PORT || 3001;\n\napp.use(bodyParser.json());\n\nconst users = [];\n\napp.post('/users', (req, res) => {\n    const { name, email } = req.body;\n    const user = { id: users.length + 1, name, email };\n    users.push(user);\n    res.status(201).json(user);\n});\n\napp.get('/users/:id', (req, res) => {\n    const user = users.find(u => u.id === parseInt(req.params.id));\n    if (!user) return res.status(404).json({ error: 'User not found' });\n    res.json(user);\n});\n\napp.listen(PORT, () => {\n    console.log(`User service running on port ${PORT}`);\n});
\n

इसी तरह, पोर्ट 3002 पर order-service बनाएं। इसमें ऑर्डर की एक सरणी और दो एंडपॉइंट होंगे: POST /orders और GET /orders/:id।

\n\n

2.2. API Gateway

\n

हम पोर्ट 3000 पर एक सरल गेटवे बनाते हैं जो पथ के आधार पर अनुरोधों को रीडायरेक्ट करता है:

\n
const express = require('express');\nconst httpProxy = require('http-proxy-middleware');\nconst app = express();\n\napp.use('/users', httpProxy.createProxyMiddleware({ target: 'http://localhost:3001', changeOrigin: true }));\napp.use('/orders', httpProxy.createProxyMiddleware({ target: 'http://localhost:3002', changeOrigin: true }));\n\napp.listen(3000, () => console.log('API Gateway on port 3000'));
\n

अब /users के सभी अनुरोध user-service पर और /orders के अनुरोध order-service पर जाते हैं।

\n\n

2.3. RabbitMQ के साथ एसिंक्रोनस इंटरेक्शन

\n

मान लीजिए, ऑर्डर बनाते समय

ब्लॉग

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