Apache Thrift সার্ভার হল একটি গুরুত্বপূর্ণ উপাদান যা ক্লায়েন্টের রিমোট প্রোসিজার কল (RPC) গ্রহণ করে এবং প্রয়োজনীয় পরিষেবা প্রদান করে। Thrift সার্ভারের কাজের প্রক্রিয়া মূলত একটি নির্দিষ্ট সার্ভিসের কার্যক্রম বাস্তবায়ন এবং ক্লায়েন্টের অনুরোধের ভিত্তিতে তথ্যের প্রক্রিয়াকরণ নিয়ে গঠিত। নিচে Thrift সার্ভার কীভাবে কাজ করে তা বিস্তারিতভাবে আলোচনা করা হলো।
Thrift সার্ভার কাজ করার প্রক্রিয়া
১. সার্ভিস সংজ্ঞায়িত করা
- IDL ফাইল: প্রথমে একটি Thrift IDL (Interface Definition Language) ফাইল তৈরি করতে হয়, যেখানে সার্ভিসের নাম, মেথড এবং ডেটা টাইপগুলি সংজ্ঞায়িত করা হয়। উদাহরণস্বরূপ:
namespace py example
service ExampleService {
string sayHello(1:string name)
}
২. Thrift Compiler ব্যবহার করে কোড জেনারেট করা
- Thrift IDL ফাইলের মাধ্যমে সার্ভিসের জন্য কোড জেনারেট করার জন্য Thrift Compiler ব্যবহার করা হয়।
thrift --gen py example.thrift
- এই কমান্ডটি Python ভাষায় সার্ভিসের জন্য ক্লায়েন্ট এবং সার্ভার কোড জেনারেট করবে।
৩. সার্ভিস ইমপ্লিমেন্টেশন
- সার্ভার ইমপ্লিমেন্টেশন: জেনারেটেড কোড ব্যবহার করে সার্ভিসের কার্যক্রম বাস্তবায়ন করতে হয়। যেমন:
from example import ExampleService
from thrift import Thrift
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer
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()
৪. সার্ভার চালানো
- সার্ভার কোড সম্পন্ন হলে, এটি শুরু করতে হয়। উপরোক্ত কোডের মাধ্যমে সার্ভারটি 9090 পোর্টে শুরু হবে এবং ক্লায়েন্টের অনুরোধগুলি গ্রহণ করবে।
৫. ক্লায়েন্টের অনুরোধ
- ক্লায়েন্ট: ক্লায়েন্ট প্রোগ্রাম Thrift-এ সংজ্ঞায়িত সার্ভিসের মেথড কল করে। উদাহরণস্বরূপ:
from example import ExampleService
from thrift import Thrift
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
transport = TTransport.TBufferedTransport(TTransport.TSocket("localhost", 9090))
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = ExampleService.Client(protocol)
transport.open()
response = client.sayHello("World")
print(response)
transport.close()
৬. অনুরোধ প্রক্রিয়াকরণ
- ক্লায়েন্ট যখন
sayHelloমেথড কল করে, এটি সার্ভারে পৌঁছে যায়। সার্ভার সেই কল গ্রহণ করে এবংExampleServiceHandlerক্লাসে সংজ্ঞায়িত কার্যক্রম অনুযায়ী কাজ করে।
৭. ফলাফল ফেরত পাঠানো
- সার্ভার ক্লায়েন্টের জন্য ফলাফল (যেমন "Hello, World!") ফিরিয়ে দেয়, যা ক্লায়েন্টে প্রদর্শিত হয়।
উপসংহার
Thrift সার্ভার একটি কার্যকরী উপাদান যা ক্লায়েন্টের অনুরোধগুলি প্রক্রিয়া করে এবং সঠিক ফলাফল প্রদান করে। এটি IDL ফাইল থেকে কোড জেনারেশন, সার্ভিস ইমপ্লিমেন্টেশন, এবং RPC কল পরিচালনার মাধ্যমে কাজ করে। Thrift সার্ভারগুলি ডিস্ট্রিবিউটেড সিস্টেমে যোগাযোগের জন্য একটি শক্তিশালী এবং নমনীয় সমাধান প্রদান করে, যা বিভিন্ন প্রোগ্রামিং ভাষার মধ্যে কার্যকরী যোগাযোগ নিশ্চিত করে।
Read more