کلاینت و بروکر در پروتکل MQTT (جلسه سوم)

تاریخ انتشار : 2020/07/22

اهداف

در جلسه قبل با الگوی انتشار-اشتراک در پروتکل MQTT آشنا شدیم. فهمیدیم که این الگو یک جایگزینی برای الگوی سنتی مشتری-سرور بوده و به علت ویژگی هایی همچون سبک وزنی، نگهداری پیام و نیاز به پهنای باند کم یک گزینه ایده آل برای استفاده در پروتکل ارتباطی MQTT و در نهایت در کاربردهای اینترنت اشیا به شمار می رود. در این جلسه، با مفهوم کلاینت و بروکر در پروتکل MQTT بحث خواهیم کرد.

 

mqtt client and broker

کلاینت و بروکر در پروتکل MQTT

 

کلاینت (Client)

در سری آموزش های پروتکل MQTT هر زمان از کلاینت یا مشتری حرف میزنیم منظور همان کلاینت MQTT می باشد. هر دوی ناشر (Publisher) و سابسکرایبر (Subscriber) همان کلاینت هستند. کلاینت MQTT هر دستگاهی را شامل می شود (از یک میکروکنترلر گرفته تا یک سرور تمام عیار) که یک کتابخانه MQTT را اداره می کند و از طریق یک شبکه به یک بروکر MQTT متصل می شود. برای مثال، کلاینت MQTT می تواند یک دستگاه کوچک با منابع حافظه بسیار کم باشد که از یک کتابخانه MQTT با حداقل امکانات استفاده می کند. دستگاه های اینترنت اشیا همچون ماژول های سنجش دما که اطلاعات دما را جمع آوری کرده و از طریق پروتکل MQTT به سرور ارسال می کنند یک کلاینت MQTT به حساب می آیند. از طرفی، کلاینت MQTT می تواند یک رایانه باشد که برای اهداف آزمایشی از یک کلاینت گرافیکی استفاده می کند. اصولاً هر وسیله ای که MQTT را از طریق پشته TCP/IP صحبت کند، می تواند یک کلاینت MQTT نامیده شود. اجرای یک کلاینت در پروتکل MQTT بسیار سر راست و ساده می باشد. سهولت اجرا یکی از دلایلی است که پروتکل MQTT برای دستگاه های کوچک با منابع حافظه محدود (میکروکنترلرها) یک گزینه ایده آل به شمار می رود. کتابخانه های کلاینت MQTT برای طیف گسترده ای از زبان های برنامه نویسی همچون اندروید، آردوینو، سی، سی پلاس پلاس، سی شارپ، Go، آی او اس، جاوا، جاوا اسکریپت، و دات نت  در دسترس هستند. کتابخانه های مربوط به هر یک از این زبان ها در جلسات بعد مورد بررسی قرار خواهند گرفت. این بررسی شامل ایجاد ارتباط با بروکر، سابسکرایب کردن روی یک تاپیک، ارسال پیام بر روی تاپیک، نگهداری پیام، تنظیمات کیفیت خدمات (QoS) و غیره می باشد. در این لینک یک کلاینت MQTT در بستر websocket برای ارتباط با یک بروکر آزمایشی در دسترس می باشد.

 

بروکر (Broker)

بروکر در واقع قلب تپنده الگوی انتشار-اشتراک (pub-sub) در پروتکل MQTT می باشد. بسته به نوع پیکربندی، یک بروکر می تواند هزاران کلاینت MQTT را متصل نگه داشته و اداره کند. بروکر وظیفه دریافت کلیه پیام ها، فیلتر کردن پیام ها، تعیین اینکه کدام کلاینت به چه تاپیکی سابسکرایب کرده و ارسال پیام به کلاینت های مرتبط را بر عهده دارد. بروکر همچنین اطلاعات session همه کلاینت هایی که از session پایدار استفاده میکنند و همچنین پیام های از دست رفته را در اختیار دارد. وظیفه دیگر بروکر تایید اعتبار کلاینت ها می باشد. بروکر ها قابل توسعه می باشند و این قابلیت باعث می شود اعتبارسنجی دلخواه را در این سیستم ها پیاده کرده و با سیستم های بک اند دیگر ادغام کرد (از این طریق می توان سیستم های اینترنت اشیا همچون سیستم های کنترلی خانه هوشمند توسعه داد و امنیت کاربران و همچنین دستگاه های مورد استفاده را تامین کرد). قابلیت ادغام با سیستم های بک اند از این جهت مهم است که بروکر معمولا واسط بین پیام ها بوده و این پیام ها برای پردازش نیازمند به تجزیه و تحلیل در سیستم های پایین دستی می باشند. برای مثال، پیام ها از طریق بروکر ارسال و دریافت شده و با یک سیستم بک اند که میتواند توسط جنگو یا php توسعه داده شود تجزیه و تحلیل شده و در صورت نیاز در دیتابیس ذخیره گردند. هر پیام ارسالی در پروتکل MQTT به ناچار از بروکر گذر خواهد کرد و بنابراین، باید مطمئن شوید که بروکر شما از قابلیت اطمینان بالا، مقیاس پذیری، و قابلیت ادغام برخوردار باشد. 

 

نتیجه گیری

در این جلسه با مفاهیم کلاینت و بروکر در پروتکل MQTT آشنا شدیم. فهمیدیم که یک کلاینت می تواند هر دستگاهی باشد که از طریق کتابخانه های MQTT به یک بروکر متصل می شود. بروکر نیز قلب تپنده الگوی انتشار-اشتراک در پروتکل MQTT به شمار می رود که وظیفه دریافت کلیه پیام ها، فیلتر کردن پیام ها، تعیین اینکه کدام کلاینت به چه تاپیکی سابسکرایب کرده و ارسال پیام به کلاینت های مرتبط را بر عهده دارد. در جلسه بعد نحوه اتصال کلاینت به بروکر را بررسی خواهیم کرد. با ما همراه باشید.

برخی از مشتریان

لوگو شریف
لوگو آمد
لوگو شهرداری تهران
لوگو دانشگاه تهران
لوگو ساتکاپ
لوگو دانشگاه ارومیه
logofa