1 / 33

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

سیستم های توزیع شده ادامه فصل 4– جلسه 12. مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92. جدول زمانبندی درس. سرفصل مطالب. مقدمات فراخوانی تابع از راه دور ( RPC ) ارتباط مبتنی بر پیغام ( MOC ) ارتباط مبتنی بر استریم ( SOC )

luce
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. سیستم های توزیع شدهادامهفصل 4– جلسه 12 مرجان نادران طحان استادیار گروه مهندسی کامپیوتر دانشگاه شهید چمران اهواز m.naderan@scu.ac.ir نیمسال دوم 93-92

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

  3. سرفصل مطالب • مقدمات • فراخوانی تابع از راه دور (RPC) • ارتباط مبتنی بر پیغام (MOC) • ارتباط مبتنی بر استریم (SOC) • ارتباط چندپخشی (Multicast)

  4. سرفصل مطالب • مقدمات • فراخوانی تابع از راه دور (RPC) • ارتباط مبتنی بر پیغام (MOC) • ارتباط مبتنی بر استریم (SOC) • ارتباط چندپخشی (Multicast)

  5. تولید استاب و مشخص کردن پارامترها • پنهان کردن فراخوانی تابع از راه دور مستلزم • صداکننده (caller) و صدازده شده (callee) روی یک فرمت یکسان پیغامها توافق کنند. • هر دو یک سری گام را انجام دهند. • مثال

  6. تولید استاب و مشخص کردن پارامترها (2) • پروتکل RPC • توافق روی فرمت پیغام (مانند شکل اسلاید قبل) • توافق روی نحوه نمایش داده ساختارهای ساده (اعداد صحیح، کاراکترها، بولین، ...) • توافق روی نحوه تبادل پیغامها • استفاده از TCP/IP یا UDP • بعد از تعریف RPC باید استاب ها تولید شوند. • استاب ها معادل واسط ها هستند. • واسط مجموعه ای از توابع است که توسط کلاینت صدا زده می شود و توسط سرور پیاده سازی می شوند. • واسط توسط یک زبان مشترک کلاینت و سرور نوشته می شود. • Interface Definition Language (IDL)

  7. RPC آسنکرون • RPC ذاتاً برای حالت سنکرون است. • در حالت آسنکرون، جوابی که سرور بلافاصله به کلاینت برمی گرداند، مانند تأییدیه عمل می کند.

  8. RPC آسنکرون (2) • ارتباط کلاینت و سرور از طریق دو RPC آسنکرون • Deferred synchronous RPC • نکته: RPC ی که سنکرون سازی را در نقطه 1 شکل اسلاید 14 جلسه قبل دارد، RPC یکطرفه نیز نامیده میشود.

  9. DCE • مثال واقعی از یک سیستم RPC: Distributed Computing Environment (DCE) • نحو آن بسیار شبیه زبان Cاست. فایلی که تعاریف موردنظر واسط در آن نوشته شده است. یک شناسه یکتا برای واسطی که میخواهیم تعریف می کند. خروجی کامپایلر یک زبان سطح بالاست. مثلاً به زبان C همه خروجی ها به یک زبان هستند. همه اشیاء بایکدیگر لینک می شوند. و در نهایت ما فقط کد کلاینت و سرور را می بینیم.

  10. مقید کردن کلاینت به یک سرور • کلاینت باید بتواند سرور را پیدا کند. • باید سرور پیشتر در جایی ثبت شده باشد. • پیدا کردن سرور شامل دو مرحله است: • مشخص کردن محل ماشین سرور • اسم سرور (آدرس شبکه و یک اسم) را در دایرکتوری سرویس ثبت می کنیم. • مشخص کردن فرآیند موردنظر در ماشین سرور • باید نقطه دسترسی (شماره پورت) موردنظر را در سرور پیدا کند. • باید پورت مربوط به سرور را نیز در فرآیند دیمون ثبت کنیم. • در DCE جدولی از دوتایی های (server, end point) در هر سرور توسط دیمون DCE نگهداری می شود. • نقاط انتهایی توسط سیستم عامل تخصیص می یابند.

  11. مقید کردن کلاینت به یک سرور (2) • کارهای ثبت کردن نام سرور در دایرکتوری و شماره پورت توسط استاب سرور انجام می شود. • این فرآیند در فراخوان های بعدی در RPC لازم نیست. • یکبار کافی است. جدول (آدرس ماشین، سرور) جدول (سرور، شماره پورت)

  12. مثالی از تولید استاب و RPC • مرجع: • G. D. Parrington, “A Stub Generation Systems for C++” • کلاسهای RPC سمت کلاینت و سرور

  13. مثالی از تولید استاب و RPC (2) • کلاسهای RPC سمت کلاینت و سرور

  14. مثالی از تولید استاب و RPC (3) • مارشالینگ پارامترها

  15. مثالی از مارشالینگ پارامترها برای یک سرویس خاص

  16. سرفصل مطالب • مقدمات • فراخوانی تابع از راه دور (RPC) • ارتباط مبتنی بر پیغام (MOC) • ارتباط مبتنی بر استریم (SOC) • ارتباط چندپخشی (Multicast)

  17. ارتباط مبتنی بر پیغام (MOC) • RPC و RMI • در تأمین شفافیت دسترسی نقش دارند. • ارتباط از نوع گذرا را پشتیبانی می کنند. • ارتباط از نوع سنکرون را پشتیبانی می کنند. • ارتباط مبتنی بر پیغام این محدودیت ها را برمیدارد. • قسمتهای این بخش • ارتباط مبتنی بر پیغام از نوع گذرا • ارتباط مبتنی بر پیغام از نوع ماندگار • مثال: IBM’s WebSphere

  18. ارتباط مبتنی بر پیغام (MOC) • RPC و RMI • در تأمین شفافیت دسترسی نقش دارند. • ارتباط از نوع گذرا را پشتیبانی می کنند. • ارتباط از نوع سنکرون را پشتیبانی می کنند. • ارتباط مبتنی بر پیغام این محدودیت ها را برمیدارد. • قسمتهای این بخش • ارتباط مبتنی بر پیغام از نوع گذرا • ارتباط مبتنی بر پیغام از نوع ماندگار • مثال: IBM’s WebSphere

  19. ارتباط مبتنی بر پیغام گذرا • بسیاری از سیستم های توزیعی و برنامه های کاربردی روی مدل مبتنی بر پیغام ساده ای که توسط لایه انتقال ارائه می شود، بنا شده اند. • تبادل پیغام ها روی سوکت های لایه انتقال • واسط سوکت در سال 1970 توسط یونیکس برکلی • واسط دیگر XTI (X/Open Transport Interface) • سوکت: • یک نقطه انتهایی ارتباطی است که برنامه کاربردی داده موردنظرش را در آن می نویسد تا روی شبکه منتقل شود و داده های دریافت شده را از آن می خواند.

  20. ارتباط مبتنی بر پیغام گذرا (2) • دستورات پایه ای سوکت برای TCP سمت سرور سمت کلاینت

  21. ارتباط مبتنی بر پیغام گذرا (3) • سمت سرور: • Socket: • درست کردن یک نقطه انتهایی برای یک پروتکل خاص لایه انتقال • به معنی اختصاص منابع توسط سیستم عامل برای ارسال/دریافت از طریق یک پروتکل خاص • Bind: • انتساب آدرس IP ماشین با شماره پورت مشخص • به سیستم عامل می گوید که سرور می خواهد درخواست ها را روی این شماره پورت دریافت کند. • Listen: • در ارتباط مبتنی بر اتصال به کار می رود. • فراخوان بلوک کننده نیست. • اختصاص فضای بافر کافی به اندازه ماکزیمم تعداد اتصالهای کلاینت • Accept: • پروسس اولیه را بلاک می کند. • یک سوکت جدید ایجاد می کند و پروسس را fork کرده و از حالت بلاک در می آید.

  22. ارتباط مبتنی بر پیغام گذرا (4) • سمت کلاینت: • Socket: • ایجاد یک سوکت اولیه • مقید کردن لازم نیست زیرا سیستم عامل خودش به صورت دینامیک یک شماره پورت اختصاص می دهد. • Connect: • بلوکه شدن کلاینت تا وقتی که یک اتصال ایجاد شود. • Send و receive: • پس از ایجاد موفقیت آمیز اتصال، دو طرف می توانند داده های خود را از این طریق ارسال/دریافت کنند. • Close: • بستن ارتباط از طریق سوکت، متقارن است و هر دو سمت کلاینت و سرور باید اتصال را قطع کنند.

  23. ارتباط مبتنی بر پیغام گذرا (5) • الگوی عمومی برای ارتباط کلاینت و سرور به ازای یک پروتکل مبتنی بر اتصال در ارتباط بدون اتصال این فراخوان ها وجود ندارد و سرور روی read بلوکه می شود.

  24. مثالی از برنامه نویسی سوکت • نمونه کد سرور • http://www.tutorialspoint.com/unix_sockets/socket_server_example.htm • نمونه کد کلاینت • http://www.tutorialspoint.com/unix_sockets/socket_client_example.htm

  25. Message Passing Interface (MPI) • با آمدن کامپیوترهای پرقدرت (سرور کلاسترها، سیستم های پردازشی موازی، ...) سوکت به دو دلیل کارایی خود را از دست داده است: • سطح نامناسب تجرید با پشتیبانی از دستورات ساده send و receive • سوکت برای ایجاد اتصال روی شبکه هایی که از پروتکل های همه منظوره استفاده می کنند طراحی شده بود مثل TCP/IP • پروتکل های همه منظوره برای شبکه های میان ارتباطی با سرعت بالا مناسب نیستند. • باید از پروتکل های اختصاصی استفاده کنند. • مانند سرورکلاسترها که نیازمند شکلهای مختلف استفاده از بافر و سنکرون سازی هستند.

  26. MPI (2) • راه حل: اضافه کردن کتابخانه های ارتباطی اختصاصی برای شبکه های با سرعت بالا • مشکل: پروتکلها مختلف هستند و باید در میان افزار مخفی شوند. • MPI • واسط استانداردی که مستقل از سخت افزار و پلتفرم و مبتنی بر پیغام است. • برای کاربردهای موازی است. • ارتباط گذرا را پشتیبانی می کند. • لایه زیرین MPI می تواند پروتکل اختصاصی باشد ولی برنامه های کاربردی پروتکل ها را نمی بیند، بلکه MPI را می بیند. • بنابراین MPI یک MW و یک واسط ساده است.

  27. MPI (3) • فرض: ارتباط بین گروه مشخصی از فرآیندها صورت می گیرد. • هر گروه یک شناسه دارد. • هر فرآیند در هر گروه نیز یک شناسه محلی دارد. • زوج (groupID, processID) مبدأ یا مقصد یک پیغام را به صورت یکتا مشخص می کند. • به جای آدرس لایه انتقال استفاده می شود. • دستورات پایه ای MPI برای پشتیبانی از اتصال گذرا در جدول صفحه بعد

  28. MPI (4) ارتباط آسنکرون و گذرا سنکرون سازی در نقطه 1 سنکرون سازی در نقطه 2 سنکرون سازی در نقطه 3 معادل RPC مانند bsend با این تفاوت که اشاره گر به پیغام را ارسال می کند. سنکرون سازی در نقطه 1 سنکرون سازی در نقطه 2 بلاک کننده غیر بلاک کننده

  29. مثالهایی از کدهای MPI • http://geco.mines.edu/workshop/class2/examples/mpi/index.html • http://www.mcs.anl.gov/research/projects/mpi/usingmpi/examples/simplempi/main.htm • http://hamilton.nuigalway.ie/teaching/AOS/NINE/mpi-first-examples.html

  30. ارتباط مبتنی بر پیغام (MOC) • RPC و RMI • در تأمین شفافیت دسترسی نقش دارند. • ارتباط از نوع گذرا را پشتیبانی می کنند. • ارتباط از نوع سنکرون را پشتیبانی می کنند. • ارتباط مبتنی بر پیغام این محدودیت ها را برمیدارد. • قسمتهای این بخش • ارتباط مبتنی بر پیغام از نوع گذرا • ارتباط مبتنی بر پیغام از نوع ماندگار • مثال: IBM’s WebSphere

  31. سیستم های صف بندی پیغام • سیستم های صف بندی پیغام (message-queuing systems) • یا میان افزار مبتنی بر پیغام (Message-Oriented Middleware (MOM)) • امکان ذخیره سازی پیغام بدون نیاز به زنده بودن دو طرف • زمان تأخیر در این سیستم ها بیشتر از سوکت و MPI است. • ایده اصلی: • تزریق پیغام در صف های خاص • پیغام ها توسط سرورهای میانی فوروارد شده و در نهایت به مقصد می رسند. • سرورهای میانی معمولاً به یکدیگر وصل هستند. • هر برنامه کاربردی نیز صف پیغام های خود را دارد. • ممکن است یک صف بین چندین برنامه مشترک باشد.

  32. سیستم های صف بندی پیغام (2) • مثال نرم افزارهای تجاری از سیستم های صف بندی پیغام • IBM’s WebSphere MQ (MQ Series) • Oracle Advanced Queuing (AQ) • Microsoft Message Queuing • استاندارد جاوا برای برای سیستم های صف بندی پیغام • Java Message Service • سیستم های منبع باز میان افزار مبتنی بر پیغام • JBoss messaging • JORAM • Apache ActiveMQ • Sun Open Message Queue • Apache Qpid • RabbitMQ

  33. سیستم های صف بندی پیغام (3) • تنها ضمانتی که به فرستنده داده می شود • پیغامش نهایتاً در بافر گیرنده قرار می گیرد. • تضمینی در مورد زمان تحویل و زمان خوانده شدن آن توسط گیرنده داده نمی شود. • لزومی به فعال بودن گیرنده در زمان ارسال آن توسط فرستنده نیست. • لزومی به فعال بودن فرستنده در زمان تحویل آن به گیرنده نیست. • ارتباط loosely coupled in time است. • وقتی پیغامی به یک صف داده می شود، در آن باقی می ماند تا برداشته شود. • بدون توجه به اینکه فرستنده یا گیرنده اش زنده هستند.

More Related