system-design-bangla

Polling এর টাইপ

Short Polling

এটি এক প্রকারের Polling, যেখানে ক্লায়েন্ট একটি সময় পর পর সার্ভারকে রিকোয়েস্ট করবে সার্ভার সেই রিকোয়েস্ট এর রেসপন্স করবে, সার্ভারের কাছে যদি সেই ডেটার রেসপন্স না থাকে তাহলে empty response পাঠাবে।

short-polling

Long Polling

এখানে ক্লায়েন্ট একটি সময় পর পর সার্ভারকে রিকোয়েস্ট করবে সার্ভার সেই রিকোয়েস্ট এর রেসপন্স করবে, এখন যদি সার্ভার এর কাছে রেসপন্স না থাকে তাহলে সার্ভার একটি নির্দিষ্ট সময় অপেক্ষা করবে নির্দিষ্ট সময়ের ভিতর সার্ভারে ডেটা আসে তাহলে ডেটা সার্ভার রেসপন্স আকারে ক্লায়েন্ট কে দিয়ে দিবে না হয় অপারেশন Timeout হয়ে যাবে,তখন ক্লায়েন্ট আবার নির্দিষ্ট সময় পর সার্ভারকে রিকোয়েস্ট করবে।

long-polling

Web Socket কিভাবে কাজ করে?

Web Socket একটি single TCP কানেকশন এর মাধ্যমে তৈরী হওয়া Bidirectional Communication Protocol। প্রসেস শুরু হয়,

Web Socket এর সীমাবদ্ধতা

আপনি WebSocket ব্যবহার করে একটি চ্যাট অ্যাপ তৈরি করেছেন, যেখানে A এবং B নিজেদের মধ্যে চ্যাট করছে। যদি B-এর ইন্টারনেট সংযোগ বিচ্ছিন্ন হয়ে যায়, তাহলে কি চ্যাট স্বয়ংক্রিয়ভাবে নিষ্ক্রিয় হয়ে যাবে?

হ্যাঁ, যখন ইন্টারনেট সংযোগ বিচ্ছিন্ন হয়, তখন এটি ‘close’ ইভেন্ট ট্রিগার করবে।

আপনি এমন একটি মেকানিজম তৈরি করতে পারেন, যাতে A জানতে পারে যে B সংযোগ বিচ্ছিন্ন হয়েছে।

ধরুন A বার্তা পাঠিয়ে যাচ্ছে(B-এর ইন্টারনেট নাই), কিন্তু যদি কিছু সময় B-এর ইন্টারনেট পুনরায় চালু হয়, তাহলে B কী মেসেজগুলো পাবে যা A তাকে পাঠিয়েছিল যখন B-এর ইন্টারনেট বন্ধ ছিল?

B বার্তাগুলো সাথে সাথে পাবে না, যদি না সে chat page রিফ্রেশ করে বা ক্লায়েন্ট-সাইড লজিকে স্বয়ংক্রিয়ভাবে WebSocket সার্ভারের সাথে পুনরায় সংযোগ স্থাপনের ব্যবস্থা করা হয়।

এটাই(সাথে সাথে মেসেজ না পাওয়া) WebSocket এর সীমাবদ্ধতা।

Server-Sent Events

Server-Sent Events (SSE) হলো একটি একমুখী communication মাধ্যম, যেখানে ডাটা শুধুমাত্র সার্ভার → ক্লায়েন্ট এ পাঠানো হয় এবং এটি HTTP এর উপর কাজ করে।

যা WebSocket-এর থেকে আলাদা, এখানে communication single direction-এ হয় (অর্থাৎ শুধু সার্ভার → ক্লায়েন্ট দিকেই হয়), অপরদিকে WebSocket Bidirectional Communication করে।

রিয়েল-টাইম নোটিফিকেশন, রিয়েল-টাইম ড্যাশবোর্ড, লগ, মনিটরিং ইত্যাদির জন্য Server-Sent Events effective।

sse

Pooling আমরা Application লেভেল এ কোড করে ইম্প্লিমেনট করতে পারি, কিন্তু WebSocket একটি প্রোটোকল এর ইমপ্লিমেন্টেশন ভিন্ন। SSE কোনো protocol না, বরং HTTP এর উপর ভিত্তি করে একটা স্ট্যান্ডার্ড টেকনিক (Content-Type: text/event-stream)।

Webhooks

এটি দ্বারা মূলত আমাদের তৈরী সিস্টেমে অন্য কোনো external সিস্টেম থেকে স্বয়ংক্রিয়ভাবে নোটিফিকেশন আসে যখন অন্য সিস্টেমে কোনো ইভেন্ট ট্রিগার হয়।

উদাহরণস্বরূপ, যদি একটি পেমেন্ট গেটওয়ে (যেমন, Stripe) এ কোনো পেমেন্ট সফল হয়, তাহলে তা আপনার সিস্টেমে Webhook-এর মাধ্যমে নোটিফিকেশন পাঠাতে পারে।

সংক্ষেপে, Webhook হলো একটি Event-driven পদ্ধতি, যা দুটি সিস্টেমের মধ্যে (semi) রিয়েল-টাইম ডেটা আদান-প্রদান সহজ করে।

Pooling এ আপনার সিস্টেম অন্য সিস্টেমকে বারবার জিজ্ঞাসা করতে থাকে। Webhook এ অন্য সিস্টেম নিজে আপনার সিস্টেমকে নোটিফাই করবে, সেই সিস্টেমে কোনো ইভেন্ট সফল হয়।

Webhook কে semi real-time বলা হয়। কারণ webhook এ কোনো নিশ্চয়তা থাকে না যে নোটিফিকেশন instantly হবে।