MQTT (MQ Telemetry Transport) এবং HTTP (Hypertext Transfer Protocol) - এই দুটি প্রোটোকলের পার্থক্য বোঝার আগে তাদের ধারণা জানা দরকার।
HTTP (Hypertext Transfer Protocol)
HTTP আজ পৃথিবীর সবচেয়ে ব্যাপকভাবে ব্যবহৃত অ্যাপ্লিকেশন লেয়ার প্রোটোকল। এটি ওয়ার্ল্ড واাইড ওয়েবের ভিত্তি। এর উদ্দেশ্য হলো HTML এবং অন্যান্য ডকুমেন্ট ওয়েব থেকে রিট্রিভ করার জন্য একটি লাইটওয়েট প্রোটোকল প্রদান করা। আপনি যখন ব্রাউজার খুলেন, তখন HTTP over TCP/IP ব্যবহার করেন।
বেসিক HTTP পেজ রিট্রিভাল প্রক্রিয়া
- ক্লায়েন্ট ওয়েব সার্ভারে পেজের জন্য রিকোয়েস্ট পাঠায়।
- সার্ভার রিকোয়েস্ট বিশ্লেষণ করে HTML কোডসহ একনলেজমেন্ট পাঠায়।
- ক্লায়েন্ট HTML ইন্টারপ্রেট করে পেজ তৈরি শুরু করে।
- পরবর্তী রিকোয়েস্টগুলিতে এমবেডেড অবজেক্ট (ইমেজ, মাল্টিমিডিয়া) রিট্রিভ করা হয়।
MQTT (MQ Telemetry Transport)
MQTT সিস্টেমে ক্লায়েন্টরা একটি সার্ভারের সাথে যোগাযোগ করে যাকে "ব্রোকার" বলা হয়। ক্লায়েন্ট হতে পারে পাবলিশার (তথ্য পাবলিশ করে) বা সাবস্ক্রাইবার (তথ্য গ্রহণ করে)। প্রতিটি ক্লায়েন্ট ব্রোকারের সাথে সংযুক্ত থাকে।
- তথ্য টপিকের হায়ারার্কি অনুযায়ী সংগঠিত থাকে।
- পাবলিশার নতুন ডেটা ব্রোকারকে পাঠায়, ব্রোকার সেটি সম্পর্কিত সাবস্ক্রাইবারদের কাছে ফোরওয়ার্ড করে।
- পাবলিশারকে সাবস্ক্রাইবারদের সংখ্যা বা লোকেশন জানার দরকার নেই (ডিকাপলড আর্কিটেকচার)।
- MQTT কন্ট্রোল মেসেজ ন্যূনতম ২ বাইটের হতে পারে, সর্বোচ্চ ২৫৬ MB ডেটা বহন করতে পারে।
- ১৪ ধরনের মেসেজ টাইপ রয়েছে (কানেক্ট, ডিসকানেক্ট, পাবলিশ, একনলেজমেন্ট ইত্যাদি)।
- TCP প্রোটোকলের উপর ভিত্তি করে তৈরি, UDP বা ব্লুটুথের জন্য MQTT-SN ভেরিয়েন্ট রয়েছে।
প্রধান পার্থক্যগুলো
| বিষয় | HTTP | MQTT |
|---|---|---|
| আর্কিটেকচার | রিকোয়েস্ট-রেসপন্স (ক্লায়েন্ট-সার্ভার) | পাবলিশ/সাবস্ক্রাইব (ইভেন্ট-ড্রাইভেন) |
| কানেকশন | প্রতি রিকোয়েস্টে নতুন কানেকশন (HTTP/1.1-এ কিপ-আলাইভ) | স্থায়ী TCP কানেকশন |
| হেডার ওভারহেড | উচ্চ (ভারী হেডার) | ন্যূনতম (২ বাইট মিনিমাম) |
| ব্যবহার ক্ষেত্র | ওয়েব ব্রাউজিং, REST API, ডকুমেন্ট ট্রান্সফার | IoT, রিয়েল-টাইম মেসেজিং, সেন্সর ডেটা, মোবাইল নেটওয়ার্ক |
| কোয়ালিটি অফ সার্ভিস (QoS) | না (টিসিপি নির্ভর) | হ্যাঁ (QoS 0, 1, 2) |
উপসংহার: HTTP ডকুমেন্ট-সেন্ট্রিক ওয়েবের জন্য আদর্শ, MQTT লাইটওয়েট, রিয়েল-টাইম, ব্যান্ডউইথ-সেনসিটিভ IoT অ্যাপ্লিকেশনের জন্য।