پروتکل MQTT چیست؟ هدف از طراحی آن چیست؟

0 43
۵/۵ - (۲ امتیاز)

فهرست

توسعه و رشد روزافزون اینترنت اشیا (IoT) از یک طرف هوشمندی و سادگی بسیاری از فعالیت ها را به ارمغان آورده و از طرف دیگر چالش هایی برای نگهداری و عملکرد آن ها نیز به وجود آورده است. چالش های اینترنت اشیا در زمینه های متنوعی قبل بحث است. یکی از موضوعاتی که در اینترنت اشیا مطرح می شود مساله ارتباط و چگونگی آن است. طبیعی است به دلیل اینکه موجودیت های حاضر در یک شبکه از اشیا دارای توان پردازشی و قدرت بالایی نیستند نمی توان از هر فناوری ای که مثلا در ارتباط بین کامپیوترهای بزرگ استفاده شده است استفاده کرد و بنابراین باید راهکارهایی ایجاد شوند که نیازمندی های این شبکه از اشیا را تامین کند. یکی از پروتکل هایی که برای ارتباط بین اشیا در یک شبکه طراحی شده است، پروتکل Message Queuing Telemetry Transport یا MQTT است. در این مقاله به بررسی این پروتکل می پردازیم.

هدف از طراحی و الگوی مورد استفاده در پروتکل MQTT

پروتکل MQTT در سال ۱۹۹۹ توسط اندی استنفورد کلارک (Andy Stanford-Clark) و ارلن نیپر (Arlen Nipper) در IBM طراحی شد. MQTT یک پروتکل ارتباطی بین ماشینی Machine-to-Machine (m2m) سبک و طراحی شده برای اینترنت اشیا می باشد. بهتر است بگوییم مورد کاربرد آن برای اینترنت اشیا بسیار ایده آل است. MQTT یک پروتکل تبادل پیام انتشار-اشتراک یا Publisher-Subscriber است. از آنجا که نمی توان در یک شبکه اینترنت اشیا لزوما انتظار پهنای باند (Bandwidth) بالا داشت، این پروتکل می توان در شرایطی که با محدودیت پهنای باند مواجه هستیم به خوبی عمل کند. عموما MQTT را روی TCP/IP پیاده سازی می کنند اما این یک الزام نیست و هر پروتکل شبکه که مرتب، دو طرفه و بدون گمشدگی باشد می تواند از آن پشتیبانی کند. منظور از مرتب این است که بسته ها به ترتیب ارسال و دریافت شوند.

ویژگی های پروتکل MQTT

پروتکل MQTT دارای ویژگی هایی است که این ویژگی ها را کمتر می توان در پروتکل های دیگر یافت. در این بخش به معرفی ویژگی های این پروتکل می پردازیم.

  • پروتکل MQTT یک پروتکل بین ماشینی یا Machine-to-Machine (m2m) است که می تواند ارتباط بین دستگاه ها را فراهم آورد
  • پروتکل MQTT یک پروتکل ساده و سبک است که از الگوی پیامی انتشار-اشتراک یا Publisher-Subscriber برای تبادل پیام بین مولفه ها استفاده می کند
  • در ارتباط بین دو دستگاه لازم نیست هر دو دستگاه به صورت همزمان ارتباط را برقرار کنند (برای مثال پست الکترونیکی را در نظر بگیرید که لازم نیست فرستنده و گیرنده همزمان حضور داشته باشند)
  • پروتکل MQTT یک پروتکل بلادرنگ است و عمل انتقال داده را بسیار سریع انجام می دهد
  • پروتکل MQTT از الگویی پیروی می کند که به کاربران امکان انتخاب محدوده موضوعات مورد علاقه را می دهد که بتوانند تنها در آن محدوده اطلاعات را دریافت کنند (برای مثال اگر شما به بخش تکنولوژی یک وب سایت علاقمند باشید مجبور نیستید درگیر مطالب سیاسی یا اجتماعی هم شوید)
  • پروتکل MQTT مقایس پذیری شبکه را بهبود می بخشد و این موضوع باعث می شود بتوان شبکه ای از میلیون ها شئ را مدیریت کرد.

معماری پروتکل MQTT

برای درک معماری پروتکل MQTT بهتر است ابتدا به مولفه هایی که این پروتکل با آن ها درگیر است بپردازیم. این مولفه ها عبارتند از: پیام (Message)، کاربر، مشتری یا سرویس گیرنده (Client)، خدمتگذار یا سرور (Server) یا دلال و واسط (Broker) و موضوع (Topic).

پیام (Message)

همانطور که از نام آن مشخص است، پیام داده ای است که توسط پروتکل از یک نقطه به نقطه دیگری حمل می شود. پیام شامل چند بخش است:

  • پیلود (Payload): که پیام اصلی درون بسته است
  • کیفیت سرویس (QoS): شامل پارامترهای کیفت سرویس
  • ویژگی های جانبی و کنترلی
  • شناسه موضوع (Topic)

کاربر، مشتری یا سرویس گیرنده (Client)

مشخص است که برنامه یا دستگاهی که ارتباط را شروع می کند به عنوان کاربر در نظر گرفته می شود. در پروتکل MQTT کاربر می تواند دو نقش داشته باشد: منتشر کنند (Publisher) و مشترک (Subscriber). بنابر این توضیحات مولفه کاربر می تواند:

  • ایجاد کننده ارتباط باشد
  • پیامی منتشر کند (هنگامی که کاربر پیامی به سرور ارسال می کند تا سایر کاربران مشترک در موضوع پیام از آن مطلع شوند می گوییم کاربر در نقش منتشر کننده یا Publisher ظاهر شده است)
  • برای پیامی در یک یا چند موضوع مشترک شود (هنگامی که کاربر در موضوعی که برای آن مشترک شده است پیامی دریافت کند می گوییم کاربر در نقش مشترک یا Subscriber ظاهر شده است)
  • از یک موضوع اشتراک خود را قطع کند
  • ارتباط ایجاد شده را تمام کند

خدمتگذار، سرور (Server)، دلال یا واسط (Broker)

برنامه یا دستگاهی که درخواست ها را دریافت کرده و آن ها را برای پاسخ پردازش می کند به عنوان سرور یا دلال (بروکر / Broker) در نظر گرفته می شود. می توان گفت بروکر اجازه اعمال مختلف را به کاربران می دهد. به کاربران اجازه انتشار یک پیام در یک موضوع را می دهد. اجازه مشترک شدن در یک موضوع را می دهد. درخواست های اشتراک و قطع اشتراک را پاسخ می گوید و به طور کلی برای کاربر شرایط رسیدن به اهدافش را فراهم می کند.

موضوع (Topic)

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

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

سخن پایانی

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

درباره ما

ترجنس | thregence.ir
آکادمی ترجنس | edu.thregence.ir
دوره‌های آکادمی ترجنس | courses.thregence.ir
اینستاگرام | instagram.com/thregence
تلگرام | t.me/thregence
یوتوب | https://bit.ly/30mGowo
آپارات | aparat.com/thregence

ارسال یک پاسخ