پروتکل MQTT
پروتکل MQTT یک پروتکل تبادل پیام سبک است که امکان ارتباط تجهیزات با منابع محاسباتی محدود با یکدیگر را به سادگی فراهم می سازد. این پروتکل از الگوی انتشار-اشتراک یا publish-subscribe بهره میبرد و به عنوان وسیلهای برای ارتباط ماشین با ماشین (M2M) نقش بسیار مهمی در دنیای اینترنت اشیاء ایفا می نماید.
اهداف پروتکل MQTT در بدو ایجاد آن به قرار زیر بود :
- سادگی پیادهسازی
- سبکی کم حجم بودن
- مناسب برای شبکههای ارتباطی ناپایدار و با پهنای باند کم
- اطمینان از ارسال و دریافت داده
ویژگی های کلیدی پروتکل MQTT
۱. MQTT یک پروتکل بسیار سبک و باینری (انتقال داده به صورت آرایه ای از بایت ها) بوده که برای انتقال داده با ضریب اطمینان بالا بین کلاینت های با منابع محدود بسیار بهتر از پروتکل های رایج در دنیای وب مثل HTTP می باشد. چرا که این پروتکل کمترین سربار بسته را دارد.
۲. به دلیل پیادهسازی ساده و کم حجم بودنش پروتکل بسیار مناسبی برای دیوایس های با منابع محاسباتی محدود (مثلاً لامپ های هوشمند شرکت نیلیگو) است که میخواهند با سایر دیوایس های دنیای اینترنت اشیاء تبادل اطلاعات داشته باشند.
مقایسه پروتکل MQTT و HTTP
برای درک بهتر این پروتکل در ادامه آن را با پروتکل HTTP مقایسه میکنیم. تفاوت اصلی این دو پروتکل در الگوی کاری آنها می باشد. همانطور که میدانید HTTP یک پروتکل request – response بین دو سمت است که یک سمت درنقش کلاینت و دیگری در نقش سرور عمل می کند. به این صورت که کلاینت درخواست خود را به سرور ارسال کرده و سرور پس از دریافت و پردازش آن پاسخی را به کلاینت ارسال می کند. در حین این عمل باید خط ارتباطی بین سرور و کلاینت حفظ شود. در غیر این صورت این ارتباط از بین میرود.
پروتکل MQTT برای رفع مشکل فوق الگوی request – response را به الگوی publish-subscribe تبدیل کرده است. به این صورت که دو کلاینت به صورت مستقیم به یکدیگر متصل نبوده و ارتباط بین آنها از طریق یک بروکر (واسط یا همان سرور) برقرار میشود.
مزایای الگوی publish – subscribe در پروتکل MQTT
دو سمت فرستنده و گیرنده ی داده مستقل از هم بوده و به وجود یا عدم وجود هم وابسته نیستند و درواقع ذاتاً هیچگونه اطلاعاتی از ماهیت یکدیگر ندارند.
مستقل بودن فرستنده و گیرنده ی داده باعث افزایش قابلیت اطمینان کل سیستم می شود. چرا که با قطع ارتباط یک کلاینت تنها یکی از شاخههای متصل به بروکر قطع شده ولی سیستم همچنان به کار خود ادامه می دهد.
– در پروتکل MQTT نیاز نیست که همواره خط ارتباطی بین کلاینت و بروکر برقرار نگه داشته شود و کافیست تنها در زمان نیاز به مخابره داده این اتصال برقرار شود. مثلاً در صورت قطع ارتباط یک کلاینت گیرنده با بروکر همچنان امکان برقراری مجدد این ارتباط و دریافت داده از سمت فرستنده وجود دارد و کلاینت ارسال کننده ی داده نیز میتواند پس از ارسال داده به بروکر ارتباط خود با بروکر را قطع کند. فواید این قطع ارتباط میتواند بالا بردن ضریب امنیت و کمتر مصرف شدن توان در آن کلاینت (مثلاً باتری گوشی های هوشمند) باشد. این موضوع در کنار سبکی این پروتکل فواید زیادی دارد که مثلاً میتوان به مصرف کمتر باتری در گوشی های هوشمند و مناسب بودن آن برای شبکههای اجتماعی پیام رسان اشاره کرد.
MQTT پروتکلی داده محور بوده درحالیکه HTTP پروتکلی اسناد محور است. به این معنی که برای انتقال اسناد (فیلم – تصویر و …) و وب سرویس ها پروتکل HTTP مناسب بوده و برای مخابره پیامهای کوتاه MQTT مناسب است.
مطابق اندازهگیری های انجام شده در شبکههای 3G این پروتکل ۹۳ بار سریعتر از پروتکل HTTP است. به عنوان مثال شرکت Facebook اخیراً در پیام رسان خود از پروتکل MQTT استفاده نموده است. دلیل این امر نه تنها حفظ شارژ باتری ها در هنگام مبادله پیام بلکه امکان تبادلی سریع و مؤثر پیام علیرغم نااطمینانی های موجود در شبکه اینترنت می باشد. وب سرویس های آمازون (AWS) نیز از پروتکل MQTT در کنار HTTP پشتیبانی میکند تا امکان اتصال اشیای IOT نیز به کلود فراهم گردد.
پروتکل MQTT به واسطه ویژگی کیفیت سرویس یا Quality Of Service با ضریب اطمینان بالایی تحویل داده به گیرنده را تضمین میکند و بنابراین برای شبکههای ناپایدار مناسب است.
MQTT دارای سرپیام بسیار کوتاه و نیز کوچکترین بسته ی پیام به اندازه ۲ کیلوبایت می باشد. درحالیکه پروتکل HTTP با استفاده از فرمت پیام متنی قادر به ارسال سرپیام ها و پیامهای طولانی می باشد. این موضوع در پروتکل MQTT باعث میشود انسان بتواند پیامها را بخواند و از طرفی همین میزان حجم از پیام عموما پاسخگوی مخابره اطلاعات بین دیوایس های با منابع محدود دنیای اینترنت اشیاء می باشد.
در انتهای میتوان گفت پروتکل MQTT برای انتقال دادههای کم حجم روش شبکههای ناپایدار و در شرایطی که زمان پاسخ دهی مصرف کمتر باتری و پهنای باند و بازدهی در اولویت هستند مناسب است.