Message broker

سلام خدمت دوستان .
چیزی که ذهن منو قاطی کرده استفاده از ابزارهای صف بندی مثل rabitmq در الکسیر هست ! آیا به اینا احتیاجی هست وقتی در خود الکسیر میشه
میلیون ها پروسس ایجاد کرد و بین نودهای مختلف پیام رد و بدل کرد ؟ اگر احتیاجی هست علتش رو هم ممکن باشه ذکر کنید.
یادم نرفته اینم بگم کل سیستم با elixir هست و سرویس دیگه ای وجود نداره که قرار باشه یه پروتوکل استاندارد برای همشون وجود داشته باشه

1 پسندیده

اول از همه این نکته رو باید بگم که وقتی می گین میلیون ها پروسس رو هندل می کنه منظور پروسس واقعی نیست و در عمل این هجم پروسس با یه thread pool بسیار محدود هندل می شه. پروسس های Erlang در کل یه چی مثل همون Green Thread ها هست.
اما در مورد بروکر خیلی بستگی به کاربرد داره اما خوب خیلی وقت ها شما به امکاناتی نیاز داری که باید تو Erlang هم بنویسیشون و چه بهتر که سلوشن آماده و خوب رو استفاده کنی

2 پسندیده

با وجود genstsge استفاده از rabbitmq برای پروژه های کوچک تا متوسط نیاز چندانی نیست اما rabbitmq یک سری مزایا در کل داره

  1. ارتقا پذیری horizontal scaling
  2. کانفیگ برای ذخیره سازی پیام ها یا برای availability
  3. قابلیت فرستادن ‌گرفتن پیام بین چند زبان مختلف
3 پسندیده

سام عزیز کلا چه وقتی ازش استفاده می کنیم منظورم rabbitmq هست .

شما دارید در مورد :
https://www.rabbitmq.com/tutorials/tutorial-one-elixir.html
این صحبت می کنید ؟

بله از genstage

Messaging یک مبحث بزرگه, rabbitmq اصولا زمانی استفاده می‌کنیم که سیستم های مختلف در سیستم distributed از وجود یک رخداد آگاه کنیم
Rabbitmq در چندین زبان مختلف client داره فرض کنید یک اتفاق در برنامه روبی افتاد میشه اینو منتشر کرد به یک exchange در rabbit و هر برنامه که به این exchange گوش میده از این باخبر میشه و کاری انجام میده

این کتاب الگوهای مختلف messaging و توضیح داده

3 پسندیده

ممنون
یه نکته ای هم که این وسط باز پیش میاد استفاده از genevent هست . تو داکیومنت های الکسیر به استفاده از gen event توصیه نکردند و من متوجه نشدم در منظورشون ماژول genevent هست که در الکسیره یا منظورشون خود gen event هست ؟
برای مورد یک که در مورد مقیاس پذیری اشاره کردین استفاده از rpc رو توصیه میکنید که فرضا یه پروسس خاص رو بین نودهای مختلف اجرا کنم؟
درسته که خود rabitmq روی ارلنگه اما من از حرفای شما ظاهرا اینجوری فهمیدم که بهتره از اون استفاده کنم .

GenStage و به جای genevent استفاده کن
Rabbitmq گزینه بهتریه برای پروژه ها ی بزرگ

3 پسندیده

ممنون عزیز