330 likes | 651 Views
سیستم های توزیع شده فصل 2 – جلسه 5. مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92. جدول زمانبندی درس. معماری ها ( Architectures ). استایل های معماری معماری های سیستم معماری در برابر میان افزار
E N D
سیستم های توزیع شدهفصل 2 – جلسه 5 مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92
معماری ها (Architectures) • استایل های معماری • معماری های سیستم • معماری در برابر میان افزار • خودتنظیمی در سیستم های توزیعی
معماری ها (Architectures) • استایل های معماری • معماری های سیستم • معماری در برابر میان افزار • خودتنظیمی در سیستم های توزیعی
استایل های معماری • به چه دلیل به ساختارها می پردازیم؟ • قطعات پیچیده ای از نرم افزار داریم. • روی ماشین های متعددی پراکنده شده اند. • اگر ساختار منظمی نباشد، هرج و مرج می شود. • معماری سیستم تشکیل شده از • سازماندهی منطقی • چگونگی سازماندهی مؤلفه های نرم افزاری و نحوه تعامل آنها • پیاده سازی واقعی • چگونگی قرار دادن مؤلفه های نرم افزاری روی ماشین های واقعی • هدف اصلی سیستم های توزیعی این است که • برنامه های کاربردی • پلتفرم ها • را از هم مجزا کند تا بتوان به راحتی کاربردها را به سیستم اضافه کرد و سیستم را گسترش داد. • کار میان افزار: شفافیت را تأمین می کند.
استایل های معماری (2) • استایل تشکیل شده از • مؤلفه ها (Components) • رابط ها (Connectors) • مؤلفه ها • واحدهای ماجولاری هستند که واسط های آنها به خوبی تعریف شده • به راحتی قابل جایگزین کردن هستند. • زیرا واسطهای آنها به خوبی تعریف شده است. • رابطها • مکانیزم های ارتباطی بین مؤلفه ها هستند. • RPC، RMI، MOC، SOC، ... • بنابراین یک رابط دو مؤلفه را به یکدیگر وصل می کند.
استایل های معماری (3) • انواع استایل های معماری عبارتند از: • معماری های لایه ای • معماری مبتنی بر شیء • معماری های داده محور • معماری های مبتنی بر رخداد • ساختار لایه ای: • هر لایه از سرویس های لایه پایین خود استفاده می کند. • جهت سرویس دهی از پایین به بالاست. • در واقع لایه بالایی، لایه زیرین خود را چک می کند که آیا پیغامی دارد یا خیر.
معماری های مبتنی بر شیء • هر شیء متناظر با یک مؤلفه است. • اشیاء توسط RPC می توانند به یکدیگر متصل شوند. • نسبت به مدل لایه ای شُلتر (loose) است. • محدودیتهای ساختار لایه ای که هر لایه به لایه بالاترش سرویس می دهد را ندارد. • هر شیء می تواند به اشیاء دیگر سرویس بدهد. • به مدل کلاینت-سرور نیز قابل تطبیق است ولی برای مدل P2P مناسب تر است. • بیشتر سیستم های نرم افزاری بزرگ توزیع شده از دو مدل لایه ای و مبتنی بر شیء پیروی می کنند.
معماری های داده محور • ایده اصلی:ارتباط فرآیندها از طریق • یک انبار مشترک (passive یا active) است یا یک فضای مشترک (shared space) • مثال: shared distributed file system یا web-based distributed systems در فصل 12 • فرآیندها یکدیگر را فراخوانی نمی کنند بلکه روی داده های مشترک کار انجام می دهند. • آدرس دهی در این مدل لازم است. • محدودیت زنده بودن هر دو طرف در حین ارتباط برداشته می شود. • در مدل مبتنی بر شیء باید هر دو طرف ارتباطی زنده باشند.
معماری های مبتنی بر رخداد • فرآیندها از طریق انتشار رخدادها با یکدیگر در ارتباط هستند. • ممکن است رخدادها شامل داده ها نیز باشند. • شامل دو مفهوم: • انتشار (publish) • مشترک شدن (subscribe) • میان افزار اطمینان می دهد که فقط فرآیندهایی که پیشتر برای رخداد خاصی مشترک شده اند، آن رخدادها را دریافت می کنند. • لازم نیست مؤلفه هایی که رخدادی را منتشر می کنند آدرس گیرنده خاصی را بدهند. • این سیستم نیز loosely coupled است. • همچنین referentially decoupled است. • یا decoupled in space • به این معنی که لازم نیست به مؤلفه خاصی ارجاع دهیم.
معماری های مبتنی بر رخداد (2) • نکته: هر چه پیش می رویم محدودیت ها کمتر می شوند. • مصالحه: هرچه محدودیتهای بیشتری را برداریم، تضمین هایی که می توانیم بدهیم کمتر خواهد بود. • مدل فضای داده مشترک(Shared data spaces) • ترکیب معماری های داده محور و مبتنی بر رخداد • Decoupled in time and space • دارای واسط شبه-SQL • همه مدلها، هدفشان شفافیت است.
سرفصل مطالب • استایل های معماری • معماری های سیستم • معماری در برابر میان افزار • خودتنظیمی در سیستم های توزیعی
معماری های سیستم • معماری سیستم: تقسیم بندی سیستم های توزیعی براساس اینکه • مؤلفه های نرم افزاری کجا قرار داده شده اند. • و چگونه با یکدیگر تعامل دارند. • دسته بندی معماری های سیستم • متمرکز (centralized) • غیرمتمرکز (decentralized) • پیوندی (hybrid) • در معماری متمرکز: • توافق روی مدل کلاینت-سرور است. • مؤلفه سرویس دهنده و سرویس گیرنده که ممکن است نقش هایشان جابجا شود. • به نام مدل 2-tiered شناخته می شود.
مدل کلاینت-سرور • کلاینت فعال (active) است. • شروع کننده ارتباط • سرور منفعل (passive) است. • منتظر درخواست می ماند. تا کلاینت درخواستی نفرستد، جوابی نمی دهد. • اگر ارتباط C/S از نوع مطمئن و با سرعت بالا باشد • میتوان از سرویس غیرمتصل استفاده کرد. • در این نوع ارتباط خرابی و گم شدن کم اتفاق می افتد. • در شبکه های وسیعتر که خیلی مطمئن نیستند از سرویس متصل استفاده می شود. • زیرا کلاینت نمی تواند بین گم شدن درخواست یا جواب تمایز قائل شود. • مانند استفاده از سرویس TCP که ابتدا اتصال برقرار می کند.
مدل کلاینت-سرور، لایه ای کردن برنامه های کاربردی • در مدل C/S قسمتی از برنامه های کاربردی سمت کلاینت خواهد بود و قسمتی سمت سرور. • سؤال: چگونه تقسیم کنیم؟ آیا راه حل مشخصی دارد؟ • معمولاً بخش برنامه کاربردی (در مدل C/S) عبارتست از سه سطح: • واسط کاربری • پردازشی • داده • این تقسیم بندی عمودی است (مشابه معماری لایه ای) • مثال: عملیات بانکی: • قسمتی که کاربر با آن در ارتباط است (واسط کاربری) • سروری که درخواست ها را از کاربر گرفته و به پایگاه داده ارسال می کند و جواب را پردازش می کند (سطح پردازشی) • پایگاه داده ای که اطلاعات در آنجاست (سطح داده)
لایه ای کردن برنامه های کاربردی (2) • مثال دیگر: موتور جستجوی اینترنت
لایه ای کردن برنامه های کاربردی (3) • مثال دیگر: سیستم پشتیبانی تصمیم (Decision Support System) برای بازار سهام • در سطح داده، داده های سهام جمع آوری می شود. • سطح پردازش در این کاربرد می تواند خیلی پیچیده و بزرگ باشد (تحلیل های آماری، هوش مصنوعی) • واسط کاربری نیز با کاربر در تماس است. • به طور کلی سطح داده در مدل C/S • Persistentاست. • حتی اگر برنامه کاربردی هم اجرا نشود داده ها جمع آوری می شوند. • معمولاً در سمت سرور است. • سازگاری بین داده ها نیز باید نگه داشته شود. • معمولاً به صورت پایگاه داده پیاده سازی و نگهداری می شود.
معماری های multi-tiered • حالت های مختلف توزیع کردن برنامه های کاربردی روی کلاینت و سرور: • حالتهای a و b: کلاینت dumb terminal است. • حالت c: پُر کردن یک فُرم سمت کلاینت یا برنامه پردازش کلمه که کارهای چک کردن گرامر را در سمت سرور انجام می شود. • حالت های d و e: در سازمانها معمول است. کلاینتهای قوی از طریق شبکه به فایل سیستم شبکه ای دسترسی دارند.
معماری های multi-tiered (2) • علیرغم اینکه امروزه کلاینتها بسیار قوی شده اند • در سالهای اخیر حرکت از حالت های d و e به سمت ساختارهای aو b می رود. • دلایل رفتن از کلاینت چاق به سمت کلاینت لاغر • مدیریت کلاینتهای زیاد سخت است. • مستعد خطا هستند. • وابسته به پلتفرم هستند. • آیا این معنای بی نیاز شدن از سیستم های توزیعی است؟ • خیر، در واقع برنامه های کاربردی طرف سرور را روی تعداد بیشتری سرور توزیع می کنیم. • هر سروری خودش ممکن است کلاینت باشد نسبت به سرور دیگر. • معماری multi-tiered (چند لایه ای)
معماری های multi-tiered (3) • یک معماری three-tiered (سه لایه ای) • مثال: سیستم های پردازشی تراکنشی (فصل 1) • مثال: سازماندهی سایت های وب (فصل 12)
معماری های multi-tiered (4) • ساختارهای ذکر شده، به صورت عمودی کار می کنند. • توزیع عمودی (Vertical distribution) • یعنی وظایف یک برنامه کاربردی را به صورت فیزیکی و منطقی تقسیم کرده اند. • بنابراین: توزیع لایه های مختلف روی ماشینهای مختلف در معماری multi-tiered می شود توزیع عمودی • توزیع افقی (Horizontal distribution) • توزیع یک لایه روی ماشین های مختلف • مانند شبکه های p2p • سیستم پردازشی تراکنشی • هم توزیع عمودی دارد هم افقی • نکته: ساختارهایی که تاکنون گفتیم نامتقارن هستند.
معماری های غیرمتمرکز • یادآوری: معماری های سیستم • معماری های متمرکز • معماری های غیرمتمرکز • معماری های پیوندی • غیرمتمرکز • توزیع کردن کلاینت ها و سرورها • توزیع افقی • هر قسمت روی سهم مربوط به خودش از داده ها عمل می کند. • سیستم های مدرن خیلی به ساختارهای نظیر-به-نظیر روی آورده اند.
معماری های غیرمتمرکز (2) • منظور از نظیرها پروسس ها هستند روی ماشین ها • توابع موردنظر توسط هر نظیر اجرا می شود. • برخلاف ساختار نامتقارن کلاینت-سرور که هر کدام یک تابع را اجرا میکردند. • تعامل پروسس ها به صورت متقارن است. • در یک سیستم P2P، پروسس ها به صورت overlay سازماندهی میشوند. • زیر این شبکه منطقی، یک شبکه فیزیکی وجود دارد که اتصالات فیزیکی را برقرار می کند که از نظر پروسس های شبکه P2P دیده نمی شود. • شبکه های نظیر-به-نظیر • ساخت یافته (Structured) • بدون ساختار (Unstructured)
شبکه های نظیر-به-نظیر ساخت یافته • عمدتاً حول ایده جدول درهم توزیعی (DHT) کار می کنند. • شبکه Chord • شبکه CAN • شبکه Chord • ساختار حلقوی • پروسس ها و آیتم های داده ای را داریم که مجموعه داده ها را می سازند. • به هر آیتم داده یک عدد تصادفی منتسب می شود که به آن کلید (key) گفته می شود. • مثلاٌ کلیدهای 128 بیتی یا 160 بیتی که احتمال یکسان شدن آنها بسیار کم باشد. • به هر پروسس نیز یک شناسه تصادفی تخصیص می دهیم.
شبکه Chord • پروسس ها براساس شناسه خود در یک حلقه به یکدیگر متصل می شوند. • مثلاً شناسه های 1، 4، 7، 12 و 15 • هر گره باید همسایه قبلی (predecessor) و بعدی (successor) خود را بشناسد. • از نظر فیزیکی ممکن است بین هر دو گره، گره های دیگری نیز باشند. • فرض کنید 16 آیتم داده ای داریم: 0، 1، ...، 15 • هر کلید به یک گره (شناسه) متناظر می شود. • به شناسه ای که از نظر عددی ID >= key • بنابراین آیتم های داده ای 0 و 1 به گره 1 منتسب می شوند و ...
شبکه Chord (3) • مدیریت شبکه: • پیوستن (join) و ترک کردن (leave) گره ها به/از شبکه به چه صورتی باشد. • شبکه استاتیک نیست. • الگوریتم پیوستن • تولید یک شناسه تصادفی • جستجوی شناسه (گره بعدی این شناسه برگردانده می شود) • تماس با گره بعدی (و قبلی) این گره • درج گره جدید بین گره های بعدی و قبلی • انتقال آیتم های داده ای • الگوریتم ترک کردن • آگاه کردن گره های قبلی و بعدی • انتقال داده ها • این الگوریتم ها قطعی (deterministic) هستند که یکی از مشخصه های معماری های ساخت یافته است.
شبکه CAN • نمونه دیگری از معماری ساخت یافته • Content Addressable Network (CAN) • عددهای تصادفی در فضای دو بعدی اختصاص می یابند. • هر پروسس یک ناحیه ای دارد. • هر آیتم داده یک عدد تصادفی می گیرد، اگر در ناحیه یک پروسس بود به آن منتسب می شود. • برای پیوستن یک گره جدید، باید: • یک پروسس به صورت تصادفی انتخاب شود. • ناحیه خود را به دو قسمت کند. • داده های مربوط به خود را بردارد.
شبکه CAN (2) • ترک کردن شبکه مشکل است: • گرهی که می خواهد شبکه را ترک کند باید مدیریت ناحیه خود را به یکی از همسایه ها بدهد. • فضایی که ادغام می شود از حالت مستطیلی خارج خواهد شد! • راه حل: یک پروسس در پس زمینه شبکه وجود دارد که فضا را پارتیشن بندی می کند تا به صورت مستطیل درآید. پیوستن یک گره جدید و تقسیم کردن فضا