Ably — چیست، پلتفرم Pub/Sub بلادرنگ و چگونه کار می‌کند

نویسنده: IT Sectr منتشر شده: 2026-06-01 زمان مطالعه: 8 دقیقه

Ably — یک پلتفرم ابری پیام‌رسانی بلادرنگ است که زیرساخت ارتباطی pub/sub، حضور و همگام‌سازی وضعیت را فراهم می‌کند. این پلتفرم برای پروژه‌های سازمانی با نیازهای بالا به قابلیت اطمینان و دسترسی جهانی طراحی شده است. به گفته مستندات رسمی Ably (2025)، این پلتفرم 99.999% uptime و تأخیر تحویل کمتر از 65 میلی‌ثانیه در صدک 95 را تضمین می‌کند.

نکات کلیدی

  • Ably — پلتفرم سازمانی برای ارتباط بلادرنگ با شبکه جهانی مراکز داده.
  • مدل Pub/Sub — انتشار و اشتراک در کانال‌ها از طریق WebSocket، Server-Sent Events و HTTP streaming.
  • تضمین تحویل — پشتیبانی از حالت‌های at-least-once، exactly-once و last-value cache برای داده‌های حیاتی.
  • حضور و همگام‌سازی — ردیابی شرکت‌کنندگان آنلاین کانال و همگام‌سازی خودکار وضعیت.
  • SDK برای 20+ پلتفرم — کلاینت‌های آماده برای JavaScript، Swift، Kotlin، Flutter، React Native و زبان‌های سمت سرور.

Ably چیست؟

Ably — یک پلتفرم ابری بلادرنگ است که در سال 2014 تأسیس شد و زیرساخت تبادل پیام در زمان واقعی را فراهم می‌کند. برخلاف سرویس‌های pub ساده، Ably تضمین‌های تحویل سازمانی، شبکه جهانی نقاط حضور (POP) و همگام‌سازی وضعیت داخلی برای میلیون‌ها کلاینت همزمان ارائه می‌دهد.

این پلتفرم در پروژه‌هایی استفاده می‌شود که قابلیت اطمینان تحویل حیاتی است: تیکرهای مالی، ردیاب‌های لجستیکی، سیستم‌های نظارت پزشکی و بازی‌های چندنفره. Ably بر اساس فناوری اختصاصی کارگزار پیام توزیع‌شده ساخته شده است که داده‌ها را از طریق شبکه جهانی 15+ مرکز داده تکرار می‌کند.

به گفته سایت رسمی Ably (2025)، این پلتفرم ماهانه بیش از 200 میلیارد پیام را برای 50,000+ برنامه فعال پردازش می‌کند. از جمله مشتریان می‌توان به شرکت‌های لیست Fortune 500 اشاره کرد: Toyota (تله‌ماتیک خودرو)، HubSpot (همگام‌سازی CRM)، Designity (ویرایش مشترک).

معماری Ably

معماری Ably بر روی شبکه توزیع‌شده کارگزاران پیام (router) ساخته شده است که از طریق کانال‌های پرسرعت به هم متصل می‌شوند. هر کارگزار زیرمجموعه‌ای از کانال‌ها را سرویس می‌دهد و وضعیت را از طریق پروتکل Ably — یک پروتکل باینری روی WebSocket بهینه‌شده برای حداقل سربار — تکرار می‌کند. کلاینت‌ها از طریق متعادل‌سازی DNS به نزدیک‌ترین کارگزار متصل می‌شوند.

تفاوت کلیدی Ably با رقبا — سیاهه جهانی (global log) داخلی است که تاریخچه پیام‌ها را برای هر کانال ذخیره می‌کند. این به مشترکین جدید اجازه می‌دهد نه تنها پیام‌های جدید، بلکه پیام‌های قبلی (replay) را نیز دریافت کنند که برای حسابرسی و بازیابی وضعیت پس از اتصال مجدد حیاتی است.

Ably چگونه کار می‌کند

مدل تعامل Ably از الگوی Publisher-Subscriber با قابلیت‌های اضافی پیروی می‌کند. ناشر پیام را از طریق API REST یا SDK Ably به کانال ارسال می‌کند. پیام وارد سیاهه جهانی توزیع‌شده کانال می‌شود و از طریق اتصالات فعال به همه مشترکین ارسال می‌شود.

لایه حمل و نقل Ably از چندین پروتکل پشتیبانی می‌کند: WebSocket (اصلی، با پروتکل باینری Ably)، Server-Sent Events (برای دریافت یک‌طرفه)، HTTP streaming (برای محیط‌های محدود) و MQTT (برای دستگاه‌های IoT). کلاینت به طور خودکار حمل‌ونقل موجود با کمترین تأخیر را انتخاب می‌کند.

هر پیام تحت اعتبارسنجی سمت Ably قرار می‌گیرد — بررسی امضای کلید API، سهمیه کانال، مجوزهای دسترسی. اعتبارسنجی در 1–5 میلی‌ثانیه روی روتر مرزی انجام می‌شود، پس از آن پیام به سیاهه جهانی تکرار می‌شود. به گفته وبلاگ فنی Ably (2024)، تأخیر سرتاسر (end-to-end) برای 95٪ پیام‌ها در انتقال بین‌قاره‌ای کمتر از 65 میلی‌ثانیه است.

کانال‌ها و اشتراک‌ها

کانال‌های Ably — موضوعات نام‌گذاری‌شده برای تبادل پیام. هر کانال می‌تواند تعداد نامحدودی مشترک داشته باشد، اما برای عملکرد پایدار توصیه می‌شود بیش از 10,000 مشترک در هر کانال در یک منطقه نباشد. کانال‌ها می‌توانند یک‌طرفه (انتشار فقط از سرور) یا کامل (کلاینت‌ها پیام منتشر می‌کنند) باشند.

کانال‌ها و مدل Pub/Sub در Ably

مدل Pub/Sub در Ably الگوی کلاسیک را با قابلیت‌های اضافی گسترش می‌دهد: حضور مشترکین (presence)، تاریخچه پیام‌ها (history)، وضعیت کانال (channel state) و فضای نام (namespaces). هر کانال به یک فضای نام تعلق دارد که سهمیه‌ها و مجوزهای دسترسی را تعیین می‌کند.

حضور (Presence) — ردیابی خودکار شرکت‌کنندگان کانال. هر کلاینتی که در کانال مشترک می‌شود، در نقشه حضور با clientId، وضعیت (online، away، offline) و داده‌های دلخواه ثبت می‌شود. هنگام قطع اتصال کلاینت (با time-out یا صریح)، حضور به طور خودکار به‌روزرسانی می‌شود.

تاریخچه پیام‌ها — هر کانال به طور پیش‌فرض تاریخچه پیام‌ها را ذخیره می‌کند (تا 2 دقیقه یا 100 پیام در طرح رایگان). در طرح‌های پولی، تاریخچه می‌تواند تا 72 ساعت با امکان دسترسی گذشته‌نگر دلخواه افزایش یابد. تاریخچه در سیاهه توزیع‌شده با تضمین تغییرناپذیری (append-only) ذخیره می‌شود.

قابلیتطرح رایگانطرح سازمانی
اتصالات همزمان10010,000+
ذخیره تاریخچه2 دقیقه / 100 پیام72 ساعت
تضمین تحویلAt-least-onceExactly-once
مناطق1 منطقههمه 15+ منطقه
SLA99.9%99.999%

تضمین‌های تحویل Ably

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

At-least-once — پیام حداقل یک بار تحویل داده می‌شود، موارد تکراری ممکن است. این حالت برای اعلان‌ها و داده‌های غیرحیاتی که تکرارها ضرری ندارند استفاده می‌شود. Exactly-once — پیام دقیقاً یک بار با حذف موارد تکراری در سمت کلاینت و سرور تحویل داده می‌شود. این حالت برای تراکنش‌های مالی و مدیریت دستگاه‌ها اجباری است.

Last-value cache — حالت ویژه‌ای که در آن کانال آخرین مقدار هر پیام نام‌گذاری‌شده را ذخیره می‌کند. مشترک جدید بلافاصله وضعیت فعلی را بدون انتظار برای رویداد بعدی دریافت می‌کند. این از طریق فروشگاه global key-value روی هر روتر پیاده‌سازی شده است. به گفته مستندات Ably (2025)، last-value cache زمان بازیابی وضعیت پس از اتصال مجدد را از 2–5 ثانیه به 50–100 میلی‌ثانیه کاهش می‌دهد.

چگونه از Ably در پروژه استفاده کنیم

شروع کار با Ably نیاز به ثبت‌نام، ایجاد برنامه و دریافت کلید API دارد. کتابخانه‌ها برای تمام پلتفرم‌های اصلی در دسترس هستند. بیایید نمونه انتشار و اشتراک با استفاده از SDK JavaScript را بررسی کنیم. کلاینت با کلید API متصل می‌شود، در کانال مشترک می‌شود و کنترل‌کننده رویداد را متصل می‌کند.

به گفته مستندات Ably (2025)، توصیه می‌شود از کلیدهای API متفاوت برای بخش سرور و کلاینت با حداقل مجوزها (اصل کمترین امتیاز) استفاده کنید. کلید سرور می‌تواند در هر کانالی منتشر کند، کلید کلاینت — فقط می‌تواند در فضای نام خاصی مشترک شود.

اشتراک در کانال Ably

js
import * as Ably from 'ably';

const client = new Ably.Realtime({
    key: 'YOUR_API_KEY',
    clientId: 'user-123'
});

const channel = client.channels.get('test-channel');

channel.subscribe('update', (message) => {
    console.log('دریافت شد:', message.data);
});

channel.publish('update', {
    text: 'Hello from Ably',
    priority: 1
});

انتشار از سرور

js
const Ably = require('ably');

const rest = new Ably.Rest({ key: 'SERVER_API_KEY' });

const channel = rest.channels.get('test-channel');

channel.publish('server-event', {
    type: 'notification',
    payload: { userId: 100, text: 'Server message' }
}).then(() => {
    console.log('پیام منتشر شده از طریق REST');
});

مقایسه Ably و Pusher

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

Ably از سیاهه جهانی توزیع‌شده برای هر کانال استفاده می‌کند که تحویل exactly-once و دسترسی گذشته‌نگر به تاریخچه را فراهم می‌کند. Pusher از معماری کارگزار با تضمین at-least-once استفاده می‌کند. برای اکثر برنامه‌ها تفاوت قابل توجه نیست، اما برای سیستم‌های مالی و پزشکی exactly-once حیاتی است.

به گفته تست مقایسه‌ای Ably vs Pusher (2024)، Ably به دلیل تعداد بیشتر مراکز داده، 20–30٪ تأخیر کمتری در انتقال بین‌قاره‌ای نشان می‌دهد. Pusher از نظر سرعت یکپارچه‌سازی برتر است — پیکربندی اولیه 10–15 دقیقه طول می‌کشد در مقابل 20–30 دقیقه برای Ably به دلیل گزینه‌های پیکربندی بیشتر.

یکپارچه‌سازی موبایل Ably

SDK Ably برای پلتفرم‌های موبایل از iOS (Swift)، Android (Kotlin/Java)، Flutter و React Native پشتیبانی می‌کند. کلاینت‌های موبایل کاملاً با بخش سرور Ably سازگار هستند و از همه عملکردها پشتیبانی می‌کنند: pub/sub، presence، history، اعلان‌های push. برای Android یکپارچه‌سازی با Firebase Cloud Messaging برای تحویل آفلاین اعلان‌های push در دسترس است.

بهینه‌سازی برای شبکه‌های موبایل — SDK Ably از heartbeat تطبیقی استفاده می‌کند: در Wi-Fi بازه 15 ثانیه، در شبکه موبایل — تا 60 ثانیه برای صرفه‌جویی در ترافیک. هنگام قطع اتصال، SDK به حمل‌ونقل پشتیبان (HTTP streaming) بدون تأخیر قابل مشاهده برای کاربر تغییر می‌کند. میانگین مصرف ترافیک — 0.5–1 کیلوبایت در دقیقه در حالت آماده‌باش.

اعلان‌های push — Ably از ارسال push از طریق APNs (Apple) و FCM (Firebase) پشتیبانی می‌کند. push می‌تواند به کانال خاص یا clientId هدایت شود. اگر کلاینت فعال است (WebSocket متصل است)، پیام از طریق کانال تحویل داده می‌شود. اگر کلاینت قطع است، پیام به عنوان اعلان push تحویل داده می‌شود. این تضمین می‌کند که کاربر هرگز پیام مهمی را از دست ندهد.

سؤالات متداول

تفاوت Ably با Pusher چیست؟

Ably تحویل exactly-once، سیاهه جهانی توزیع‌شده و 99.999% SLA ارائه می‌دهد. Pusher در پیکربندی ساده‌تر است، اما فقط تضمین‌های at-least-once را فراهم می‌کند. Ably اغلب توسط پروژه‌های سازمانی با نیازهای بالا به قابلیت اطمینان انتخاب می‌شود.

قیمت Ably چقدر است؟

طرح رایگان شامل 100 اتصال همزمان و 500,000 پیام در ماه است. طرح‌های پولی از 19 دلار در ماه (1000 اتصال) شروع می‌شوند. تعرفه سازمانی با تضمین‌های سفارشی به صورت جداگانه مذاکره می‌شود.

آیا Ably از تحویل exactly-once پشتیبانی می‌کند؟

بله، exactly-once — یکی از قابلیت‌های کلیدی Ably است. حذف موارد تکراری در سمت پلتفرم با استفاده از شناسه‌های منحصربه‌فرد پیام (message ID + connection ID) انجام می‌شود.

Ably چند مرکز داده دارد؟

در حال حاضر Ably دارای 15+ نقطه حضور در سراسر جهان است، از جمله آمریکا، اروپا، آسیا، استرالیا و آمریکای جنوبی. مشتریان سازمانی می‌توانند مناطق خاصی را برای ذخیره داده انتخاب کنند.

آیا می‌توان از Ably برای IoT استفاده کرد؟

بله، Ably از پروتکل MQTT برای دستگاه‌های IoT با مصرف انرژی کم پشتیبانی می‌کند. برای دستگاه‌های ESP32، Arduino و Raspberry Pi SDKهای سبک با حداقل مصرف حافظه در دسترس هستند.

خلاصه

  • Ably — پلتفرم سازمانی پیام‌رسانی بلادرنگ با شبکه جهانی 15+ مرکز داده و 99.999% SLA.
  • مدل Pub/Sub با حضور، تاریخچه پیام‌ها و last-value cache برای بازیابی فوری وضعیت تکمیل شده است.
  • تحویل Exactly-once Ably را از رقبا متمایز می‌کند و برای برنامه‌های مالی و پزشکی حیاتی است.
  • SDKهای موبایل از اعلان‌های push از طریق APNs و FCM، heartbeat تطبیقی و fallback خودکار حمل‌ونقل پشتیبانی می‌کنند.
  • معماری بر روی سیاهه جهانی توزیع‌شده و پروتکل باینری Ably روی WebSocket ساخته شده است.
  • قابلیت‌های سازمانی شامل SLA سفارشی، ایزوله‌سازی VPC و محدودیت‌های منطقه‌ای ذخیره داده است.
  • برای پروژه‌های با نیاز به تحویل exactly-once و پوشش جهانی Ably را انتخاب کنید، برای سناریوهای ساده Pusher کافی است.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید