صالح فیضی
صالح فیضی
خواندن ۲ دقیقه·۹ ماه پیش

تفاوت دریافت و پردازش پیام از ActiveMQ با PHP و Go !

تصور کنید که ما n ایستگاه داریم، و هر یک از این ایستگاه‌ها هر ثانیه 1.5 پیام را به سمت سیستم MessageBroker ما ارسال می‌کنند.

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

پیام های دریافتی تو قالب یک حلقه از ActiveMQ دریافت میشن و هر پیام شامل پردازش های مختلفه

مای تو یک مرحله اومدیم یک صفحه میانه تشکیل دادیم که فرایند ران تایم و لحظه ای ما درگیر نشه ولی با افزایش تعداد ایستگاه و پیام ها مدت زمان تاخیر پردازش پیام ها افزایش پیدا میکرد و گاهی هم به دلایل باگ های سیستم حجم field Job ها بیشتر میشد مجبور به حذف صف میانه شدیم :(

این پردازش‌ها شامل محاسبه و شناسایی دو متد زمان، شدت زلزله، نوع لرزش، محدودیت رخداد، یا اعلان‌دهنده پیام، میزان ولتاژ و ... است.

لازم به ذکر که کد PHP ما پس از انجام تعدادی از اصلاحات و بهینه‌سازی‌ها، متوسط زمان اجرای آن را از حداقل ۱۲ تا ۱۰ ثانیه کاهش دادیم و نتیجه فعلی در تصاویری که در این پست به اشتراک گذاشتم رسیدیم.

به طور خلاصه تجربیات قبلی که در این پروژه و وضیعت سورس قبلی رو تو این پست براتون قبلا به اشتراک گذاشتم : سفر غیر حرفه‌ای در دنیای کدنویسی : قسمت اول - چگونه در یک پروژه حساس، با یک دست دور توپ تنیس و یک کیبورد خراب اقدام به توسعه دادیم )

مقایسه ما اصلا حق به جانب نیست و اینکه در هر دو زبان تا جای که لاگ گرفته شده یک کد مشترک نوشته شده است، نه کمتر نه بیشتر !



نتیجه ارتباط با ActiveMQ با php و پردازش پیام
نتیجه ارتباط با ActiveMQ با php و پردازش پیام


نتیجه ارتباط با ActiveMQ با GoLang و پردازش پیام
نتیجه ارتباط با ActiveMQ با GoLang و پردازش پیام


باید بگم توی برخی از پروژه ها حتی ۰.۵ میلی ثانیه ارزش خیلی زیادی داشته باشه که میتونه باعث کاهش کلی هزینه بشه . به شخص باید بگم تو این موردی که خودم درگیرش بودم Go واکنش بهتری نسبت به PHP داشت

Technology Researcher And Developer
شاید از این پست‌ها خوشتان بیاید