‫۶ سال و ۱۱ ماه قبل، سه‌شنبه ۱۱ مهر ۱۳۹۶، ساعت ۱۷:۳۱
سلام
شما از Rabbitmq برای اتصال Application‌های مختلف استفاده میکنین.و یا حتی میتونین با چند بار اجرای یه Application احتمال از دسترس خارج شدن اون رو کمتر کنین.بطور مثال شما یه سرویس دارین که داره ایمیل هاتونو ارسال میکنه،در صورتی که این سرویس از دسترس خارج بشه شما دیگه نمیتونین ایمیلی ارسال کنین، ولی در صورتی که شما همین سرویس ایمیل رو روی چندتا سرور مختلف اجرا کنین در صورتی که حتی یکی از اونا از دسترس خارج بشه هیچ مشکلی بوجود نمیاد و شما همچنان به سرویس ایمیل دسترسی دارین.همچنین از این طریق شما میتونین در لحظه تعداد بیشتری ایمیل ارسال کنین. اگرچه شما احتمال از دسترس خارج شدن سرویستونو به حداقل رسوندین و کارایی اونو هم بالا بردین، اما باید اینو درنظر بگیرین که   تمام سرویس‌های شما در واقع کلاینتهای Rabbitmq هستن و تمام Message هایی که بینشون ارسال و دریافت میشه از کانال Rabbitmq رد میشن!
یعنی اگر سروری که rabbitmq روش نصب شده از دسترس خارج بشه کل سیستم شما از دسترس خارج میشه .برای رفع این مشکل rabbitmq این قابلیتو داره که شما بتونین خودشو هم بصورت توزیع شده پیاده سازی کنین،یعنی بتونین Rabbitmq رو روی چند سرور اجرا کنین تا هم کاراییش بره بالا و هم احتمال اینکه از دسترس خارج بشه رو به حداقل برسونین.
Rabbitmq برای توزیع خودش از 3 روش: Federation  ، Clustring   و Shovel استفاده میکنه و در صورتی که شما میخوایین با هر یک از اونا آشنا بشین بهترین مرجع مستندات خودشه .لینکهایی مرتبط به سوالتونو من براتون گذاشتتم در صورتی هم که میخوایین این 3 روشو با هم مقایسه کنین میتونین از Distributed RabbitMQ brokers   استفاده کنین.
‫۷ سال و ۶ ماه قبل، جمعه ۴ فروردین ۱۳۹۶، ساعت ۱۹:۳۵
مواردی که فرمودین همشون Message Broker هستن پس قاعدتا خصوصیات و قابلیتهای مشترک زیادی دارن اما هرکدومشون تفاوتها و نقاط ضعف و قوتی هم دارن که باعث میشه انتخاب شما در شرایط مختلف متفاوت باشه .مهمترین و بارزترین تفاوتها و نقاط ضعف و قوت اونا شامل موارد پایین هستن.
  • Rabbitmq: یکی از محبوبترین و بالغترین و قابل اعتمادترین Message broker هاست، مستندات و آموزشاش از بقیه بیشتره، سرور اون  به راحتی نصب می‌شه،با استفاده از Rabbitmq مباحث پیشرفته ای مثل Routing و Load Balancer به راحتی قابل پیاده سازین،روی یک سرور شما می‌تونید حدود 20هزار پیامو در ثانیه ارسال کنید که باتوجه به اینکه شما می‌تونید سرورهای اون رو بصورت Cluster پیاده سازی کنید میتونین کارایی اونو بصورت قابل توجهی بالا ببرین،همچنین نکته بسیار مهمی که در Rabbitmq وجود داره اینه که در اکثر platfotmها قابل استفادس .اما کاراییش قابل مقایسه با Kafka نیست.(البته باید بگم کارایی که داره جوابگوی اکثر مواردی که حداقل خودم نیاز داشتم بوده) .
  • Kafka : مهمترین خصوصیتش کارایی بسیار بالاشه ، در مواردی که کارایی براتون بسیار حیاتیه بهترین انتخابه، با استفاده از Kafka شما می‌تونین حدود 100هزار پیامو در ثانیه ارسال کنین که با استفاده از مفاهیمی مثل Cluster می‌تونین کارایشو بسیار بالاتر هم ببرین.این Message broker بیشتر تمرکزشو روی کارایی گذاشته.
  • Activemq :می تونم بگم حالت متوسطی از خصوصیات دو گزینه بالاست. 
در واقع Cloud Distributed Systemها و Distributed Systemها زمانی بوجود آمدند که Centralize system‌ها دیگر پاسخگوی نیازهای ما نبودند.خیلی از مفاهیم این دو نوع سیستم مشترک است اما در برخی از مفاهیم با هم تفاوتهایی دارند. در واقع داشتن یک درک درست از Cloud Computing نیازمند داشتن درک درست از Distributed Computing است.
اما تفاوتهای این دو نوع سیستم:
اولین نکته این است که هدف Cloud systemها ارائه زیرساخت است. یعنی این نوع سیستم‌ها یکسری سرویس زیرساختی از پیش تعریف شده را مانند storage space ، Applications ، Platform و Infrastructure را ارائه می‌دهند که اکثرا کاربران آنها برای دریافت این سرویس‌ها باید پرداخت هایی انجام دهند و این کاربران دیگر نیاز نیست این زیرساخت‌ها را پیاده سازی کنند.در واقع این سرویس‌ها یکسری سرویس قابل تنظیم یا Configurable هستند که کاربران می‌توانند در حد کنترل شده با استفاده از تنظیمات از آنها استفاده کند.در این نوع سیستم‌ها مفاهیمی مانند scalability  یا transparency یا availability یا امنیت در سطح بسیار بالایی قرار دارد.
اما هدف از Distributed Systemها مفاهیم اجرایی است که در آن یک سری از Computerهای مستقل وظایف یک سیستم را طوری بین خود تقسیم می‌کنند که از دید کاربر یک سیستم واحد است که روی یک computer ارائه می‌شود .در صورتی که Computerهای یک Cloud لزوما یک هدف واحد ندارند. ساختار سیستم‌های توزیع شده از پیش تعریف شده نیست که قرار باشد کاربران آنها با استفاده از تنظیمات از آنها استفاده کنند.
دومین نکنه در رابطه با نوع هر یک است.
سیستم‌های توزیع شده از سه نوع تشکیل می‌شوند
1-Distributed Information systems:هدف اصلی این نوع سیستم توزیع شده توزیع اطلاعات در تمام سخت افزارهای در دسترس است.
2-Distributed pervasive systems:در این نوع سیستم‌ها همه چیز بین Componentهایی که هرجایی می‌توانند باشند تقسیم شده مانند Mobile deviceها sensorها و...
3-Distributed Computing systems:این نوع سیستم یک عملیات بزرگ را به عملیات کوچکتر در سخت افزار‌های مختلف تقسیم می‌کند که از طریق ارسال Message در سطح شبکه با هم در ارتباطند.
سیستم‌های Cloud به چهار دسته تقسیم می‌شوند
1-Private cloud : یک Cloud infrastructure که برای ارائه Applicationهای یک سازمان استفاده می‌شود.
2-Public cloud:این cloud infrastructure با استفاده از service provider بصورت عمومی به دیگر سازمان‌ها سرویس ارائه می‌دهد.
3-Community cloud :یک Cloud infrastructure مشترک بین چند سازمان.
4-hybrid cloud:یک  Cloud infrastructure که می‌تواند از ترکیبی از دو یا چند نوع از انواع دیگر ایجاد شود.