![]()
مدل p2p هایبرید: (1) شروع ارتباط با سرور (2) ارتباط مستقیم با یک peer
برخی از سیستم های p2p نیز ممکن است یک روش میانه را در پیش بگیرند مانند سیستم KaZaa. در این سیستم یک سری peer وجود دارد به نام SuperPeer که اطلاعاتی را که ممکن است در peer ها یافت نشود دارا می باشد.
![]()
طبقه بندی کاربردهای p2p
موازی شدنی:
این کاربردها یک عملیات بزرگ را به قطعاتی می شکنند که قابل اجرا به صورت موازی بر روی تعدادی گره مستقل می باشد. بیشتر کاربردهای این مدل به شدت محاسباتی هستند. ایده این کاربردها این است که از چرخههای بیکار هر کامپیوتری که به اینترنت متصل می باشد، میتوان برای حل مشکلاتی که به محاسبات زیادی نیاز دارند استفاده کرد. در اغلب موارد یک task مشابه با پارامترهای متفاوت بر روی گرههای مختلف اجرا می شود.
این کاربردها برای ذخیره سازی و بازیابی اطلاعات از گرههای مختلف موجود در شبکه بکار میرود.
این کاربردها به کاربران این امکان را می دهند که با هم ارتباط برقرار کنند، بدون اینکه متکی بر یک سرور مرکزی باشند که اطلاعات را جمع آوری و رله کند.Instant Messaging یکی از زیرکلاسهای این کلاس از کاربردها است.
الگوریتمها
مدل دایرکتوری متمرکز:
این مدل توسط Napster عمومیت یافت. گرههای یک اجتماع به یک دایرکتوری مرکزی متصل می شوند و اطلاعات خود را از طریق آن انتشار می دهند. بر اساس درخواستی از یک گره، فهرست مرکزی درخواست را با بهترین گره موجود در دایرکتوری مطابقت خواهد داد. بهترین گره، گرهای است که بسته به نیاز کاربر، ارزانترین،سریعترین و در دسترسترین گره باشد. سپس تبادل فایل بهطور مستقیم بین دو گره انجام خواهد شد. این زیرساخت نیاز به یک سرور مرکزی دارد تا اطلاعات مربوط به تمام گرهها را در خود نگهدارد. این باعث میشود تا scalability سیستم تا حدودی محدود شود چون به سرورهای قدرتمندتری نیاز خواهیم داشت وقتیکه تعداد درخواستها و کاربران افزایش یابد.
مدل درخواستهای سیل آسا:
این مدل p2p خالص می باشد که برخلاف مدل قبلی، هیچ منبع مشترکی بین گرهها در آن وجود ندارد. هر درخواست یک گره، به تمام گرههای متصل به این گره فرستاده میشود که آنها نیز به همین صورت درخواست را برای گرههای دیگر موجود در شبکه ارسال می کنند. این کار تا زمانی ادامه پیدا می کند که درخواست جواب خود را بدست آورد یا به تعداد حداکثر درنظر گرفته شده ، انتشار درخواست بین گرهها صورت گیرد. این مدل که در Gnutella استفاده می شود به پهنای باند زیادی نیاز دارد. بنابراین scalable نیست ولی در سطح یک شبکه محلی نشان داده شده است که به صورت کارایی می تواند کار کند. برای حل این مشکل برخی از شرکتها درخواستها را در هر گره به صورت موقت نگهداری می کنند و بدین ترتیب ترافیک شبکه را با مصرف CPU بیشتری، به میزان قابل توجهی کاهش میدهند. همچنین از این ویژگی برای بهبود scalability سیستم استفاده میشود.
این مدل در FreeNet مورد استفاده قرار میگیرد. به هر گره یک ID به صورت تصادفی داده می شود و هر گره، ID گرههای دیگر موجود در سیستم را میداند. هر گره که بخواهد یک سند را به اشتراک بگذارد بر اساس محتویات آن و نام آن یک ID به آن نسبت می دهد. آنگاه هر گره این سند را به گرهای که ID آن به ID این سند نزدیکتر است می فرستد و اینکار تا آنجا ادامه مییابد که نزدیکترین ID به سند خود گره باشد. سپس هر درخواست برای یک سند نیز با استفاده از همین نزدیکی ID سند به ID گره بدست می اید.
هر چند این مدل برای یک حوزه وسیع بسیار کارا می باشد، مشکل آن این است که باید ID سند را قبل از مطرح کردن درخواست بدانیم.
منبع: shojaee.com