تصور کنید که ما n ایستگاه داریم، و هر یک از این ایستگاهها هر ثانیه 1.5 پیام را به سمت سیستم MessageBroker ما ارسال میکنند.
از سوی دیگر، یک ساباسکرایبر داریم که به سیستم Broker گوش میدهد و هر پیامی که دریافت میکند را فوراً پردازش میدهد.
پیام های دریافتی تو قالب یک حلقه از ActiveMQ دریافت میشن و هر پیام شامل پردازش های مختلفه
مای تو یک مرحله اومدیم یک صفحه میانه تشکیل دادیم که فرایند ران تایم و لحظه ای ما درگیر نشه ولی با افزایش تعداد ایستگاه و پیام ها مدت زمان تاخیر پردازش پیام ها افزایش پیدا میکرد و گاهی هم به دلایل باگ های سیستم حجم field Job ها بیشتر میشد مجبور به حذف صف میانه شدیم :(
این پردازشها شامل محاسبه و شناسایی دو متد زمان، شدت زلزله، نوع لرزش، محدودیت رخداد، یا اعلاندهنده پیام، میزان ولتاژ و ... است.
لازم به ذکر که کد PHP ما پس از انجام تعدادی از اصلاحات و بهینهسازیها، متوسط زمان اجرای آن را از حداقل ۱۲ تا ۱۰ ثانیه کاهش دادیم و نتیجه فعلی در تصاویری که در این پست به اشتراک گذاشتم رسیدیم.
به طور خلاصه تجربیات قبلی که در این پروژه و وضیعت سورس قبلی رو تو این پست براتون قبلا به اشتراک گذاشتم : سفر غیر حرفهای در دنیای کدنویسی : قسمت اول - چگونه در یک پروژه حساس، با یک دست دور توپ تنیس و یک کیبورد خراب اقدام به توسعه دادیم )
مقایسه ما اصلا حق به جانب نیست و اینکه در هر دو زبان تا جای که لاگ گرفته شده یک کد مشترک نوشته شده است، نه کمتر نه بیشتر !
باید بگم توی برخی از پروژه ها حتی ۰.۵ میلی ثانیه ارزش خیلی زیادی داشته باشه که میتونه باعث کاهش کلی هزینه بشه . به شخص باید بگم تو این موردی که خودم درگیرش بودم Go واکنش بهتری نسبت به PHP داشت