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