தமிழ்

பின்னணிப் பணிகள் மற்றும் வரிசைச் செயலாக்க உலகை ஆராயுங்கள்: அளவிடக்கூடிய மற்றும் நம்பகமான அமைப்புகளை உருவாக்குவதற்கான நன்மைகள், செயல்படுத்தல், பிரபலமான தொழில்நுட்பங்கள் மற்றும் சிறந்த நடைமுறைகளைப் புரிந்து கொள்ளுங்கள்.

பின்னணிப் பணிகள்: வரிசைச் செயலாக்கத்திற்கான ஒரு ஆழமான வழிகாட்டி

நவீன மென்பொருள் மேம்பாட்டுச் சூழலில், பயன்பாடுகள் அதிக அளவு தரவு மற்றும் பயனர் கோரிக்கைகளைக் கையாளும் என எதிர்பார்க்கப்படுகிறது. ஒவ்வொரு பணியையும் ஒத்திசைவாகச் செய்வது மெதுவான மறுமொழி நேரங்களுக்கும் மோசமான பயனர் அனுபவத்திற்கும் வழிவகுக்கும். இங்குதான் பின்னணிப் பணிகள் மற்றும் வரிசைச் செயலாக்கம் devreக்கு வருகின்றன. இவை, நேரத்தை எடுத்துக்கொள்ளும் அல்லது வளம் மிகுந்த பணிகளை ஒத்திசைவற்ற முறையில் செயல்படுத்த பயன்பாடுகளை அனுமதிக்கின்றன, இதன் மூலம் முக்கிய பயன்பாட்டுத் திரியை விடுவித்து, ஒட்டுமொத்த செயல்திறன் மற்றும் மறுமொழியை மேம்படுத்துகின்றன.

பின்னணிப் பணிகள் என்றால் என்ன?

பின்னணிப் பணிகள் என்பவை முக்கிய பயன்பாட்டு ஓட்டத்திலிருந்து சுயாதீனமாக செயல்படுத்தப்படும் பணிகள் ஆகும். அவை பின்னணியில் இயங்குகின்றன, பயனர் இடைமுகத்தைத் தடுக்காமலோ அல்லது பயனரின் அனுபவத்தில் குறுக்கிடாமலோ. இந்தப் பணிகளில் பின்வருவன அடங்கும்:

இந்தப் பணிகளைப் பின்னணிப் பணிகளுக்கு வழங்குவதன் மூலம், பயன்பாடுகள் மறுமொழியாக இருந்து, அதிக எண்ணிக்கையிலான ஒரே நேரப் பயனர்களைக் கையாள முடியும். இது வலை பயன்பாடுகள், மொபைல் பயன்பாடுகள் மற்றும் விநியோகிக்கப்பட்ட அமைப்புகளுக்கு குறிப்பாக முக்கியமானது.

வரிசைச் செயலாக்கத்தை ஏன் பயன்படுத்த வேண்டும்?

வரிசைச் செயலாக்கம் என்பது பின்னணிப் பணிகளைச் செயல்படுத்துவதில் ஒரு முக்கிய அங்கமாகும். இது பின்னணிப் பணிகளைச் சேமிக்கவும் நிர்வகிக்கவும் ஒரு செய்தி வரிசையைப் பயன்படுத்துவதை உள்ளடக்குகிறது. ஒரு செய்தி வரிசை, பயன்பாட்டிற்கும் பணிகளைச் செயல்படுத்தும் வொர்க்கர் செயல்முறைகளுக்கும் இடையே ஒரு இடையகமாக செயல்படுகிறது. வரிசைச் செயலாக்கம் ஏன் நன்மை பயக்கும் என்பது இங்கே:

ஒரு வரிசைச் செயலாக்க அமைப்பின் முக்கிய கூறுகள்

ஒரு பொதுவான வரிசைச் செயலாக்க அமைப்பு பின்வரும் கூறுகளைக் கொண்டுள்ளது:

உற்பத்தியாளர் பணிகளை வரிசையில் சேர்க்கிறார். செய்தி வரிசை, ஒரு வொர்க்கர் செயல்முறை அவற்றைச் செயலாக்கக் கிடைக்கும் வரை பணிகளைச் சேமிக்கிறது. வொர்க்கர் செயல்முறை வரிசையிலிருந்து ஒரு பணியைப் பெற்று, அதைச் செயல்படுத்தி, பின்னர் பணி முடிக்கப்பட்டதாக ஒப்புக்கொள்கிறது. பின்னர் வரிசை, அந்தப் பணியை வரிசையிலிருந்து நீக்குகிறது. ஒரு வொர்க்கர் ஒரு பணியைச் செயலாக்கத் தவறினால், வரிசை அந்தப் பணியை மீண்டும் முயற்சிக்கலாம் அல்லது ஒரு டெட்-லெட்டர் வரிசைக்கு நகர்த்தலாம்.

பிரபலமான செய்தி வரிசை தொழில்நுட்பங்கள்

பல செய்தி வரிசை தொழில்நுட்பங்கள் உள்ளன, ஒவ்வொன்றும் அதன் சொந்த பலம் மற்றும் பலவீனங்களைக் கொண்டுள்ளன. இதோ சில பிரபலமான தேர்வுகள்:

ராபிட்எம்க்யூ (RabbitMQ)

ராபிட்எம்க்யூ என்பது பரவலாகப் பயன்படுத்தப்படும் ஒரு திறந்த மூல செய்தித் தரகர் ஆகும், இது பல செய்திப் பரிமாற்ற நெறிமுறைகளை ஆதரிக்கிறது. இது அதன் நம்பகத்தன்மை, அளவிடுதல் மற்றும் நெகிழ்வுத்தன்மைக்கு பெயர் பெற்றது. சிக்கலான ரூட்டிங் மற்றும் செய்திப் பரிமாற்ற முறைகள் தேவைப்படும் பயன்பாடுகளுக்கு ராபிட்எம்க்யூ ஒரு நல்ல தேர்வாகும். இது AMQP (Advanced Message Queuing Protocol) தரநிலையை அடிப்படையாகக் கொண்டது.

பயன்பாட்டு வழக்குகள்:

காஃப்கா (Kafka)

காஃப்கா என்பது ஒரு விநியோகிக்கப்பட்ட ஸ்ட்ரீமிங் தளமாகும், இது உயர்-செயல்திறன், நிகழ்நேர தரவு ஊட்டங்களுக்காக வடிவமைக்கப்பட்டுள்ளது. இது பெரும்பாலும் தரவுக் குழாய்கள் மற்றும் ஸ்ட்ரீமிங் பகுப்பாய்வு பயன்பாடுகளை உருவாக்கப் பயன்படுகிறது. காஃப்கா அதன் அளவிடுதல், தவறு சகிப்புத்தன்மை மற்றும் பெரிய அளவிலான தரவைக் கையாளும் திறனுக்காக அறியப்படுகிறது. ராபிட்எம்க்யூவைப் போலல்லாமல், காஃப்கா செய்திகளை ஒரு கட்டமைக்கக்கூடிய காலத்திற்கு சேமித்து வைக்கிறது, இது நுகர்வோர்கள் தேவைப்பட்டால் செய்திகளை மீண்டும் இயக்க அனுமதிக்கிறது.

பயன்பாட்டு வழக்குகள்:

ரெடிஸ் (Redis)

ரெடிஸ் என்பது நினைவகத்தில் உள்ள தரவுக் கட்டமைப்புக் கடையாகும், இது ஒரு செய்தித் தரகராகவும் பயன்படுத்தப்படலாம். இது அதன் வேகம் மற்றும் எளிமைக்கு பெயர் பெற்றது. குறைந்த தாமதம் மற்றும் உயர் செயல்திறன் தேவைப்படும் பயன்பாடுகளுக்கு ரெடிஸ் ஒரு நல்ல தேர்வாகும். இருப்பினும், தரவு நினைவகத்தில் சேமிக்கப்படுவதால், ரெடிஸ் ராபிட்எம்க்யூ அல்லது காஃப்காவைப் போல நீடித்தது அல்ல. நிலைநிறுத்தல் விருப்பங்கள் உள்ளன, ஆனால் அவை செயல்திறனைப் பாதிக்கலாம்.

பயன்பாட்டு வழக்குகள்:

AWS SQS (Simple Queue Service)

AWS SQS என்பது அமேசான் வலை சேவைகளால் வழங்கப்படும் ஒரு முழுமையாக நிர்வகிக்கப்படும் செய்தி வரிசை சேவையாகும். இது கிளவுட்டில் விநியோகிக்கப்பட்ட பயன்பாடுகளை உருவாக்க ஒரு அளவிடக்கூடிய மற்றும் நம்பகமான விருப்பமாகும். SQS இரண்டு வகையான வரிசைகளை வழங்குகிறது: நிலையான வரிசைகள் மற்றும் FIFO (First-In-First-Out) வரிசைகள்.

பயன்பாட்டு வழக்குகள்:

கூகிள் கிளவுட் பப்/சப் (Google Cloud Pub/Sub)

கூகிள் கிளவுட் பப்/சப் என்பது கூகிள் கிளவுட் இயங்குதளத்தால் வழங்கப்படும் ஒரு முழுமையாக நிர்வகிக்கப்படும், நிகழ்நேர செய்திச் சேவையாகும். இது சுயாதீன பயன்பாடுகள் மற்றும் அமைப்புகளுக்கு இடையே செய்திகளை அனுப்பவும் பெறவும் உங்களை அனுமதிக்கிறது. இது புஷ் மற்றும் புல் டெலிவரி மாதிரிகள் இரண்டையும் ஆதரிக்கிறது.

பயன்பாட்டு வழக்குகள்:

அசூர் க்யூ ஸ்டோரேஜ் (Azure Queue Storage)

அசூர் க்யூ ஸ்டோரேஜ் என்பது மைக்ரோசாஃப்ட் அசூர் வழங்கும் ஒரு சேவையாகும், இது அதிக எண்ணிக்கையிலான செய்திகளைச் சேமிப்பதற்காகும். பயன்பாட்டுக் கூறுகளுக்கு இடையே ஒத்திசைவற்ற முறையில் தொடர்புகொள்ள க்யூ ஸ்டோரேஜைப் பயன்படுத்தலாம்.

பயன்பாட்டு வழக்குகள்:

பின்னணிப் பணிகளைச் செயல்படுத்துதல்: நடைமுறை எடுத்துக்காட்டுகள்

வெவ்வேறு தொழில்நுட்பங்களைப் பயன்படுத்தி பின்னணிப் பணிகளை எவ்வாறு செயல்படுத்துவது என்பதற்கான சில நடைமுறை எடுத்துக்காட்டுகளை ஆராய்வோம்.

எடுத்துக்காட்டு 1: செலரி மற்றும் ராபிட்எம்க்யூவுடன் மின்னஞ்சல் அறிவிப்புகளை அனுப்புதல் (பைத்தான்)

செலரி என்பது ஒத்திசைவற்ற பணிகளுக்கான ஒரு பிரபலமான பைத்தான் நூலகமாகும். இது ராபிட்எம்க்யூவை செய்தித் தரகராகப் பயன்படுத்தலாம். இந்த எடுத்துக்காட்டு செலரி மற்றும் ராபிட்எம்க்யூவைப் பயன்படுத்தி மின்னஞ்சல் அறிவிப்புகளை எவ்வாறு அனுப்புவது என்பதைக் காட்டுகிறது.

# செலரிகான்ஃபிக்.py
broker_url = 'amqp://guest:guest@localhost//'
result_backend = 'redis://localhost:6379/0'

# டாஸ்க்ஸ்.py
from celery import Celery
import time

app = Celery('tasks', broker='amqp://guest:guest@localhost//', backend='redis://localhost:6379/0')

@app.task
def send_email(email_address, subject, message):
 time.sleep(10) # மின்னஞ்சல் அனுப்புவதை உருவகப்படுத்துதல்
 print(f"Sent email to {email_address} with subject '{subject}' and message '{message}'")
 return f"Email sent to {email_address}"

# ஆப்.py
from tasks import send_email

result = send_email.delay('test@example.com', 'Hello', 'This is a test email.')
print(f"Task ID: {result.id}")

இந்த எடுத்துக்காட்டில், send_email செயல்பாடு @app.task உடன் அலங்கரிக்கப்பட்டுள்ளது, இது செலரிக்கு இது ஒத்திசைவற்ற முறையில் செயல்படுத்தப்படக்கூடிய ஒரு பணி என்று கூறுகிறது. send_email.delay() செயல்பாட்டு அழைப்பு, பணியை ராபிட்எம்க்யூ வரிசையில் சேர்க்கிறது. பின்னர் செலரி வொர்க்கர்கள் வரிசையிலிருந்து பணிகளை எடுத்து அவற்றைச் செயல்படுத்துகின்றன.

எடுத்துக்காட்டு 2: காஃப்கா மற்றும் ஒரு தனிப்பயன் வொர்க்கருடன் படங்களைச் செயலாக்குதல் (ஜாவா)

இந்த எடுத்துக்காட்டு, காஃப்காவை செய்தி வரிசையாகவும், ஒரு தனிப்பயன் ஜாவா வொர்க்கரையும் பயன்படுத்தி படங்களை எவ்வாறு செயலாக்குவது என்பதைக் காட்டுகிறது.

// காஃப்கா தயாரிப்பாளர் (ஜாவா)
import org.apache.kafka.clients.producer.*;
import java.util.Properties;

public class ImageProducer {
 public static void main(String[] args) throws Exception {
 Properties props = new Properties();
 props.put("bootstrap.servers", "localhost:9092");
 props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
 props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");

 Producer producer = new KafkaProducer<>(props);
 for (int i = 0; i < 10; i++) {
 producer.send(new ProducerRecord("image-processing", Integer.toString(i), "image_" + i + ".jpg"));
 System.out.println("Message sent successfully");
 }
 producer.close();
 }
}

// காஃப்கா நுகர்வோர் (ஜாவா)
import org.apache.kafka.clients.consumer.*;
import java.util.Properties;
import java.util.Arrays;

public class ImageConsumer {
 public static void main(String[] args) throws Exception {
 Properties props = new Properties();
 props.setProperty("bootstrap.servers", "localhost:9092");
 props.setProperty("group.id", "image-processor");
 props.setProperty("enable.auto.commit", "true");
 props.setProperty("auto.commit.interval.ms", "1000");
 props.setProperty("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
 props.setProperty("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");
 Consumer consumer = new KafkaConsumer<>(props);
 consumer.subscribe(Arrays.asList("image-processing"));
 while (true) {
 ConsumerRecords records = consumer.poll(100);
 for (ConsumerRecord record : records) {
 System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());
 // பட செயலாக்கத்தை உருவகப்படுத்துதல்
 System.out.println("Processing image: " + record.value());
 Thread.sleep(2000);
 System.out.println("Image processed successfully");
 }
 }
 }
}

தயாரிப்பாளர் படக் கோப்புப் பெயர்களை "image-processing" என்ற காஃப்கா தலைப்புக்கு அனுப்புகிறார். நுகர்வோர் இந்தத் தலைப்புக்கு குழுசேர்ந்து, படங்கள் வந்தவுடன் அவற்றைச் செயலாக்குகிறார். இந்த எடுத்துக்காட்டு காஃப்காவைப் பயன்படுத்தி ஒரு எளிய பட செயலாக்க குழாய்த்திட்டத்தைக் காட்டுகிறது.

எடுத்துக்காட்டு 3: AWS SQS மற்றும் லாம்டாவுடன் திட்டமிடப்பட்ட பணிகள் (சர்வர்லெஸ்)

இந்த எடுத்துக்காட்டு, AWS SQS மற்றும் லாம்டா செயல்பாடுகளைப் பயன்படுத்தி பணிகளை எவ்வாறு திட்டமிடுவது என்பதைக் காட்டுகிறது. AWS CloudWatch Events, ஒரு குறிப்பிட்ட நேரத்தில் அல்லது இடைவெளியில் ஒரு லாம்டா செயல்பாட்டைத் தூண்டுவதற்குப் பயன்படுத்தப்படலாம். அந்த லாம்டா செயல்பாடு பின்னர் SQS வரிசையில் ஒரு பணியைச் சேர்க்கிறது. மற்றொரு லாம்டா செயல்பாடு ஒரு வொர்க்கராக செயல்பட்டு, வரிசையிலிருந்து பணிகளைச் செயலாக்குகிறது.

படி 1: ஒரு SQS வரிசையை உருவாக்கவும்

AWS மேலாண்மை கன்சோலில் ஒரு SQS வரிசையை உருவாக்கவும். வரிசையின் ARN (Amazon Resource Name) ஐக் குறித்துக் கொள்ளவும்.

படி 2: ஒரு லாம்டா செயல்பாட்டை (அட்டவணையாளர்) உருவாக்கவும்

# லாம்டா செயல்பாடு (பைத்தான்)
import boto3
import json

sqs = boto3.client('sqs')
QUEUE_URL = 'YOUR_SQS_QUEUE_URL'  # உங்கள் SQS வரிசை URL உடன் மாற்றவும்

def lambda_handler(event, context):
 message = {
 'task': 'Generate Report',
 'timestamp': str(datetime.datetime.now())
 }

 response = sqs.send_message(
 QueueUrl=QUEUE_URL,
 MessageBody=json.dumps(message)
 )

 print(f"Message sent to SQS: {response['MessageId']}")
 return {
 'statusCode': 200,
 'body': 'Message sent to SQS'
 }

படி 3: ஒரு லாம்டா செயல்பாட்டை (வொர்க்கர்) உருவாக்கவும்

# லாம்டா செயல்பாடு (பைத்தான்)
import boto3
import json

sqs = boto3.client('sqs')
QUEUE_URL = 'YOUR_SQS_QUEUE_URL'  # உங்கள் SQS வரிசை URL உடன் மாற்றவும்

def lambda_handler(event, context):
 for record in event['Records']:
 body = json.loads(record['body'])
 print(f"Received message: {body}")
 # அறிக்கை உருவாக்கத்தை உருவகப்படுத்துதல்
 print("Generating report...")
 # time.sleep(5)
 print("Report generated successfully.")

 return {
 'statusCode': 200,
 'body': 'Message processed'
 }

படி 4: ஒரு CloudWatch Events விதியை உருவாக்கவும்

அட்டவணையாளர் லாம்டா செயல்பாட்டை ஒரு குறிப்பிட்ட நேரத்தில் அல்லது இடைவெளியில் தூண்டுவதற்கு ஒரு CloudWatch Events விதியை உருவாக்கவும். லாம்டா செயல்பாட்டை அழைக்க விதியை உள்ளமைக்கவும்.

படி 5: வொர்க்கர் லாம்டாவிற்கு SQS தூண்டலை உள்ளமைக்கவும்

வொர்க்கர் லாம்டா செயல்பாட்டிற்கு ஒரு SQS தூண்டலைச் சேர்க்கவும். இது SQS வரிசையில் ஒரு புதிய செய்தி சேர்க்கப்படும்போதெல்லாம் வொர்க்கர் லாம்டா செயல்பாட்டை தானாகவே தூண்டும்.

இந்த எடுத்துக்காட்டு, AWS சேவைகளைப் பயன்படுத்தி பின்னணிப் பணிகளைத் திட்டமிடுவதற்கும் செயலாக்குவதற்கும் ஒரு சர்வர்லெஸ் அணுகுமுறையைக் காட்டுகிறது.

வரிசைச் செயலாக்கத்திற்கான சிறந்த நடைமுறைகள்

வலுவான மற்றும் நம்பகமான வரிசைச் செயலாக்க அமைப்புகளை உருவாக்க, பின்வரும் சிறந்த நடைமுறைகளைக் கருத்தில் கொள்ளவும்:

பல்வேறு தொழில்துறைகளில் பயன்பாட்டு வழக்குகள்

வரிசைச் செயலாக்கம் பரந்த அளவிலான தொழில்கள் மற்றும் பயன்பாடுகளில் பயன்படுத்தப்படுகிறது. இதோ சில எடுத்துக்காட்டுகள்:

வரிசைச் செயலாக்கத்தின் எதிர்காலம்

வரிசைச் செயலாக்கம் என்பது ஒரு வளர்ந்து வரும் துறையாகும். வளர்ந்து வரும் போக்குகள் பின்வருமாறு:

முடிவுரை

பின்னணிப் பணிகள் மற்றும் வரிசைச் செயலாக்கம் ஆகியவை அளவிடக்கூடிய, நம்பகமான மற்றும் மறுமொழியளிக்கக்கூடிய பயன்பாடுகளை உருவாக்குவதற்கான அத்தியாவசிய நுட்பங்கள் ஆகும். முக்கிய கருத்துக்கள், தொழில்நுட்பங்கள் மற்றும் சிறந்த நடைமுறைகளைப் புரிந்துகொள்வதன் மூலம், உங்கள் பயன்பாடுகளின் குறிப்பிட்ட தேவைகளைப் பூர்த்தி செய்யும் வரிசைச் செயலாக்க அமைப்புகளை நீங்கள் வடிவமைத்து செயல்படுத்தலாம். நீங்கள் ஒரு சிறிய வலை பயன்பாட்டை உருவாக்கினாலும் அல்லது ஒரு பெரிய விநியோகிக்கப்பட்ட அமைப்பை உருவாக்கினாலும், வரிசைச் செயலாக்கம் செயல்திறனை மேம்படுத்தவும், நம்பகத்தன்மையை அதிகரிக்கவும் மற்றும் உங்கள் கட்டமைப்பை எளிமைப்படுத்தவும் உதவும். உங்கள் தேவைகளுக்கு சரியான செய்தி வரிசை தொழில்நுட்பத்தைத் தேர்வுசெய்து, உங்கள் வரிசைச் செயலாக்க அமைப்பு வலுவானதாகவும் திறமையாகவும் இருப்பதை உறுதிசெய்ய சிறந்த நடைமுறைகளைப் பின்பற்றவும்.