Apache Thrift ব্যবহার করে সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগের প্রক্রিয়া খুবই কার্যকরী। নিচে একটি উদাহরণ সহ সার্ভার এবং ক্লায়েন্টের মধ্যে কিভাবে যোগাযোগ স্থাপন করা যায় তা বিশ্লেষণ করা হলো।
১. IDL ফাইল তৈরি করা
প্রথমে একটি Thrift IDL (Interface Definition Language) ফাইল তৈরি করুন, যেখানে সার্ভিস এবং মেথডগুলি সংজ্ঞায়িত থাকবে।
example.thrift:
namespace py example
service ExampleService {
string sayHello(1:string name)
}
২. Thrift Compiler ব্যবহার করে কোড জেনারেট করা
Thrift কমান্ড ব্যবহার করে IDL ফাইল থেকে ক্লায়েন্ট এবং সার্ভার কোড জেনারেট করুন। নিচে Python ভাষার জন্য উদাহরণ দেওয়া হলো:
thrift --gen py example.thrift
এই কমান্ডটি gen-py নামে একটি ডিরেক্টরি তৈরি করবে, যেখানে Python কোড জেনারেট হবে।
৩. সার্ভার কোড তৈরি করা
সার্ভার প্রোগ্রাম তৈরি করুন যা ক্লায়েন্টের অনুরোধ গ্রহণ করবে এবং সঠিকভাবে প্রক্রিয়া করবে।
server.py:
from thrift import Thrift
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer
from example import ExampleService
class ExampleServiceHandler:
def sayHello(self, name):
return f"Hello, {name}!"
handler = ExampleServiceHandler()
processor = ExampleService.Processor(handler)
transport = TTransport.TServerSocket(port=9090)
tfactory = TTransport.TBufferedTransportFactory()
pfactory = TBinaryProtocol.TBinaryProtocolFactory()
server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
print("Starting the server...")
server.serve()
৪. ক্লায়েন্ট কোড তৈরি করা
ক্লায়েন্ট প্রোগ্রাম তৈরি করুন যা সার্ভারের সাথে সংযোগ স্থাপন করবে এবং অনুরোধ পাঠাবে।
client.py:
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from example import ExampleService
def main():
# সার্ভারের সাথে সংযোগ স্থাপন করুন
transport = TSocket.TSocket("localhost", 9090)
tfactory = TTransport.TBufferedTransportFactory()
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ExampleService.Client(protocol)
try:
# সার্ভারের সাথে সংযোগ করুন
transport.open()
# RPC কল করুন
name = "World"
response = client.sayHello(name)
print(response) # সার্ভারের কাছ থেকে প্রাপ্ত ফলাফল প্রদর্শন করুন
except Thrift.TException as tx:
print(f"Thrift exception: {tx.message}")
finally:
# সংযোগ বন্ধ করুন
transport.close()
if __name__ == "__main__":
main()
৫. সার্ভার এবং ক্লায়েন্ট চালানো
সার্ভার চালানো: প্রথমে সার্ভার চালু করুন।
python server.py
ক্লায়েন্ট চালানো: সার্ভার চালু থাকার পর ক্লায়েন্ট চালান।
python client.py
সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগের প্রক্রিয়া
- সার্ভার শুরু হয়: সার্ভার
9090পোর্টে ক্লায়েন্টের জন্য শোনে। - ক্লায়েন্ট সংযোগ করে: ক্লায়েন্ট সার্ভারের সাথে TCP/IP সংযোগ স্থাপন করে।
- RPC কল: ক্লায়েন্ট
sayHelloমেথড কল করে এবং নাম (যেমন "World") পাঠায়। - সার্ভার প্রক্রিয়া করে: সার্ভার অনুরোধ গ্রহণ করে এবং ক্লায়েন্টকে সাড়া দেয়।
- ফলাফল ফেরত পাঠানো: সার্ভার ফলাফল (যেমন "Hello, World!") ক্লায়েন্টকে ফেরত পাঠায়।
- ক্লায়েন্ট ফলাফল প্রদর্শন করে: ক্লায়েন্ট প্রাপ্ত ফলাফল কনসোলে প্রদর্শন করে।
উপসংহার
Apache Thrift ব্যবহার করে সার্ভার এবং ক্লায়েন্টের মধ্যে যোগাযোগ স্থাপন করা খুবই সহজ এবং কার্যকর। এই উদাহরণে, Thrift IDL ফাইল ব্যবহার করে সার্ভিস এবং মেথড সংজ্ঞায়িত করা হয়েছে, এবং সেই অনুযায়ী সার্ভার ও ক্লায়েন্ট কোড তৈরি করা হয়েছে। Thrift এর মাধ্যমে একাধিক প্রোগ্রামিং ভাষার মধ্যে কার্যকরী যোগাযোগ নিশ্চিত করা হয়, যা ডিস্ট্রিবিউটেড সিস্টেমে উপকারী।
Read more