تفاوت بین RabbitMQ و gRPC ؟؟؟؟
یه سوالی که چند وقت پیش برای خودم پیش اومده بود این بود که RabbitMQ و gRPC دقیقا چه فرقی دارن؟ چون خیلی وقتها میبینم این دوتا کنار هم یا حتی به جای هم استفاده میشن.
ولی واقعیت اینه که اساساً برای دو مدل ارتباطی متفاوت طراحی شدن.
خب gRPC بیشتر برای ارتباط مستقیم بین سرویسهاست.
یعنی یه سرویس درخواست میفرسته و سرویس دیگه همون لحظه جواب میده. چیزی شبیه API call ولی سریعتر و بهینهتر چون از HTTP/2 و Protobuf استفاده میکنه.
پس وقتی latency کم و پاسخ فوری مهمه، gRPC گزینه خیلی خوبی میشه.
از اون طرف RabbitMQ یک message broker هست.
اینجا داستان synchronous request نیست. شما یه پیام داخل صف میذاری و مصرفکننده هر وقت آماده بود اون رو برمیداره و پردازش میکنه. این مدل برای کارهای async، صفبندی کارها، یا وقتی که نمیخوای سرویسها خیلی به هم وابسته باشن خیلی کاربردیه.
خلاصه اگر بخوام ساده بگم:
اگر پاسخ فوری میخوای، gRPC
اگر میخوای کارها async و از طریق صف انجام بشه، RabbitMQ
در عمل هم خیلی از معماریهای microservice از هر دو کنار هم استفاده میکنن. مثلا:
برای communication سریع بین سرویسها gRPC
و برای eventها یا jobها RabbitMQ
جالب اینجاست که وقتی تفاوت مدل ارتباطی این دوتا رو بفهمی، انتخابشون خیلی منطقیتر میشه.
@DevTwitter | <Mojtaba Zaferani/>
Post #12191
6.95K
- 👎 57
- 👍 15
- 🔥 5