जावास्क्रिप्ट में माइक्रोसर्विसेज़: Node.js के लिए आर्किटेक्चर और अभ्यास

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

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

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

जावास्क्रिप्ट में माइक्रोसर्विसेज़: आर्किटेक्चर और अभ्यास



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



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



कोड लिखने से पहले, यह समझना महत्वपूर्ण है कि एक माइक्रोसर्विस को "माइक्रोसर्विस" क्या बनाता है। मूल सिद्धांत:



  • एकल जिम्मेदारी (Single Responsibility): प्रत्येक सेवा एक विशिष्ट व्यावसायिक कार्य को हल करती है (जैसे, केवल प्रमाणीकरण या केवल ऑर्डर प्रबंधन)।
  • स्वतंत्रता: सेवाएं एक-दूसरे से स्वतंत्र रूप से विकसित, परीक्षण और तैनात की जाती हैं।
  • डेटा पृथक्करण: प्रत्येक सेवा का अपना डेटाबेस होता है। कोई साझा रिपॉजिटरी नहीं है।
  • ढीला युग्मन (Loose Coupling): सेवाएं नेटवर्क (API) के माध्यम से संवाद करती हैं, न कि सीधे फंक्शन कॉल के माध्यम से।
  • दोष-सहिष्णुता: एक सेवा की विफलता से पूरा सिस्टम नहीं गिरना चाहिए।


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



अभ्यास: दो सरल माइक्रोसर्विसेज़ बनाना



आइए Express.js पर दो सरल सेवाएं लिखें: User Service (उपयोगकर्ता प्रबंधन) और Order Service (ऑर्डर प्रबंधन)।



1. User Service (उपयोगकर्ता सेवा)

फ़ाइल बनाएं user-service/server.js:



const express = require('express');const app = express();app.use(express.json());

const users = [{ id: 1, name: 'Alice', email: 'alice@example.com' }];

app.get('/users/:id', (req, res) => { const user = users.find(u => u.id === parseInt(req.params.id)); if (!user) return res.status(404).json({ error: 'User not found' }); res.json(user);});

app.listen(3001, () => console.log('User Service running on port 3001'));


2. Order Service (ऑर्डर सेवा)

फ़ाइल बनाएं order-service/server.js:



const express = require('express');const app = express();app.use(express.json());

const orders = [ { id: 1, userId: 1, product: 'Laptop', amount: 1500 }];

app.get('/orders/user/:userId', (req, res) => { const userOrders = orders.filter(o => o.userId === parseInt(req.params.userId)); res.json(userOrders);});

app.listen(3002, () => console.log('Order Service running on port 3002'));


अब हमारे पास दो स्वतंत्र सेवाएं हैं, जो अलग-अलग पोर्ट पर काम कर रही हैं। यह माइक्रोसर्विस आर्किटेक्चर का आधार है।



सेवाओं के बीच इंटरैक्शन: REST और Message Broker



सेवाओं को संवाद करना चाहिए। आइए दो मुख्य दृष्टिकोणों पर विचार करें।



3.1 सिंक्रोनस इंटरैक्शन (REST API)

एक सेवा सीधे दूसरी सेवा के API को कॉल करती है। उदाहरण के लिए, उपयोगकर्ता नाम के साथ ऑर्डर प्राप्त करने के लिए, हम एक API Gateway या सर्विस-कम्पोज़र बनाएंगे।



// api-gateway.jsconst axios = require('axios');

app.get('/users/:id/orders', async (req, res) => { try { const userResponse = await axios.get(`http://localhost:3001/users/${req.params.id}`); const ordersResponse = await axios.get(`http://localhost:3002/orders/user/${req.params.id}`); res.json({ user: userResponse.data, orders: ordersResponse.data }); } catch (error) { res.status(

ब्लॉग

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