ভিন্ন ভিন্ন ভাষার মধ্যে Thrift ব্যবহার করে যোগাযোগ
Apache Thrift একটি শক্তিশালী ফ্রেমওয়ার্ক যা বিভিন্ন প্রোগ্রামিং ভাষার মধ্যে RPC (Remote Procedure Call) যোগাযোগ সক্ষম করে। এটি একাধিক ভাষায় সার্ভিস এবং ক্লায়েন্ট তৈরি করতে এবং তাদের মধ্যে ডেটা বিনিময় করতে সাহায্য করে। নিচে ভিন্ন ভিন্ন ভাষার মধ্যে Thrift ব্যবহার করে যোগাযোগের প্রক্রিয়া এবং উদাহরণ আলোচনা করা হলো।
প্রক্রিয়া
Thrift IDL ফাইল তৈরি করুন:
- প্রথমে একটি Thrift IDL ফাইল তৈরি করুন যেখানে সার্ভিস এবং ডেটা টাইপগুলি সংজ্ঞায়িত করা হবে।
Thrift কম্পাইলার ব্যবহার করে কোড জেনারেট করুন:
- Thrift IDL ফাইল থেকে বিভিন্ন ভাষার জন্য কোড জেনারেট করুন।
সার্ভার এবং ক্লায়েন্ট বাস্তবায়ন:
- সার্ভারটি একটি ভাষায় এবং ক্লায়েন্টটি অন্য ভাষায় বাস্তবায়ন করুন। উভয়ই Thrift লাইব্রেরি ব্যবহার করবে।
সার্ভার চালান এবং ক্লায়েন্ট সংযুক্ত করুন:
- সার্ভারটি চালু করুন এবং ক্লায়েন্টের মাধ্যমে সার্ভারের সাথে যোগাযোগ করুন।
উদাহরণ: Java সার্ভার এবং Python ক্লায়েন্ট
১. Thrift IDL ফাইল তৈরি করা
ফাইল নাম: example.thrift
namespace java example // Java namespace
namespace py example // Python namespace
service CalculatorService {
i32 add(1: i32 num1, 2: i32 num2),
i32 subtract(1: i32 num1, 2: i32 num2)
}
২. কোড জেনারেশন
Java এবং Python কোড জেনারেট করতে Thrift কম্পাইলার চালান:
thrift --gen java example.thrift
thrift --gen py example.thrift
৩. সার্ভার বাস্তবায়ন (Java)
ফাইল নাম: CalculatorServer.java
import org.apache.thrift.TException;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;
public class CalculatorServer {
public static class CalculatorServiceHandler implements CalculatorService.Iface {
@Override
public int add(int num1, int num2) {
return num1 + num2;
}
@Override
public int subtract(int num1, int num2) {
return num1 - num2;
}
}
public static void main(String[] args) {
try {
CalculatorServiceHandler handler = new CalculatorServiceHandler();
CalculatorService.Processor<CalculatorServiceHandler> processor = new CalculatorService.Processor<>(handler);
TServerSocket serverTransport = new TServerSocket(9090);
TServer server = new TSimpleServer(processor, serverTransport);
System.out.println("Starting the Java server...");
server.serve();
} catch (TTransportException e) {
e.printStackTrace();
}
}
}
৪. ক্লায়েন্ট বাস্তবায়ন (Python)
ফাইল নাম: calculator_client.py
from thrift import Thrift
from thrift.transport import TTransport
from thrift.transport import TSocket
from thrift.protocol import TBinaryProtocol
from example import CalculatorService
def main():
transport = TSocket.TSocket('localhost', 9090)
tfactory = TTransport.TBufferedTransportFactory()
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
transport = tfactory.getTransport(transport)
protocol = pfactory.getProtocol(transport)
client = CalculatorService.Client(protocol)
try:
transport.open()
num1 = 10
num2 = 5
print("Add:", client.add(num1, num2))
print("Subtract:", client.subtract(num1, num2))
finally:
transport.close()
if __name__ == '__main__':
main()
৫. সার্ভার চালান
Java সার্ভারটি চালান:
javac -cp "thrift-0.14.1.jar" CalculatorServer.java
java -cp ".:thrift-0.14.1.jar" CalculatorServer
৬. ক্লায়েন্ট চালান
Python ক্লায়েন্টটি চালান:
python calculator_client.py
সারসংক্ষেপ
এই উদাহরণের মাধ্যমে, আপনি দেখেছেন কিভাবে Thrift ব্যবহার করে ভিন্ন ভিন্ন প্রোগ্রামিং ভাষার মধ্যে যোগাযোগ স্থাপন করা যায়। Java সার্ভার এবং Python ক্লায়েন্ট একটি Thrift IDL ফাইল ব্যবহার করে যোগাযোগ করছে, যেখানে সার্ভিস এবং মেথডগুলি স্পষ্টভাবে সংজ্ঞায়িত করা হয়েছে। Thrift-এর মাধ্যমে একটি প্ল্যাটফর্ম-নিরপেক্ষ যোগাযোগ ব্যবস্থা তৈরি করা সম্ভব, যা আধুনিক সফটওয়্যার উন্নয়নে খুবই কার্যকরী।
Read more