در این بخش نحوه راه اندازی Apache Kafka را در Ubuntu مورد بررسی قرار میدهیم و میبینیم که هر یک از تعاریف و اصطلاحاتی که در بخش قبل معرفی شد، چگونه پیاده سازی میشوند (در صورتی که امکان استفاده از Ubuntu را ندارید و میخواهید مراحل این بخش را در windows انجام دهید میتوانید از راهنمای راه اندازی Kafka در windows استفاده کنید تا بتوانید بخشهای بعدی این سری مقالات را پیگیری و اجرا کنید). بروز رسانی Ubuntu: قبل از هرچیزی باید م ...
سرچشمه Kafka از LinkedIn آغاز و سپس در سال 2011 توسط Apache بصورت open source ارائه شد. هدف آن ارائه یک بستر جریان دادهای توزیع شدهاست که اساس آن، Publish-Subscribe میباشد . سادگی اضافه کردن قابلیتهای مقیاس پذیری افقی، تحمل خطا و افزایش کارآیی توسط این بستر باعث شدهاست که هزاران شرکت از آن بعنوان بستر ارتباطی قسمتهای مختلف سیستمها و زیرسیستمهای خود استفاده کنند. همانطور که گفته شد وظیفه و هدف اصلی Apache Kafka، ارائه یک بستر ...
در قسمت قبل با مفهوم مایکرو سرویسها آشنا شدیم. سرویسهای کوچک و مجزایی که بصورت مستقل، قابلیت توسعه و استقرار دارند و در راستای انجام یک قابلیت کسب و کار در اختیار دیگران قرار میگیرند. ویژگیهای یک مایکرو سرویس چیست؟ بعد از آشنایی با معماری مایکرو سرویسها میخواهیم با ویژگیهای آن آشنا شویم. البته باید به این نکته توجه داشت که همهی معماریهای مایکروسرویسها این ویژگیها را ندارند؛ ولی میتوان انتظار داشت اکثر آنها این ویژگیها ...
در نرم افزارهای Enterprise، توسعه محصول، چالش اصلی تیم نمیباشد. اصلیترین چالش، بعد از استقرار نرم افزار و زیر بار رفتن آن بهوجود میآید؛ مسائلی نظیر مدیریت تغییرات و scaling و چنانچه نرم افزار بصورت صحیحی توسعه نیافته باشد، میتوان گفت که انجام موارد ذکر شده بسیار سخت یا شاید غیر ممکن شوند و باید نرم افزار، بازنویسی شود. برای روشن شدن موضوع یک مثال میزنم. فرض کنید یک نرم افزار جامع بیمه (Core Insurance) داریم که بصورت یک نرم ...
شاید
مهمترین اصل در سیستمهای توزیع شده، تقسیم وظایف در سخت افزارهای جداگانه و نحوه
مدیریت ارتباط بین این وظایف باشد. مدیریتی که بدون آن، زمانیکه تعداد وظایف سیستم شما زیاد میشود، سیستم را با مشکلات جدی روبرو میکند. به احتمال زیاد شما نیز تاکنون با چنین مشکلاتی مواجه شدهاید، آن هم زمانیکه تعداد Applicationهای سیستمهایتان زیاد میشود و به تدریج وابستگیها و ارتباطات بین آنها نیز افزایش پیدا کرده و بدلیل اینکه شما از قبل زیرساختی ب ...
در بخشهای قبل، دلایل بوجود آمدن سیستمهای توزیع شده بررسی شد و تاکید کردیم که نیازمندیها، باعث تغییر و تکامل سیستمهای ما میشوند و بر همین اساس بررسی کردیم که چه نیازمندیهایی باعث میشوند که دیگر سیستمهای متمرکز به تنهایی پاسخگوی نیازهای ما نباشند و عاملی شوند برای رفتن به سمت سیستمهای توزیع شده. گفتیم که اتخاذ تصمیمات نادرست چه عواقبی را برای سیستمهای ما بوجود میآورد و بر همین اساس مهمترین فاکتورها را در انتخاب سیستمهای توزیع شده، به ...
بدلیل اینکه یکی از مهمترین معایب سیستمهای توزیع شده، پیچیدگی در طراحی و پیاده سازی این نوع از سیستمها میباشد و آشنا بودن ما با تعاریف، خصوصیات، مزایا، معایب، اهداف و اصطلاحات موجود در این نوع سیستمها، باعث کاهش این پیچیدگیها و مدیریت و کنترل بیشتری بر روی این پیچیدگیها میشود، پیش نیاز ورود به دنیای سیستمهای توزیع شده و استفاده از ابزارهای مرتبط با آنها، آشنا بودن با مفاهیم فوق است.
در این بخش تعاریف، خصوصیات، مزایا و معایب ...
همیشه نیازمندیهای ما باعث انتخاب نوع طراحی و پیاده سازی ما میشوند و لزوما چیزی که برای ما جذابتر و پیچیدهتر است، باعث موفقیت سیستمی که طراحی میکنیم نمیشود. چه بسا که یک انتخاب نادرست و نادیده گرفتن یک یا چند نیازمندی، باعث شود هیچ یک از مواردی که شما برای انتخاب آن نوع طراحی در نظر گرفته بودید، محقق نشوند. هدف من از ارائه این بخش، معرفی مهمترین فاکتورهایی است که شما میتوانید با استفاده از آنها تصمیم بگیرید که آیا باید سیستم خود را بص ...
قبل از شروع به بحث در مورد سیستمهای توزیع شده، بهتر است ابتدا به سوالی اساسی که اساس بوجود آمدن سیستمهای توزیع شده است، پاسخ دهیم:
چرا یک سخت افزار به تنهایی پاسخگوی همه نیازهای ما نیست؟
همه میدانیم که در یک هستهی از پردازنده، چیزی بعنوان پردازش موازی وجود ندارد. هر هسته در هر لحظه میتواند یک پردازش را انجام دهد و این سرعت بالای در پردازش عملیات جاری و سوئیچ کردن بین دیگر عملیات است که حس موازی اجرا شدن آن ...
در حوزه کاری ما همیشه نیازمندیهای جدید باعث پیشرفت، ارتقاء و پیچیدهتر شدن سیستمهای سخت افزاری و نرم افزاری میشوند. بطور مثال زمانیکه نیاز شد چندین سیستم از دادههای مشترکی استفاده کنند، در معماری Single Tier قسمت Database از سایر قسمتها جدا شد و در سخت افزار دیگری قرار گرفت. به این صورت این معماری تبدیل به Two Tier شد و سپس برای اینکه تغییرات، کمترین تاثیر را در سیستم ما داشته باشد و با کمترین هزینه به Platformهای دیگر نیز سرویس بدهی ...