مقاله بروکرهای ام‌کیوتی‌تی | قسمت اول

بروکر چیست و در ارتباط میان دستگاه‌ها چه نقشی دارد

تصویر آغاز مقاله ـ نمایش مفهومی بروکر و تجهیزات متصل

تصویر آغاز مقاله ـ نمایش مفهومی بروکر و تجهیزات متصل

در یک سامانه اینترنت اشیا، دستگاه‌ها و نرم‌افزارهای مختلف باید با یکدیگر تبادل اطلاعات داشته باشند. سنسور، نتیجه اندازه‌گیری را ارسال می‌کند؛ نرم‌افزار نمایش، آن را به کاربر نشان می‌دهد؛ و کنترلر، فرمان لازم را برای تجهیزات دریافت می‌کند. بروکر، نرم‌افزاری است که دریافت و توزیع این پیام‌ها را میان دستگاه‌ها و برنامه‌های متصل مدیریت می‌کند.

بروکر می‌تواند روی یک رایانه محلی، سرور شرکت یا زیرساخت ابری اجرا شود. بنابراین، بروکر الزاماً یک دستگاه فیزیکی مستقل نیست و برای کارکردن نیز همیشه به اینترنت نیاز ندارد؛ ممکن است تمام ارتباط‌ها در شبکه داخلی یک ساختمان یا کارخانه انجام شوند.

در این قسمت، تمرکز بر جایگاه، وظایف و حدود مسئولیت بروکر است. شناخت این موضوع کمک می‌کند بدانیم در طراحی یک سامانه، چه انتظاری باید از بروکر داشته باشیم و کدام وظایف به تجهیزات و نرم‌افزارهای دیگر مربوط می‌شوند.

۱. چرا در اینترنت اشیا به بروکر نیاز داریم؟

یک مثال ساده: ارسال دما از گلخانه و دریافت فرمان روشن‌شدن فن

فرض کنید در یک گلخانه، سنسوری دما را اندازه‌گیری می‌کند. اطلاعات آن باید هم در تلفن همراه مدیر گلخانه نمایش داده شود، هم به نرم‌افزار ثبت اطلاعات برسد و هم در اختیار سامانه کنترل تهویه قرار گیرد.

در ارتباط مستقیم، فرستنده باید به شکلی برای رساندن اطلاعات به این دریافت‌کنندگان آماده شده باشد. با اضافه‌شدن یک برنامه جدید، ممکن است لازم شود تنظیمات یا نرم‌افزار بخش ارسال نیز تغییر کند.

بروکر یک نقطه مشترک برای تبادل پیام فراهم می‌کند. دستگاه اندازه‌گیری یا گیت‌وی، اطلاعات دما را به بروکر می‌فرستد و بروکر آن را به دریافت‌کنندگان مرتبط تحویل می‌دهد. اگر برنامه دیگری برای تحلیل مصرف انرژی اضافه شود، آن برنامه نیز می‌تواند با دسترسی مناسب، اطلاعات مورد نیازش را از بروکر دریافت کند.

برای فرمان‌دادن نیز همین مسیر برقرار است. برنامه گوشی، فرمان روشن‌شدن فن را به بروکر می‌فرستد و بروکر پیام را به کنترلر مربوط می‌رساند.

تفاوت ارتباط مستقیم دستگاه‌ها با ارتباط از طریق بروکر

مزیت اصلی این ساختار، کاهش وابستگی مستقیم میان فرستنده و گیرنده است. فرستنده لازم نیست آدرس و تعداد تمام دریافت‌کنندگان را بشناسد؛ بروکر توزیع پیام را بر عهده می‌گیرد. این ویژگی، افزودن دستگاه‌ها و برنامه‌های جدید را ساده‌تر می‌کند. 

در مقابل، بروکر به یکی از اجزای مهم زیرساخت تبدیل می‌شود. اگر تنها بروکر سامانه متوقف شود، تبادل پیام‌هایی که به آن وابسته‌اند نیز مختل خواهد شد. به همین دلیل، انتخاب محل استقرار و نگهداری آن اهمیت دارد.

شکل ۱ ـ نقش بروکر در توزیع پیام میان فرستنده‌ها و مشترکان

شکل ۱ ـ نقش بروکر در توزیع پیام میان فرستنده‌ها و مشترکان

۲. معنی واژه بروکر و تعریف آن در پروتکل

بروکر به معنای واسطه پیام

واژه بروکر به معنی «واسطه» یا «کارگزار» است. در پروتکل ام‌کیوتی‌تی، این واژه به برنامه‌ای گفته می‌شود که اتصال دستگاه‌ها و نرم‌افزارها را می‌پذیرد، پیام‌هایشان را دریافت می‌کند و آن‌ها را به دریافت‌کنندگان مربوط می‌رساند.

می‌توان بروکر را به مرکز توزیع مرسولات تشبیه کرد: فرستنده، مرسوله را همراه با اطلاعات لازم تحویل می‌دهد و مرکز توزیع، آن را به مقصد مناسب می‌رساند. البته مقصد در اینجا معمولاً بر اساس «موضوع پیام» و اشتراک دریافت‌کنندگان مشخص می‌شود، نه آدرس مستقیم یک دستگاه.

معرفی منتشرکننده، مشترک و موضوع پیام

برای شناخت کار بروکر، آشنایی با سه نقش کافی است:

• منتشرکننده: دستگاه یا برنامه‌ای که پیام را ارسال می‌کند.

• مشترک: دستگاه یا برنامه‌ای که دریافت پیام‌های یک موضوع را درخواست کرده است.

• موضوع پیام: نامی که مشخص می‌کند پیام به کدام دسته اطلاعات مربوط است؛ مانند دمای سالن اول یا فرمان فن دوم.

بروکر ارتباط میان این نقش‌ها را برقرار می‌کند. یک دستگاه نیز می‌تواند هم منتشرکننده و هم مشترک باشد؛ مثلاً وضعیت رله را بفرستد و فرمان تغییر آن را دریافت کند. 

نکته مهم این است که بروکر با خود پروتکل تفاوت دارد. پروتکل، قواعد ارتباط را تعیین می‌کند؛ بروکر، نرم‌افزاری است که نقش مرکزی این ارتباط را طبق آن قواعد اجرا می‌کند. نرم‌افزارهای مختلف بروکر می‌توانند همین نقش را با امکانات مدیریتی و اجرایی متفاوت ارائه دهند.

۳. پیام چگونه از فرستنده به گیرنده می‌رسد؟

برقراری اتصال

ابتدا دستگاه‌ها و برنامه‌ها به بروکر متصل می‌شوند. بروکر درخواست اتصال را بررسی می‌کند و با توجه به تنظیمات خود، آن را می‌پذیرد یا رد می‌کند. بررسی هویت و محدودیت تعداد اتصال‌ها می‌تواند بخشی از این مرحله باشد.

پس از پذیرش اتصال، بروکر باید ارتباط هر دستگاه را از دیگر دستگاه‌ها تشخیص دهد و پیام‌های مربوط به آن را مدیریت کند.

اشتراک در موضوع‌ها

برنامه‌ای که به اطلاعات دما نیاز دارد، درخواست دریافت پیام‌های موضوع دما را به بروکر می‌دهد. بروکر این اشتراک را ثبت می‌کند تا بداند پیام‌های بعدی آن موضوع باید به کدام دریافت‌کنندگان ارسال شوند.

ممکن است یک موضوع چند مشترک داشته باشد. برای مثال، برنامه گوشی، نمایشگر محلی و نرم‌افزار ثبت اطلاعات می‌توانند همگی دریافت‌کننده اطلاعات یک سنسور باشند.

انتشار پیام و تحویل آن به مشترکان

وقتی گیت‌وی مقدار دما را منتشر می‌کند، بروکر موضوع پیام را با اشتراک‌های ثبت‌شده تطبیق می‌دهد و پیام را برای دریافت‌کنندگان مجاز ارسال می‌کند. بنابراین، بروکر فقط یک محل عبور ساده نیست؛ اطلاعات لازم برای توزیع درست پیام‌ها را نیز نگه می‌دارد. 

نقش بروکر در ارتباط دوطرفه دستگاه و نرم‌افزار

در مسیر برگشت، برنامه گوشی فرمان را منتشر می‌کند و کنترلر دریافت‌کننده آن است. بروکر هر دو مسیر را مدیریت می‌کند، اما دریافت فرمان توسط بروکر به معنی اجرای آن در تجهیز نیست.

برای مثال، بروکر ممکن است فرمان روشن‌شدن فن را درست تحویل دهد، ولی موتور به علت قطع برق روشن نشود. برای اطلاع از نتیجه، کنترلر باید پاسخ یا وضعیت اندازه‌گیری‌شده را در پیام جداگانه‌ای گزارش کند.

شکل ۲ ـ مسیر داده و فرمان از طریق بروکر

شکل ۲ ـ مسیر داده و فرمان از طریق بروکر

۴. وظایف اصلی بروکر چیست؟

مدیریت اتصال‌ها و اشتراک‌ها

بروکر وضعیت ارتباط دستگاه‌ها و فهرست اشتراک‌های آن‌ها را مدیریت می‌کند. باید بداند کدام کلاینت متصل است، چه اطلاعاتی را درخواست کرده و پیام‌های مربوط به آن چگونه تحویل داده شوند.

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

مسیریابی و توزیع پیام‌ها

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

در اینجا «مسیریابی» به معنی انتخاب گیرندگان پیام در سامانه است؛ بروکر جای روتر شبکه را نمی‌گیرد.

اجرای سطوح کیفیت سرویس

بروکر در سازوکار تأیید دریافت و تحویل پیام مشارکت می‌کند. میزان این مشارکت به سطح کیفیت سرویس انتخاب‌شده بستگی دارد و می‌تواند شامل نگهداری موقت وضعیت پیام و تکمیل تبادل تأییدها باشد.

این قابلیت به قابلیت اتکای انتقال کمک می‌کند، اما تضمین اجرای منطق برنامه یا عملکرد فیزیکی تجهیز نیست. 

نگهداری پیام ماندگار و وضعیت نشست

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

این نگهداری تابع تنظیمات و ظرفیت سرویس است و نباید آن را ذخیره نامحدود همه اطلاعات تصور کرد. [۴، ۵]

مدیریت پیام وصیت و تشخیص قطع ارتباط

بروکر می‌تواند پس از تشخیص قطع غیرعادی ارتباط یک دستگاه، پیامی را که دستگاه از قبل تعیین کرده منتشر کند. این امکان برای اطلاع‌رسانی درباره آفلاین‌شدن تجهیزات کاربرد دارد.

با این حال، بروکر معمولاً علت فیزیکی قطعی را نمی‌داند. خاموش‌شدن دستگاه، اختلال اینترنت یا توقف برنامه ممکن است همگی از دید آن به قطع ارتباط منتهی شوند.

۵. وظایف امنیتی و مدیریتی بروکر

احراز هویت کاربران و دستگاه‌ها

بروکر می‌تواند پیش از پذیرش اتصال، هویت دستگاه یا برنامه را بررسی کند. این بررسی بسته به نرم‌افزار و تنظیمات، ممکن است با نام کاربری و رمز عبور، گواهی دیجیتال یا روش‌های دیگر انجام شود.

برای نمونه، در یک سامانه شامل چند گلخانه، بهتر است هر گیت‌وی هویت مستقلی داشته باشد تا مدیریت یا قطع دسترسی یک دستگاه، سایر دستگاه‌ها را تحت تأثیر قرار ندهد.

تعیین مجوز انتشار و دریافت پیام

شناخت هویت به‌تنهایی کافی نیست. بروکر باید بتواند تعیین کند هر کاربر یا دستگاه، مجاز به ارسال و دریافت چه اطلاعاتی است.

برای مثال، سنسور دما ممکن است اجازه ارسال اندازه‌گیری‌های خودش را داشته باشد، اما نباید بتواند فرمان خاموش‌شدن تجهیزات سالن‌های دیگر را منتشر کند. همچنین دسترسی یک کاربر صرفاً ناظر می‌تواند به دریافت اطلاعات محدود شود.

ارتباط رمزگذاری‌شده

بروکر می‌تواند اتصال رمزگذاری‌شده برقرار کند تا اطلاعات در مسیر انتقال حفاظت شوند. این کار نیازمند تنظیم درست بروکر و پشتیبانی کلاینت است. اعتبارسنجی هویت سرور نیز بخشی از همین طراحی است.

رمزگذاری جای مجوزدهی را نمی‌گیرد؛ کاربری که از طریق ارتباط امن متصل شده، همچنان باید فقط به اطلاعات مجاز دسترسی داشته باشد.

کنترل مصرف منابع و محدودیت اتصال‌ها

در بهره‌برداری واقعی، بروکر باید در برابر مصرف بیش از اندازه منابع نیز مدیریت شود. تعداد اتصال‌ها، اندازه پیام، طول صف و رفتار کلاینت‌های کند از مواردی هستند که ممکن است نیاز به محدودیت داشته باشند.

برای مثال، اگر یک برنامه نتواند پیام‌ها را با سرعت کافی دریافت کند، انباشته‌شدن صف آن می‌تواند حافظه سرور را مصرف کند. امکانات محدودسازی، گزارش‌گیری و پایش، بسته به نرم‌افزار بروکر یا طرح سرویس متفاوت‌اند.

۶. بروکر چه کارهایی را به‌تنهایی انجام نمی‌دهد؟

تفاوت پیام ماندگار با تاریخچه اطلاعات

نگهداری آخرین پیام ماندگار یک موضوع با ثبت تاریخچه تفاوت دارد. اگر بخواهیم نمودار دمای یک ماه گذشته را نمایش دهیم، باید اندازه‌گیری‌های متعدد همراه با زمان آن‌ها ذخیره شده باشند.

پیام ماندگار می‌تواند برای نمایش آخرین مقدار گزارش‌شده مفید باشد، اما جای آرشیو اندازه‌گیری‌ها را نمی‌گیرد. همچنین آخرین مقدار ذخیره‌شده الزاماً تازه نیست؛ ممکن است دستگاه مدت زیادی اطلاعات جدید نفرستاده باشد. 

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

این اجزا مسئولیت‌های متفاوتی دارند:

جزء سامانه
مسئولیت اصلی
بروکر
دریافت و توزیع پیام میان دستگاه‌ها و برنامه‌ها
پایگاه داده
ذخیره و بازیابی اطلاعات و تاریخچه
داشبورد
نمایش داده‌ها و فراهم‌کردن رابط کاربر
سامانه کنترل
تصمیم‌گیری و صدور فرمان بر اساس منطق تعریف‌شده
گیت‌وی
ارتباط با تجهیزات و تبدیل یا انتقال داده میان بسترها


برای مثال، بروکر به‌خودی‌خود نمی‌داند که دمای ۳۵ درجه برای محصول داخل گلخانه زیاد است. تشخیص این وضعیت به قاعده یا برنامه‌ای نیاز دارد که محدوده مجاز را بشناسد.

همچنین بروکر معمولاً معنی کاربردی محتوای پیام را تعیین نمی‌کند. اینکه عدد «۱» به معنی روشن‌بودن رله باشد یا وجود خطا، قراردادی میان فرستنده و گیرنده است.

امکانات افزوده بعضی بروکرها برای پردازش و انتقال داده

بعضی محصولات بروکر، امکاناتی فراتر از انتقال پایه پیام دارند؛ مانند قواعد پردازش، اتصال به پایگاه داده، انتقال پیام به سرویس دیگر یا ابزارهای مدیریتی.

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

۷. یک نمونه کاربردی در اتوماسیون صنعتی

ارتباط سنسورها، گیت‌وی، بروکر و نرم‌افزار نمایش و کنترل

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

نقش هر جزء در این مثال مشخص است:

۱. سنسورها دما و رطوبت را اندازه‌گیری می‌کنند.

۲. گیت‌وی اندازه‌گیری‌ها را از تجهیزات دریافت و در قالب پیام‌های مورد توافق منتشر می‌کند.

۳. بروکر پیام‌ها را به برنامه گوشی، نرم‌افزار ثبت اطلاعات و بخش کنترل که مشترک موضوع‌های مربوط هستند، می‌رساند.

۴. نرم‌افزار نمایش اطلاعات را به کاربر نشان می‌دهد و نرم‌افزار ثبت آن‌ها را برای گزارش‌گیری ذخیره می‌کند.

۵. بخش کنترل بر اساس تنظیمات تعیین می‌کند که فن باید روشن شود و فرمان مربوط را منتشر می‌کند.

۶. بروکر فرمان را به گیت‌وی می‌رساند و گیت‌وی آن را به دستور قابل فهم برای کنترلر رله تبدیل می‌کند.

۷. کنترلر و تجهیزات بازخورد نتیجه را گزارش می‌کنند و وضعیت دوباره از مسیر گیت‌وی و بروکر به نرم‌افزارها می‌رسد.

در این نمونه، بروکر نه دما را اندازه‌گیری می‌کند، نه مستقیماً رله را راه می‌اندازد و نه به‌تنهایی درباره روشن‌شدن فن تصمیم می‌گیرد. نقش آن، مدیریت ارتباط پیام‌ها میان این اجزاست.

این جداسازی مسئولیت‌ها یک مزیت عملی دارد: می‌توان برنامه گزارش‌گیری جدیدی اضافه کرد یا رابط نمایش را تغییر داد، بدون اینکه الزاماً منطق اندازه‌گیری و ارتباط سنسورها بازنویسی شود. در عین حال، برای کنترل‌های ضروری باید رفتار سامانه هنگام قطع ارتباط با بروکر نیز از قبل تعیین شده باشد.

شکل ۳ ـ جایگاه بروکر در سامانه گلخانه

شکل ۳ ـ جایگاه بروکر در سامانه گلخانه

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