Thrift ব্যবহার করে Cross-Language RPC কল করা
Apache Thrift বিভিন্ন প্রোগ্রামিং ভাষার মধ্যে RPC (Remote Procedure Call) যোগাযোগ সহজ করে। নিচে Thrift ব্যবহার করে বিভিন্ন ভাষার মধ্যে RPC কল করার প্রক্রিয়া এবং উদাহরণ দেওয়া হলো।
পদক্ষেপ ১: Thrift IDL ফাইল তৈরি করা
প্রথমে একটি Thrift IDL ফাইল তৈরি করুন। উদাহরণস্বরূপ, আমরা একটি Calculator.thrift ফাইল তৈরি করব।
namespace java calculator // Java namespace
namespace py calculator // Python namespace
service CalculatorService {
i32 add(1: i32 num1, 2: i32 num2),
i32 subtract(1: i32 num1, 2: i32 num2)
}
পদক্ষেপ ২: Thrift কম্পাইলার ব্যবহার করে কোড জেনারেট করা
Thrift IDL ফাইল থেকে কোড জেনারেট করতে Thrift কম্পাইলার ব্যবহার করুন। নিচের কমান্ডগুলি ব্যবহার করুন:
thrift --gen py Calculator.thrift
thrift --gen java Calculator.thrift
এটি Python এবং Java এর জন্য পৃথক কোড তৈরি করবে।
পদক্ষেপ ৩: Python ক্লায়েন্ট তৈরি করা
Python ক্লায়েন্ট কোড লিখুন। একটি নতুন ফাইল তৈরি করুন, client.py নামক।
from thrift import Thrift
from thrift.transport import TTransport
from thrift.transport import TSocket
from thrift.protocol import TBinaryProtocol
from calculator import CalculatorService
def main():
# Connect to the Java server
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("Python Client - Add:", client.add(num1, num2))
print("Python Client - Subtract:", client.subtract(num1, num2))
finally:
transport.close()
if __name__ == '__main__':
main()
পদক্ষেপ ৪: Java সার্ভার তৈরি করা
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) throws TException {
return num1 + num2;
}
@Override
public int subtract(int num1, int num2) throws TException {
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();
}
}
}
পদক্ষেপ ৫: সার্ভার এবং ক্লায়েন্ট চালানো
Java সার্ভার চালান:
- Java প্রোগ্রামটি কম্পাইল এবং চালাতে নিচের কমান্ডগুলি ব্যবহার করুন (Maven ব্যবহার করলে):
Python ক্লায়েন্ট চালান:
ফলাফল
ক্লায়েন্ট চলাকালীন, Python ক্লায়েন্ট Java সার্ভারের সাথে সংযুক্ত হয়ে দুটি সংখ্যা (১০ এবং ৫) যোগ এবং বিয়োগ করবে এবং ফলাফল প্রদর্শন করবে।
সারসংক্ষেপ
এই পদক্ষেপগুলি অনুসরণ করে, আপনি Thrift ব্যবহার করে Cross-Language RPC কল তৈরি করেছেন। Java সার্ভার এবং Python ক্লায়েন্ট একটি Thrift IDL ফাইল ব্যবহার করে একে অপরের সাথে যোগাযোগ করছে। Thrift এর মাধ্যমে বিভিন্ন প্রোগ্রামিং ভাষার মধ্যে কার্যকরী যোগাযোগ স্থাপন করা সম্ভব, যা আধুনিক সফটওয়্যার আর্কিটেকচারের জন্য খুবই কার্যকরী।
Read more