1 / 23

مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir

سیستم های توزیع شده ادامه فصل 6– جلسه 16. مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92. جدول زمانبندی درس. سرفصل مطالب. مقدمات سنکرون سازی ساعت ها ساعت منطقی انحصار متقابل مشخص کردن محل گره ها الگوریتم های انتخاب.

cicely
Download Presentation

مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. سیستم های توزیع شدهادامه فصل 6– جلسه16 مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92

  2. جدول زمانبندی درس

  3. سرفصل مطالب • مقدمات • سنکرون سازی ساعت ها • ساعت منطقی • انحصار متقابل • مشخص کردن محل گره ها • الگوریتم های انتخاب

  4. سرفصل مطالب • مقدمات • سنکرون سازی ساعت ها • ساعت منطقی • الگوریتم لمپورت • ساعت های برداری • انحصار متقابل • مشخص کردن محل گره ها • الگوریتم های انتخاب

  5. مقدمه • بعضی مواقع کافیست که همه روی یک زمان توافق داشته باشند. • صرف نظر از اینکه این زمان، زمان فیزیکی جهانی است یا نه. • بعضی مواقع، توافق داشتن روی ترتیب رویدادها کافیست. • ساعت منطقی (logical clocks) • لَمپورت (Lamport) نشان داده که: • لازم نیست سنکرون سازی ساعتها مطلق باشد. • اگر دو فرآیند در کار یکدیگر اخلال ایجاد نکنند، نیازی به سنکرون سازی ساعتهای آنها نیست. • همچنین، نیازی به دانستن ساعت یکسان نیست و توافق روی ترتیب رویدادها کافی است. • در ادامه • الگوریتم لمپورت برای سنکرون سازی ساعت های منطقی • تعمیم الگوریتم لمپورت: مهرهای زمانی برداری (vector timestamps)

  6. فرضیات الگوریتم لمپورت • تعریف رابطه ” -- قبل از -- روی داده“ (happens-before) • a -> b یعنی رویداد a قبل از b رخ داده است. • همه فرآیندها توافق دارند که a پیش از b رخ داده است. • این رابطه در دو وضعیت مشاهده می شود: • اگر a و b رویدادهای یک فرآیند باشند و a قبل از b رخ داده باشد، آنگاه a -> b صحیح است. • اگر a رویداد ارسال پیغام توسط یک فرآیند باشد و b رویداد دریافت پیغام توسط فرآیند دیگری باشد، آنگاه a -> b صحیح است. • یک پیغام نمی تواند پیش از ارسالش و یا حتی همزمان با ارسالش دریافت شود. نیاز به پردازش دارد.

  7. فرضیات الگوریتم لمپورت (2) • رابطه ”– قبل از – روی داده“ دارای خاصیت تعدی است (transitive). • اگر a -> b و b -> c آنگاه a -> c • اگر x و y دو رویداد در فرآیندهای جداگانه باشند و پیغامی مبادله نکنند آنگاه x -> y صحیح نیست. • همین طور y -> x نیز لزوماً صحیح نیست. • این رویدادها را همزمان (concurrent) می نامیم. • یعنی چیزی نمی توانیم (یا لازم نیست) راجع به زمان رخ دادن آنها یا ترتیب آنها بگوییم. • می خواهیم به رویداد a زمان رخ دادن C(a) را منتسب کنیم به گونه ای که: • اگر a -> b آنگاه C(a) < C(b) • این تعریف برای دو وضعیت ذکر شده در اسلاید قبل نیز صدق می کند.

  8. الگوریتم لمپورت • نکته مهم: • ساعت C همیشه رو به جلو حرکت می کند، به عقب برگردانده نمی شود. نمی توان یک مقداری را از C کم کرد بلکه باید همیشه به آن اضافه کرد. • سه فرآیند P1، P2 و P3 که روی ماشین های جداگانه هستند را در نظر بگیرید. • ساعتهای آنها یکسان نیست. مثلاً ساعت P1 6 تیک رد کرده در حالی که ساعت P2 8 تیک و ساعت P3 10 تیک. • در ساعت 6، P1 پیغام m1 به P2 می فرستد. • m1 وقتی در P2 دریافت می شود که ساعتش 16 است. • اگر پیغام شامل زمان ارسال 6 باشد، به این معنی است که P2 نتیجه می گیرد پیغام m1 به اندازه 10 تیک در راه بوده است. • امکان پذیر است.

  9. الگوریتم لمپورت (2) • همچنین پیغام m2، از P2 به P3 به اندازه 16تیک در راه بوده است! • پیغام m3 فرآیند P3 را در زمان 60 ترک میکند و در زمان 56 به P2 میرسد! • پیغام m4 فرآیند P2 را در زمان 64 ترک میکند و در زمان 54 به P1 میرسد! • الگوریتم لمپورت باید این مشکل را حل کند.

  10. الگوریتم لمپورت (3) • الگوریتم لمپورت: • هر پیغام، مهرزمانی را مطابق با ساعت فرستنده با خود حمل می کند. • اگر در گیرنده، ساعت گیرنده زمان را قبل از مهرزمانی پیغام نشان دهد، گیرنده ساعت خود را به جلو می کشد (fast forwards) تا جایی که یک واحد بیشتر از مهرزمانی پیغام شود.

  11. الگوریتم لمپورت (4) • این اتفاقات در لایه میان افزار روی می دهد. • برای پیاده سازی الگوریتم لمپورت، هرفرآیند Pi یک شمارنده محلی Ci دارد که طبق روش زیر به روز می شود:

  12. الگوریتم لمپورت (5) • Before executing an event (i.e., sending a message, delivering a message, some other internal event) Pi executes Ci ← Ci + 1 • When process Pi sends a message m to Pj, it sets m’s timestamp ts (m) = Ciafter having executed the previous step. • Upon the receipt of a message m, process Pjadjusts its own local counter as Cj ← max{Cj , ts (m)}, after which it then executes the first step (Cj ← Cj + 1) and delivers the message to the application. ** Use process ID to break ties if necessary. E.g., an event at time 40 at process Pi will be time-stamped with 40.i (a distributed implementation of the global time value we were initially seeking for)

  13. چندپخشی کاملاً مرتب (Totally ordered multicasting) • کاربرد الگوریتم لمپورت: • پایگاه داده حساب های یک بانک که روی چندین سایت replicate شده • یک مشتری در اهواز 100 تومن به حسابش که موجودی 1 میلیون دارد اضافه می کند. • حسابدار سیستم در تهران، موجودی حساب مشتری را به روز می کند به طوری که 1% سود به آن اضافه شود. • هر دو به روزرسانی باید روی هر دو replica اعمال شود ولی به خاطر تأخیرها ممکن است ترتیب شکل زیر دیده شود.

  14. چندپخشی کاملاً مرتب (2) • مقدار ذخیره شده در هر replica متفاوت خواهد بود! • هرچند ترتیب وقایع در مقدار نهایی مهم است ولی اینکه کدام قبل از دیگری باشد مهم نیست! • مهم این است که هر دو replica یک مقدار داشته باشند. • این موقعیت ها نیازمند totally ordered multicast هستند. • یک عمل چندپخشی که همه پیغام ها به یک ترتیب به گیرنده ها داده می شود. • با استفاده از تکنیک ساعت منطقی لمپورت امکان پذیر است. • فرضیات: • گروهی از فرآیندها پیغام ها را به صورت چندپخشی به یکدیگر ارسال می کنند. • پیغامی که multicast می شود به فرستنده هم ارسال می شود. • پیغام هایی که از یک فرستنده ارسال می شوند، به همان ترتیب در گیرنده ها دریافت می شوند و بسته ها گم نمی شوند.

  15. چندپخشی کاملاً مرتب (3) • فرآیندی که یک پیغام دریافت می کند: • آن را در یک صف محلی قرار می دهد که برحسب مهرزمانی اش مرتب شده است. • گیرنده یک پیغام تأیید به بقیه می فرستد. • طبق الگوریتم لمپورت، مهرزمانی پیغام دریافتی از مهرزمانی پیغام تأیید کوچکتر است. • در نهایت صف محلی همه فرآیندها یکسان خواهد بود!! • فرآیند، پیغامی را می تواند به لایه کاربرد خود تحویل دهد که سر صف محلی باشد و توسط بقیه تأییدیه اش دریافت شده باشد. • بعد از تحویل پیغام به لایه کاربرد، از صف حذف می شود و تأییدش نیز برداشته می شود. • از آنجا که همه یک کپی یکسان از صف دارند پیغام ها همه به ترتیب صحیح تحویل داده می شوند. • الگوریتم چندپخشی کاملاً مرتب در پایگاه داده های replicate شده به کار می رود. • نام دیگر: state machine replication

  16. سرفصل مطالب • مقدمات • سنکرون سازی ساعت ها • ساعت منطقی • الگوریتم لمپورت • ساعت های برداری • انحصار متقابل • مشخص کردن محل گره ها • الگوریتم های انتخاب

  17. ساعت های برداری • با ساعت های منطقی لمپورت لزوماً روابط زمانی بین a و b برداشت نمی شود. • اگر C(a) < C(b) باشد لزوماً a قبل از b اتفاق نیفتاده. • در این حالت ها رابطه Tsnd (mi) < Trcv (mi) صادق است. • ولی درباره Trcv(mi) < Tsnd (mj) چه می توان گفت؟ اگر mi=m1 و mj=m3 می دانیم که مربوط به رویدادهای فرآیند P2 هستند و ممکن است بگوییم ارسال M3 وابسته به دریافت m1 است.

  18. ساعت های برداری (2) • ولی در مورد Trcv (m1) < Tsnd (m2)، پیغام m2 ارتباطی با m1 ندارد. • مشکل: • ساعتهای منطقی لمپورت علیت (causality) را در نظر نمی گیرند. • علیت توسط ساعتهای برداری قابل بیان است. • تعریف: • ساعت برداری VC(a) که به رویداد a منتسب شده است، اگر خاصیت VC(a) < VC(b) را به ازای رویداد b داشته باشد، به این معنیست که رویداد a از نظر عِلی قبل از b اتفاق افتاده است. • ساعتهای برداری به این صورت پیاده سازی می شوند: • هر فرآیند Pi بردار VCi را نگه می دارد به طوری که دارای دو ویژگی زیر باشد:

  19. ساعت های برداری (3) • VCi [ i] is the number of events that have occurred so far at Pi. • In other words, VCi [ i ] is the local logical clock at process Pi . • If VCi [ j ] = k then Pi knows that k events have occurred at Pj. • It is thus Pi’s knowledge of the local time at Pj. • خاصیت اول: • VCi[ i ] با هر رویدادی که در فرآیند Pi رخ می دهد یکی افزایش می یابد. • خاصیت دوم: • بردارها را روی پیغامی های ارسالی به صورت سواری مجانی (piggybacking) بفرستیم.

  20. ساعت های برداری (4) • گام های زیر باید انجام شود: • Before executing an event (e.g., message send) Pi executes: VCi[ i ] ← VCi [ i ] + 1. • When process Pi sends a message m to Pj, it sets m’s (vector) timestamp ts (m) = VCi, after having executed the previous step. • Upon the receipt of a message m, process Pj adjusts its own vector by setting VCj [k ] ← max{VCj [k ], ts (m)[k ]} for each k, after which it executes the first step (VCj[ j ] ← VCj [ j ] + 1) and delivers the message to the application. اگر ts(m)[k] بزرگتر بود یعنی j برخی وقایع را ندیده و باید عدد بردارش را تصحیح کند. اگر VCj[k] بزرگتر بود یعنی j یک سری وقایع را زودتر دیده است.

  21. الزام به ارتباط عِلی • مثال: causally-ordered multicast • که حالت ضعیف تری از totally-ordered multicast است. • می خواهیم تضمین کنیم که پیغام هایی که دریافتشان به یکدیگر وابسته است از نظر زمانی درست دریافت می شوند. • فرض کنید فرستنده و گیرنده طبق الگوریتم ساعتهای برداری عمل می کنند. • اگر Pj پیغام m را از Pi دریافت کند با بردار زمانی ts (m)، تحویل پیغام m به لایه کاربرد وقتی انجام می شود که دو شرط زیر برقرار شده باشند: • ts (m)[ i ] = VCj[ i ] + 1 • ts (m)[ k ] =< VCj[ k ] for all k != i

  22. الزام به ارتباط عِلی (2) • شرط اول: • m پیغامی است که Pj منتظر آن بوده از طرف Pi • شرط دوم: • Pj تمامی اتفاقاتی که در Pi افتاده را نیز می بیند. • مثال: P2 بردار دریافتی (1,1,0) از P1 را با بردار (0,0,0) خودش مقایسه می کند و می فهمد که P1 زودتررویدادی از P0 را دیده که خودش ندیده! رابطه علیت وجود دارد. پس تحویل آن را به تأخیر می اندازد.

  23. نکات نهایی در تحویل ترتیبی پیغام ها • آیا این عملیات باید در میان افزار انجام شوند یا در لایه کاربرد؟ • مشکلات میان افزار: • از آنجا که میان افزار نمی تواند بفهمد پیغام واقعاً شامل چه داده ایست، عِلیت بالقوه استخراج می شود. • همه عِلیت ها استخراج نمی شود. • مشکلات لایه کاربرد (end-to-end argument): • برنامه نویس را درگیر جزئیات می کند.

More Related