LISTEN/NOTIFY در Postgres واقعاً مقیاسپذیر است
مقالهای جدید از DBOS نشان میدهد که مکانیزم داخلی LISTEN/NOTIFY در Postgres میتواند بار ترافیکی بسیار بیشتری از آنچه اکثر توسعهدهندگان تصور میکنند را مدیریت کند. این ویژگی که اغلب برای محیطهای تولیدی ناکافی تلقی میشود، در واقع ابزاری قدرتمند برای ارتباط بلادرنگ است.
Postgres به دلیل استحکام و انعطافپذیری خود شناخته شده است، اما یکی از کمتر مورد توجه قرار گرفتهترین ویژگیهای آن، سیستم pub/sub داخلی با نام LISTEN/NOTIFY است. بسیاری از توسعهدهندگان این قابلیت را نادیده میگیرند و به جای آن برای نیازهای ارتباط بلادرنگ به راهحلهای خارجی مانند Redis، RabbitMQ یا Kafka روی میآورند. اما بر اساس تحلیل فنی دقیق منتشر شده توسط DBOS، این ممکن است یک پیچیدگی غیرضروری باشد.
تیم DBOS عملکرد LISTEN/NOTIFY را تحت شرایط بار واقعبینانه بررسی کرد و دریافت که این سیستم میتواند هزاران پیام در ثانیه را با تأخیر کم پردازش کند. این مکانیزم داخلی از زیرساخت اتصال موجود Postgres بهره میبرد، به این معنی که برای نیازهای سادهتر pub/sub نیازی به مدیریت سرویسها یا زیرساخت اضافی ندارید و این موضوع آن را برای تیمهایی که به دنبال کاهش سربار عملیاتی هستند، گزینهای جذاب میکند.
بحثهای داغ در Hacker News با ۲۷۳ امتیاز و ۴۹ نظر، موارد استفاده قانعکنندهای را مطرح کرد، از جمله پشتیبانی از webhookها، باطلسازی کش و اعلانهای بلادرنگ در برنامههای کاربردی. مهندسان باتجربه تجربیات موفق خود را در استفاده از LISTEN/NOTIFY در محیطهای تولیدی پرترافیک به اشتراک گذاشتند. البته محدودیتهایی مانند عدم پایداری پیامها و گلوگاههای احتمالی با تعداد بسیار زیاد شنوندگان همزمان نیز مورد بحث قرار گرفت.
نتیجهگیری روشن است: پیش از افزودن یک سیستم پیامرسانی دیگر به معماری خود، جدیتر ارزیابی کنید که آیا LISTEN/NOTIFY داخلی Postgres میتواند نیازهای شما را برآورده کند. این رویکرد پیچیدگی را کاهش میدهد، استقرار را سادهتر میکند و از پایگاه دادهای که احتمالاً در حال اجرای آن هستید بهره میبرد. این یک استدلال زیبا برای بهرهگیری بیشتر از آنچه از قبل دارید است.