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

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

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

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

परिचय: TypeScript माइक्रोसर्विसेज़ के लिए आदर्श क्यों है

माइक्रोसर्विस आर्किटेक्चर जटिल, स्केलेबल और दोष-सहिष्णु अनुप्रयोगों के निर्माण के लिए मानक बन गया है। TypeScript, अपनी सख्त टाइपिंग, समृद्ध पारिस्थितिकी तंत्र और एसिंक्रोनसिटी के समर्थन के कारण, माइक्रोसर्विसेज़ को लागू करने के लिए सबसे अच्छी भाषाओं में से एक है। यह ऐसा कोड लिखने की अनुमति देता है जिसे रीफैक्टर करना, परीक्षण करना और दस्तावेज़ीकरण करना आसान होता है, जो सिस्टम को दर्जनों स्वतंत्र सेवाओं में विभाजित करते समय महत्वपूर्ण है।

इस लेख में, हम आर्किटेक्चरल सिद्धांतों को समझेंगे, NestJS पर एक सरल माइक्रोसर्विस बनाएंगे, RabbitMQ के माध्यम से इंटर-सर्विस संचार सेट करेंगे और सब कुछ Docker Compose में पैकेज करेंगे। आपको शुरुआत करने के लिए एक तैयार व्यावहारिक आधार मिलेगा।



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

सही आर्किटेक्चर सफलता की कुंजी है। TypeScript माइक्रोसर्विसेज़ के लिए तीन प्रमुख परतें हैं:

  • ट्रांसपोर्ट लेयर — अनुरोधों को प्राप्त करने और भेजने के लिए जिम्मेदार (HTTP, gRPC, मैसेज क्यू)।
  • बिजनेस लॉजिक — शुद्ध फ़ंक्शन और सेवाएं, जो फ्रेमवर्क पर निर्भर नहीं हैं।
  • डेटा लेयर — रिपॉजिटरी और ORM (TypeORM, Prisma)।

प्रत्येक माइक्रोसर्विस स्वायत्त होना चाहिए: इसका अपना डेटाबेस, CI/CD और डिप्लॉयमेंट लॉजिक होना चाहिए। सेवाओं के बीच संचार आमतौर पर एसिंक्रोनस क्यू (RabbitMQ, Kafka) या सिंक्रोनस कॉल (gRPC) के माध्यम से कार्यान्वित किया जाता है।



अभ्यास: NestJS पर माइक्रोसर्विस बनाना



चरण 1: प्रोजेक्ट इनिशियलाइज़ेशन

NestJS CLI इंस्टॉल करें और एक नया प्रोजेक्ट बनाएं:

npm i -g @nestjs/clinest new user-service --package-manager npmcd user-service


चरण 2: माइक्रोसर्विसेज़ के लिए समर्थन जोड़ना

NestJS में माइक्रोसर्विस ट्रांसपोर्टर्स के लिए अंतर्निहित समर्थन है। RabbitMQ इंस्टॉल करें:

npm install @nestjs/microservices amqplib amqp-connection-manager

main.ts बनाएं, जो सेवा को माइक्रोसर्विस के रूप में शुरू करता है:

import { NestFactory } from '@nestjs/core';import { MicroserviceOptions, Transport } from '@nestjs/microservices';import { AppModule } from './app.module';

async function bootstrap() { const app = await NestFactory.createMicroservice<MicroserviceOptions>( AppModule, { transport: Transport.RMQ, options: { urls: ['amqp://localhost:5672'], queue: 'user_queue', queueOptions: { durable: false }, }, }, ); await app.listen();}bootstrap();


चरण 3: कंट्रोलर का कार्यान्वयन

एक सरल कंट्रोलर बनाएं जो क्यू से संदेशों को संसाधित करता है:

import { Controller } from '@nestjs/common';import { MessagePattern, Payload } from '@nestjs/microservices';

@Controller()export class UserController { @MessagePattern('user.create') createUser(@Payload() data: { name: string; email: string }): string { // यहाँ उपयोगकर्ता बनाने का बिजनेस लॉजिक होना चाहिए return `उपयोगकर्ता ${data.name} बनाया गया`; }}

अब कोई भी सेवा user_queue क्यू में user.create पैटर्न के साथ संदेश भेज सकती है और उत्तर प्राप्त कर सकती है।



इंटर-सर्विस संचार: सिंक्रोनस और एसिंक्रोनस



सिंक्रोनस: gRPC

उच्च-लोड सिस्टम के लिए जहां सख्त टाइपिंग और कम विलंबता की आवश्यकता होती है, gRPC का उपयोग करें। पैकेज इंस्टॉल करें:

npm install @nestjs/microservices @grpc/grpc-js @grpc/proto-loader

.proto फ़ाइल परिभाषित करें:

syntax = "proto3";package user;service UserService {  rpc GetUser (UserId) returns (User);}message UserId { int32 id = 1; }message User { string name = 1; string email = 2; }

कंट्रोलर में अनुरोध को संसाधित करने के लिए @GrpcMethod डेकोरेटर का उपयोग करें।



एसिंक्रोनस: RabbitMQ

ब्लॉग

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