430 likes | 896 Views
سیستم های توزیع شده ادامه فصل 6– جلسه 17. مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92. جدول زمانبندی درس. سرفصل مطالب. مقدمات سنکرون سازی ساعت ها ساعت منطقی انحصار متقابل مشخص کردن محل گره ها الگوریتم های انتخاب.
E N D
سیستم های توزیع شدهادامه فصل 6– جلسه17 مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92
سرفصل مطالب • مقدمات • سنکرون سازی ساعت ها • ساعت منطقی • انحصار متقابل • مشخص کردن محل گره ها • الگوریتم های انتخاب
سرفصل مطالب • مقدمات • سنکرون سازی ساعت ها • ساعت منطقی • انحصار متقابل • مشخص کردن محل گره ها • الگوریتم های انتخاب
مقدمه • همکاری و همزمانی بین فرآیندها در سیستم های توزیعی • لازمه دسترسی همزمان فرآیندها به منابع • راه حل: الگوریتم های انحصار متقابل (Mutual exclusion) • الگوریتم های انحصار متقابل توزیعی • مبتنی بر توکن (token-based) • مبتنی بر پاس دادن پیغام خاص اجازه دسترسی تحت عنوان توکن • از starvation جلوگیری می کند (هر فرآیند شانس به دست آوردن توکن را دارد). • از بن بست (deadlock) جلوگیری می کند (فرآیندها در حلقه ای منتظر یکدیگر نمی مانند). • مشکل: وقتی که توکن گم می شود. • مبتنی بر اجازه (permission-based) • فرآیندی که منبع را می خواهد باید اجازه آن را از فرآیندهای دیگر داشته باشد.
الگوریتم متمرکز (centralized) • یک فرآیند به عنوان هماهنگ کننده (coordinator) انتخاب می شود. • فرآیندی که می خواهد منبع را بگیرد، پیغامی به هماهنگ کننده می فرستد که مشخص می کند چه منبعی را می خواهد. • اگر فرآیند دیگری منبع را در دست نداشته باشد، هماهنگ کننده منبع را به آن فرآیند می دهد. با ارسال یک پیغام جوابدهی. بلاک کردن فرآیند 2
الگوریتم متمرکز (2) • ویژگی های الگوریتم متمرکز: • الگوریتم انحصار متقابل را تضمین می کند. • هماهنگ کننده فقط به یک فرآیند اجازه دسترسی می دهد. • عدالت را نیز رعایت می کند. • درخواست ها به ترتیب رسیدن جواب می دهد. • Starvation رخ نمی دهد. • پیاده سازی آن ساده است. • شامل سه پیغام است. • هماهنگ کننده، single point of failure است. • بین خراب شدن هماهنگ کننده و اجازه ندادن تمایزی وجود ندارد. • هماهنگ کننده، در یک سیستم بزرگ گلوگاه کارایی است. • باید بین پیغام ها تمایز وجود داشته باشد.
الگوریتم غیرمتمرکز (decentralized) • گسترش روش قبلی با بیش از یک هماهنگ کننده: • استفاده از یک سیستم رأی گیری مبتنی بر DHT • از هر منبع n تا کپی داشته باشیم. • هر کپی، هماهنگ کننده خود را داشته باشد. • هر فرآیند برای به دست آوردن اجازه یک منبع باید اجازه اکثریت m > n/2هماهنگ کننده ها را به دست آورد. • اگر هماهنگ کننده ای نمی تواند اجازه دسترسی بدهد، با یک پیغام denied به صراحت اعلام می کند. • آسیب پذیری در مقابل خرابی های یک هماهنگ کننده کمتر می شود. • اگر هماهنگ کننده ای خراب شود، تمام رأی های قبلی که داده است را فراموش می کند.
الگوریتم غیرمتمرکز (2) • حالت فراموشی مانند reset شدن هماهنگ کننده است: • اگر p احتمال ریست شدن هماهنگ کننده ای در بازه باشد، احتمال P[k] که در آن k تا از m تا هماهنگ کننده دیگر نیز در همان بازه ریست شوند عبارتست از: • با فرض اینکه حداقل 2m-n تا از هماهنگ کننده ها باید ریست شوند تا صحت الگوریتم رأی گیری را خراب کنند، احتمال رخ دادن چنین حالتی عبارتست از:
الگوریتم توزیعی • الگوریتم ریکارت و آگراوالا • فرض می شود یک ترتیب کامل از رویدادها در سیستم وجود دارد. • برای هر زوج از رویدادها (پیغامها)، مشخص است که کدام زودتر رخ داده است. • فرآیندی که منبعی را می خواهد، پیغامی شامل اسم منبع، شماره شناسه خودش و زمان منطقی فعلی را به همه و از جمله خودش می فرستد. • فرض می شود که پیغام ها گم نمی شوند. • فرآیندی که پیغام را دریافت می کند برحسب اینکه حالت خودش نسبت به آن منبع چگونه باشد سه حالت تصمیم گیری دارد:
الگوریتم توزیعی (2) • سه حالت: • اگر گیرنده منبع را در اختیار نداشته باشد و آن را نخواهد، پیغام OK برمی گرداند. • اگر گیرنده منبع را در اختیار داشته باشد، جوابی برنمی گرداند و درخواست را در صف قرار می دهد. • اگر گیرنده منبع را در اختیار نداشته باشد ولی خودش هم بخواهد، مهرزمانی پیغام را با پیغام خودش که فرستاده مقایسه می کند. اگر مهرزمانی پیغام دریافتی کوچکتر باشد، پیغام OK برمی گرداند. در غیر این صورت، درخواست را در صف قرار می دهد.
الگوریتم توزیعی (3) • الگوریتم به درستی کار می کند زیرا: • در حالت تداخل درخواستها، فرآیندی که زمان کمتری دارد منبع را به دست می گیرد و همه روی ترتیب وقایع توافق دارند. • ویژگی های الگوریتم توزیعی: • انحصار متقابل تضمین می شود زیرا از بن بست و گرسنگی اجتناب می کند. • تعداد پیغام ها به ازای هر درخواست 2(n-1) تا است. • n تعداد کل فرآیندهای سیستم است. • Single point of failure در سیستم نداریم. • در عوض n point of failureداریم! • اگر هر فرآیندی خراب شود، پیغامی ارسال نمی شود که به معنی بلاک شدن بقیه است.
الگوریتم توزیعی (4) • مشکل n point of failure با متمایز کردن جوابها حل می شود: • وقتی درخواستی دریافت می شود، گیرنده باید حتماً جوابی برگرداند که نشان دهنده دادن یا ندادن اجازه است. • وقتی جوابی دریافت نشود، تایمر فرستنده منقضی شده و یا فرستنده باز هم درخواست می فرستد یا نتیجه می گیرد که گیرنده خراب شده است. • مشکل دیگر: • آیا از روش های چندپخشی استفاده شود؟ • یا هر فرآیندی لیستی از فرآیندهای گروه خودش داشته باشد؟ • روش به ازای گروه های کوچک خوب کار می کند.
الگوریتم توزیعی (5) • حل مشکل گلوگاه کارایی روش اول در این روش: • همه فرآیندها در همه درخواستها مشارکت داده می شوند. • اگر یکی نتواند جواب دهد، بعید است که بتوان از بقیه نیز انتظار همکاری داشت! • بهبودهایی برای حل مشکل آخر: • استفاده از اجازه دسترسی از طرف اکثریتی از فرآیندها به جای اجازه دسترسی تمام فرآیندها • روش کندتر، پیچیده تر، هزینه بیشتر و پایداری کمتری نسبت به نسخه اولیه دارد.
الگوریتم حلقه توکن • روش دیگر مانند شبکه های اترنت • متناظر کردن شبکه با یک حلقه و هر فرآیند یک مکانی در حلقه دارد. • مهم این است که هر فرآیند ترتیب قرارگیری خود را در حلقه بداند. • ابتدا توکن به فرآیند 0 داده می شود. • توکن از فرآیند k به فرآیند k+1 پاس داده می شود (در پیمانه اندازه حلقه). • فرآیندی که توکن را می گیرد، اگر منبعی را بخواهد آن را استفاده می کند و وقتی کار خود را به اتمام رساند، توکن را به همسایه خود پاس می دهد. • دوبار استفاده پشت سر هم از توکن مجاز نیست. • اگر فرآیندی توکن را گرفته باشد ولی منبع را لازم نداشته باشد، آن را به همسایه خود پاس می دهد.
الگوریتم حلقه توکن (2) • ویژگی های الگوریتم: • در هر لحظه فقط یک فرآیند به منبع دسترسی دارد. • گرسنگی اتفاق نمی افتد زیرا توکن همه فرآیندها را پیمایش می کند. • بدترین حالت انتظار برای یک فرآیند، تأخیر به اندازه استفاده تمام فرآیندهای دیگر است. • اگر توکن گم شود باید دوباره تولید شود. • اگر فرآیندی که توکن را دارد نیز خراب شود، مشکل ایجاد می شود ولی بهتر از الگوریتم های دیگر است. • اگر فرآیندی که توکن را می گیرد یک ack بفرستد مشکلات حل می شوند.
مقایسه بین الگوریتم ها برای حالتی که زمان استفاده از یک منبع کوتاه است (عامل اصلی در تأخیر، مکانیزم مورداستفاده برای دسترسی به منبع). همان سه پیغام به ازای تمام mهماهنگ کننده و هر کدام k تلاش برای بدست گرفتن Single point of failure (Req, Grant, release) دو پیغام req و grant به تمام n-1 فرآیند دیگر 1 برای وقتی که تمام فرآیندها بخواهند به صورت ثابت وارد/خارج ناحیه بحرانی شوند (هر عبور توکن معادل یک ورود/خروج بی نهایت برای وقتی که توکن می چرخد و فرآیندی علاقه ای به گرفتن آن ندارد. 0 برای حالتی که وقتی توکن میرسد، فرآیند نیز منبع را لازم دارد. n-1 برای حالتی که وقتی توکن به همسایه داده می شود، فرآیند منبع را لازم دارد.
سرفصل مطالب • مقدمات • سنکرون سازی ساعت ها • ساعت منطقی • انحصار متقابل • مشخص کردن محل گره ها • الگوریتم های انتخاب
مشخص کردن محل گره ها • با بزرگ شدن شبکه ها، دنبال کردن گره ها توسط هر گره، کار مشکلی می شود. • کاربرد: مسیریابی، چندپخشی، جستجوها، ... • یک راه: گره ها در توپولوژی هایی چیده شوند که کارهای ذکر شده را بتوان راحتتر انجام داد. • در شبکه های geometric overlay • هر گره مکانی در فضای m بعدی هندسی دارد. • فاصله بین دو گره در این فضا، نشان دهنده یک معیار کارایی واقعی است. • مثلاً: فاصله ای (d(P,Q)) که نشان دهنده تأخیر بین دو گره باشد. • کاربردهای شبکه های geometric overlay • وب سایتی که روی یک سرور O روی سرورهای S1,…, Skکپی شده. وقتی درخواستی از کلاینت C میرسد، به نزدیکترین سرور فرستاده می شود. به شرطی که سرور O فاصله را داشته باشد. • محاسبه بهترین مکان برای قرارگیری سرورهای کپی: با این فرض که سرور محل کلاینتهایش را دارد. • مسیریابی مبتنی بر مکان: پیغام فقط به همسایه ای فوروارد می شود که فاصله کمتری نسبت به گره فعلی با مقصد داشته باشد.
مشخص کردن محل گره ها (2) • مشخص کردن محل یک گره در یک فضای m بعدی هندسی نیازمند m+1 فاصله تا گره هایی با مکان مشخص است. • اینجا بعد یک پارامتر فیزیکی نیست. بلکه تعریفی است روی اینکه با چند گره می توانیم مکان یک گره را مشخص کنیم. • مثال: فضای 2 بعدی، 3 نقطه • در GPS نیز همینطور است. معادلات: • معمولاً di متناظر با اندازه گیری تأخیر بین نقطه P و نقطه iاست. • ممکن است مقدارش در طول زمان تغییر کند. می تواند باعث بروز خطا شود. • علاوه بر این، گره های دیگری که مکان خود را با P تخمین می زنند در معرض انتشار خطا خواهند بود.
مشخص کردن محل گره ها (3) • همچنین: اندازه گیری های مختلف با گره های متفاوت ممکن است با یکدیگر سازگار نباشد. • همیشه نمی توان این ناسازگاری را حل کرد. • مثال: اندازه گیری تأخیرها در شبکه اینترنت، نامساوی مثلث را نقض می کند.
مشخص کردن محل گره ها (4) • یک روش برای بهبود ناسازگاری ها: • استفاده از L گره به نام گره های راهنما (landmark)، b1, …, bl • گره های راهنما تأخیر بین خودشان را دو به دو اندازه می گیرند (d(bi,bj)). • آن را به یک گره مرکزی می فرستند تا مختصات هر گره را محاسبه کند. مختصات گره مرکزی معلوم است. • گره مرکزی عبارت زیر را مینیمم می کند (تابع خطای تجمیع شده): • پارامتر پنهان درمینیمم سازی m است. • داریم L > m • بعد از این، یک گره P فاصله خود تا هر یک از L گره راهنما را اندازه گرفته و مختصات خود را با مینیمم کردن رابطه زیر بدست می آورد: فاصله محاسبه شده بعد از بدست آمدن مکانها
مشخص کردن محل گره ها (5) • نشان داده شده است که: • به ازای m=6, 7، فاصله بدست آمده کمتر از 2 برابر تأخیر اندازه گیری شده خواهد بود. • روش دیگر جرم و فنر: • گره ها بوسیله فنرهایی به یکدیگر وصل هستند. • مقدار نشان دهنده این است که گره های P و Q نسبت به حالتی که سیستم در حالت تعادل است، چقدر از یکدیگر دورند. • اگر به گره ها اجازه تغییر مکان بدهیم، سیستم در نهایت به حالت بهینه همگرا می شود و خطا مینیمم می شود.
سرفصل مطالب • مقدمات • سنکرون سازی ساعت ها • ساعت منطقی • انحصار متقابل • مشخص کردن محل گره ها • الگوریتم های انتخاب
الگوریتم های انتخاب • بسیاری از الگوریتم ها نیاز به یک گره هماهنگ کننده، شروع کننده، ... دارند. • فرضیات: • گره ها یک شماره یکتا دارند، مانند آدرس شبکه، ... • یک فرآیند به ازای هر ماشین داریم. • فرآیندها شماره های یکدیگر را می دانند. • فرآیندها نمی دانند کدامیک الآن فعال و یا غیرفعال است. • هدف الگوریتم های انتخاب این بخش: • مشخص کردن فرآیند با شماره بیشتر به عنوان هماهنگ کننده به طوری که همه روی آن توافق داشته باشند. • الگوریتم های انتخاب: • روش های کلاسیک (مرسوم) • روش های بکاررفته در شبکه های بی سیم • روش های بکاررفته در شبکه های با مقیاس بزرگ
الگوریتم Bully (روش تهاجمی) • وقتی که گرهی تشخیص داد هماهنگ کننده دیگر کار نمی کند، الگوریتم را شروع می کند. گره P: • P پیغام ELECTION به همه فرآیندهای با شماره بیشتر از خودش می فرستد. • اگر کسی جواب نداد، P برنده است و هماهنگ کننده می شود. • اگر فرآیندی با شماره بیشتر جواب داد، P کنار می کشد. • اگر فرآیندی پیغام ELECTION از فرآیندی با شماره کمتر از خودش دریافت کرد با پیغام OK جواب می دهد. • سرانجام همه فرآیندها کنار می کشند به جز فرآیند با بزرگترین شماره. • فرآینده برنده با ارسال یک پیغام به همه اعلام می کند که هماهنگ کننده است.
الگوریتم حلقوی • فرض می شود که فرآیندها به صورت حلقوی در کنار هم قرار گرفته اند. • هر فرآیندی بعدی خود را می شناسد. • فرآیندی که متوجه خراب شدن هماهنگ کننده می شود، یک پیغام ELECTION به گره بعدی خود می فرستد. • شامل شماره خود فرآیند • در طول مسیر حلقوی که پیغام پیمایش می شود، هر گرهی که آن را دریافت می کند، شماره خود را به لیست آن اضافه می کند. • در نهایت پیغام دوباره به فرآیند شروع کننده میرسد و فرآیند با شماره بزرگتر راانتخاب کرده و با یک پیغام COORDINATOR به همه اعلام می کند که چه فرآیندی هماهنگ کننده است. • اگر همزمان فرآیند دیگری نیز تشخیص به خرابی هماهنگ کننده داده و پیغام ELECTION فرستاد، صحت الگوریتم برقرار است، فقط دو پیغام در شبکه می چرخد.
انتخاب در شبکه های بی سیم • فرضیات شبکه های بی سیم: محیط غیر قابل اطمینان و توپولوژی متغیر • یک روش انتخاب در شبکه های بی سیم (2004): • یک گره به نام سورس با ارسال پیغام ELECTION به همسایه هایش الگوریتم را آغاز می کند. • گرهی که پیغام ELECTION را دریافت می کند(R)، گره ارسال کننده (Q) را به عنوان پدر خود ثبت می کند و آن را به همسایه های دیگرش (به جز پدرش) ارسال می کند. • اگر گره R پیغام را از گره دیگری به غیر از پدرش دریافت می کند، ack برمی گرداند. • گره R که پیغام ELECTION فوروارد می کند منتظر می ماند تا پیغام ack از گره های همسایه اش دریافت کند و سپس پیغام ack به پدرش Q برمی گرداند. • اگر همسایه های R گره پدر خود را انتخاب کرده باشند، به سرعت به R جواب ack برمی گردانند. در این صورت گره R یگ گره برگ است. • گرهی که برگ است اطلاعات خودش از قبیل مقدار باتری باقی مانده را برای پدرش ارسال می کند. • گره پدر از بین پیغام های دریافتی بهترین گره را انتخاب کرده و برای پدرش می فرستد. • در نهایت گره سورس بهترین گره را از بین پیغام های دریافتی انتخاب کرده و آن را به همه broadcast می کند.
انتخاب در شبکه های با مقیاس بزرگ • در شبکه های P2P بیش از یک هماهنگ کننده باید انتخاب شود. • Superpeer ها • نیازمندی های انتخاب superpeer ها: • گره های معمولی باید سرعت دسترسی بالایی به آنها داشته باشند. • Superpeer ها باید به صورت یکنواخت در سطح شبکه توزیع شده باشند. • نسبت مشخصی از superpeer به تعداد کل گره های شبکه باید موجود باشد. • هر superpeer تعداد مشخصی گره را سرویس می دهد. • رسیدن به این نیازمندی ها در شبکه های ساخت یافته (مبتنی بر DHT) و تصادفی غیرساخت یافته تقریباً شدنی است.
انتخاب در شبکه های با مقیاس بزرگ (2) • در سیستم مبتنی بر DHT: • هر گره یک شناسه m بیتی به صورت تصادفی و یکنواخت دارد. • k بیت سمت چپ برای شناسایی superpeer ها • اگر N تا superpeer لازم باشد، اولین بیت از هر کلیدی را می توان برای شناسایی این گره ها بکار برد. • فرض: m=8, k=3 • اگر دنبال گرهی با کلید p هستیم، درخواست جستجو را برای یافتن گرهی با الگوی p AND 11100000 دنبال می کنیم. • یعنی هر گره، 3 بیت سمت چپ شناسه خود را بررسی می کند، اگر superpeer بود که مقدار کلید برگردانده می شود. • در غیر این صورت، خود این گره می شود superpeer. • به ازای N گره، تعداد superpeer ها می شود:
انتخاب در شبکه های با مقیاس بزرگ (3) • راه حل دیگر: • قرار دادن گره ها در یک فضای هندسی m بعدی • فرض: N تا superpeer را می خواهیم به صورت یکنواخت در شبکه overlay توزیع کنیم. • N توکن را به صورت تصادفی بین N گره توزیع می کنیم. • هر گره بیش از یک توکن نمی تواند نگه دارد. • هر توکن یک نیروی دافعه نسبت به توکن دیگر دارد. • بنابراین توکن ها از یکدیگر دور شده و در سطح شبکه به صورت یکنواخت توزیع می شوند. • گره هایی که توکن دارند باید در مورد توکن های دیگر اطلاعات داشته باشند. از روش شایعه پراکنی برای انتشار نیروی توکن استفاده می شود. • اگر گرهی متوجه شد که مجموع نیروهای ورودی به آن بیشتر از آستانه مشخصی است، توکن را در جهت مجموع برآیند نیروهای توکن ها از خود دور می کند.
انتخاب در شبکه های با مقیاس بزرگ (3) • وقتی گرهی برای مدت مشخصی توکن را نگه داشته باشد، superpeer می شود.