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

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

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

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

जावास्क्रिप्ट पर माइक्रोसर्विस आर्किटेक्चर का परिचय

माइक्रोसर्विस आर्किटेक्चर सॉफ्टवेयर विकास के लिए एक दृष्टिकोण है जिसमें एप्लिकेशन को छोटी, स्वतंत्र रूप से तैनात की जाने वाली सेवाओं के एक सेट के रूप में बनाया जाता है। प्रत्येक सेवा एक व्यावसायिक कार्य को लागू करती है और हल्के प्रोटोकॉल (आमतौर पर HTTP/REST या संदेश कतार) के माध्यम से दूसरों के साथ संचार करती है। JavaScript, विशेष रूप से Node.js रनटाइम, अपने एसिंक्रोनस I/O मॉडल, विशाल पैकेज इकोसिस्टम (npm) और उच्च विकास गति के कारण माइक्रोसर्विसेज़ बनाने के लिए आदर्श है।

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



1. माइक्रोसर्विसेज़ आर्किटेक्चर का डिज़ाइन

पहला कदम मोनोलिथिक एप्लिकेशन को सेवाओं में विघटित करना है। प्रत्येक माइक्रोसर्विस के पास अपना स्वयं का डेटाबेस (database per service) होना चाहिए और पूरी तरह से स्वायत्त होना चाहिए। आइए एक ऑनलाइन स्टोर का उदाहरण देखें:

  • Service Users — पंजीकरण, प्रमाणीकरण, प्रोफाइल।
  • Service Products — उत्पाद सूची, मूल्य, स्टॉक।
  • Service Orders — ऑर्डर का निर्माण और प्रसंस्करण।
  • Service Payments — भुगतान गेटवे के साथ एकीकरण।
  • Service Notifications — ईमेल/SMS भेजना।

सेवाओं के बीच संचार के लिए हम दो दृष्टिकोणों का उपयोग करते हैं: सिंक्रोनस (REST/gRPC) उन अनुरोधों के लिए जिन्हें तत्काल प्रतिक्रिया की आवश्यकता होती है, और एसिंक्रोनस (संदेश कतार) उन घटनाओं के लिए जिन्हें ब्लॉकिंग की आवश्यकता नहीं होती है।



2. Express के साथ Node.js पर माइक्रोसर्विस बनाना

हम उपयोगकर्ताओं के प्रबंधन के लिए एक सरल माइक्रोसर्विस से शुरू करते हैं। Express और UUID के लिए लाइब्रेरी स्थापित करें:

npm init -ynpm install express uuid

एक फ़ाइल users-service.js बनाएं:

const express = require('express');const { v4: uuidv4 } = require('uuid');const app = express();app.use(express.json());

const users = [];

// उपयोगकर्ता बनानाapp.post('/users', (req, res) => { const { name, email } = req.body; const user = { id: uuidv4(), name, email }; users.push(user); res.status(201).json(user);});

// उपयोगकर्ताओं की सूची प्राप्त करनाapp.get('/users', (req, res) => { res.json(users);});

// ID द्वारा उपयोगकर्ता प्राप्त करनाapp.get('/users/:id', (req, res) => { const user = users.find(u => u.id === req.params.id); if (!user) return res.status(404).json({ error: 'User not found' }); res.json(user);});

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

सर्विस चलाएं: node users-service.js। अब आपके पास REST API के साथ एक कार्यशील माइक्रोसर्विस है। इसी तरह, उत्पादों और ऑर्डर के लिए सेवाएं (क्रमशः पोर्ट 3002 और 3003 पर) बनाई जाती हैं।



3. RabbitMQ के माध्यम से एसिंक्रोनस संचार

"ऑर्डर बनाया गया" या "उपयोगकर्ता पंजीकृत" जैसी घटनाओं के लिए, हम संदेश कतार का उपयोग करते हैं। RabbitMQ के लिए क्लाइंट स्थापित करें:

npm install amqplib

संदेश प्रकाशित करने के लिए एक उपयोगिता बनाएं (event-bus.js):

const amqp = require('amqplib');let channel;

async function connect() { const connection = await amqp.connect('amqp://localhost'); channel = await connection.createChannel(); await channel.assertExchange('order_events', 'topic', { durable: true });}

async function publishEvent(routingKey, data) { if (!channel) await connect(); channel.publish('order_events', routingKey, Buffer.from(JSON.stringify(data))); console.log(`Event published: ${routingKey}`);}

module.exports = { publishEvent };

अब ऑर्डर सर्विस (orders-service.js) में, ऑर्डर बनाते समय प्रकाशित करें

ब्लॉग

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