سیستم های توزیع شده
توزيع پذيري
توزيعپذيري يكي از مباحث مهندسي نرمافزار است كه مبتني بر توزيع بار كاري در اعضاي يك سيستم به منظور دستيابي به كارايي بالاتر و بهرهوري بالاتر ميباشد.
سيستمهايي با فشار زماني بالا و حجم محاسبات قابل ملاحظه همواره با مشكل ساماندهي ارتباط دادههاي، امنيت داده و تحمل تنش و خرابي روبرو هستند. يكي از بهترين راهحلها براي رويارويي با مشكلاتي از اين قبيل استفاده از اصل توزيع منطقي و فيزيكي يك سيستم نرمافزاريست كه در ادامه با آن آشنا خواهيد شد.
توزيع پذيري در واقع راهحلي مناسب براي طراحي ساخت سيستمهايي است كه خصوصيات زير را نياز داشته و يا در اين باب با ريسك روبرو هستند:
قدرت پردازش در حجم بالا
راهكار توزيع پذيري با شناخت كافي از اجزاي يك سيستم، پردازش را در اجزاي مختلف تقسيم كرده و به اين ترتيب به دو نياز پاسخ ميدهد:
1- اعضاي پردازشگر يك سيستم عمليات پردازش را به عهده خواهند گرفت.
2- براي انجام پردازش در حجم بالا نيازي به فراهم آوردن سختافزار با خصوصيات فني بالا نيست و با تقسيم كار،PCهاي معمولي هم از پس حجم كاري محوله بر خواهند آمد. به اين ترتيب هزينههاي فراهم آوردن سختافزار به شدت كاهش پيدا خواهد كرد.
پهناي باند ارتباطي
همانطور كه گفته شد در راهكار توزيع، پردازشها بر روي پردازشگرهاي متعدد انجام شده و به اين ترتيب در برقراري ارتباط بين اين اجزا نيز به همان نسبت بار ترافيك كاهش پيدا خواهد كرد. اين خصوصيت از نقاط قوت معماري توزيع شده در محيط هايي با پهناي باند كم است.
تحمل خرابي
با استفاده از راهكار توزيعپذيري در واقع با سيستمي كاملا مؤلفههاي روبروييم كه خرابي يك جزء از ساير اجزا كاملا مستقل بوده و در صورت مواجه شدن با مشكل در يكي از اجزا ساير اجزا همچنان در حال ادامه كار هستند.در اين موارد قسمت اعظم كاربران سيستم حتي ممكن است متوجه وجود خرابي در سيستم نشوند و از طرفي خرابي در قسمت محدودي از سيستم حجم بسيار كمتري از اطلاعات را با خطر روبرو خواهد كرد.
- توان عملياتي
توان عملياتي در واقع پاسخ دادن يك سيستم به يك درخواست در كوتاهترين زمان و به شكلي صحيح و در شرايطي به دور از خرابي است كه البته سيستمهاي مبتني بر توزيع همگي اين خصوصيات را در بر دارند.بنابراين قابل استنباط است كه چنين سيستمهايي از قابليت عملكردي بالايي برخوردارند.
زمان پاسخ
با توجه به توزيع پردازش و عدم تاثير خرابي جزئي از سيستم بر روي ساير اجزا، حتي در مواردي كه از تجهيزات سختافزاري معمولي استفاده ميشود، زمان پاسخ در حد قابل قبولي كوتاه خواهد بود. مشاهده ميكنيد كه خصوصيات تحمل خرابي، زمان پاسخ و توان عملياتي در رابطههاي تنگاتنگ با هم قرار دارند.
پشتيباني ساده
توزيعشدگي حجم كاري سيستم در اجزاي متعدد آن و همچنين حجم قابل قبول ترافيك داده در زيرساخت ارتباطي چنين سيستمهايي باعث شده تا امكان ارائه بهتر خدمات پشتيباني به اينگونه سيستمها فراهم باشد. در اين رابطه نكات زير از اهميت بالايي برخوردارند:
1- براي ارائه خدمات پشتيباني در مواجهه با هر كدام از اعضا، در مقايسه با كل سيستم، با حجم پاييني از مشكلات يا دادههاي مخدوش روبرو خواهيم بود.
2- امكان برقراري ارتباط از راه دور و دستيابي به عضو درخواست كننده و استفاده از بستر ارتباطي ارائه خدمات سريعتر و آسانتر خواهد بود.
به اين ترتيب استفاده از سيستمهاي توزيع شده ، كاهش هزينه،مقياسپذيري و برآورد معيارهاي اقتصادي را به دنبال خواهد داشت.
استفاده از اصل توزيع توليد كنندگان سيستمهاي نرمافزاري را به سوي استفاده از الگوهاي توزيع سوق داده و در اين بين انتخاب الگوي مناسب براي سيستم مورد نظر خود از مهارتهاي توليدكنندگان نرمافزار به شمار ميرود.
انواع توزيع
توزيع عملا با دو معيار منطقي و فيزيكي مورد پيادهسازي قرار ميگيرد. در زير با اين دو مفهوم آشنا ميشويد:
توزيع منطقي
توزيع منطقي در واقع دسته بندي اجزاي منطقي يك سيستم از قبيل كلاس يا زيرسيستمهايي است كه بر روي اجزاي سختافزاري قرار گرفتهاند. اين نوع تقسيم بندي ممكن است منجر به بوجود آمدن يك سطح كنترلي روي جزء سختافزاري شود. به طور مثال استقرار زيرسيستمهاي مديريتي بر روي يكي ازاجزاي پيكره سيستم، توليد سرور عملياتي (Application Server ) را به دنبال دارد. به اين ترتيب با توزيع اجزاي منطقي يك سيستم نرمافزاري، اعضاي يك سيستم توزيع شده به دست خواهند آمد.
توزيع فيزيكي
توزيع فيزيكي در واقع به معني استقرار فايلهاي سيستم نرمافزاري بر روي اجزاي سختافزاري آن است. نكته حائز اهميت در اينجا حفظ استقلال و كارايي فايلها در قالب توزيع است به اين معني كه فايلها بايد ارتباط منطقي خود را در جهت هدفي خاص حفظ كنند. در واقع تنها با داشتن يك توزيع منطقي مناسب ميتوان توزيع فيزيكي را انجام داد.
الگوهاي توزيع
در مفهوم توزيعپذيري الگوهاي بسياري موجود است به شكلي كه هر كدام از اين الگوها نيازمنديهاي خاصي را مرتفع كرده و براي حوزه و حالت خاصي از سيستمهاي نرمافزاري مناسب است.نكته مشترك تمامي اين الگوها توزيع شدگي حجم كار در كل سيستم و بالا بردن سهولت پشتيباني و نگهداري اين سيستمهاست كه خود از مزاياي توزيع شدگي محسوب ميشوند. در واقع هر كدام از اين الگوها سعي بر آن دارند تا به نحوي با راهكار توزيع شدگي به مشكلات موجود در سيستمهاي نرمافزاري پاسخ دهند.
با مطالعه هر يك از اين الگوها به خوبي با مشكلات مطرح و مزاياي الگوي مورد نظر آشنا خواهيد شد.
لازم به ذكر است كه پيروي از الگوهاي توزيع در قالب ارائه معماري مربوط به هر يك امكانپذير است و به همين دليل در ادامه ممكن است در پارهاي موارد واژه معماري را به عنوان جايگزين براي واژه الگو مورد استفاده قرار دهيم.
معماري Client/Server
در معماري Client/Server، با دو عضو Client و Server روبرو هستيم كه Clientها در مقايسه با Serverها از تعدد برخوردار بوده وServer ها به طور دائم در حال ارائه سرويس به چندين Client در يك لحظه ميياشند.
در اين نوع توزيع عملكرد سيستم بين دو بخش Client و Server تقسيم شده است.
در سيستمهاي Client/Server سنتي قسمتي از Business در Client مستقر بود و اين امر باعث كاهش حجم ترافيك ميشود ولي در عين حال هزينههاي تهيه سيستم را بالا ميبرد. به اين ترتيب در سيستمي كه هماكنون به عنوان Client/Server از آن ياد ميشود، Clientها سهمي از اداره Business ندارند و تنها از Server سرويسهاي لازم را دريافت ميكنند.
در ادامه پارهاي از خصوصيات اين نوع معماري را ذكر ميكنيم:
- در اينگونه معماري، Clientها ميتوانند انواع مختلفي داشته باشند و با ماهيتهاي مختلف در سيستم فعاليت كرده و دريافت خدمات داشته باشند.
- براي برقراري ارتباط بين اعضاي اين شكل معماري ميتوان از انواع مختلف راهها و تكنولوژيهاي ارتباطي استفاده كرد.
- Serverها نيز در اين نوع معماري داراي تعدد هستند و براي مصارف مختلف ميتوان از انواع Server استفاده كرد. در ادامه انواع قابل ذكر Server مورد استفاده در اين نوع معماري را مشاهده ميكنيد:-
o Database Server
o Print Server
o Communication Server
o Windows Manager server
o File Server
اين شكل از معماري نيز يكي از اشكال معماري Client/Server به شمار ميرود با اين تفاوت كه سيستم در 3 بخش Application Server، Business Server و Data Server تقسيم شده است. البته اين اعضاي منطقي از سيستم ممكن است بر روي تعداد بيشتري از Nodeهاي سيستم توزيع شوند.
در اينگونه سيستمها، Application Serviceها بوسيله User Interfaceهاي مورد نظر در سيستم Client در اختيار وي قرار ميگيرد. به اين ترتيب Application Server ميتواند در جزئي جدا و يا در همان سيستم Client مستقر باشد. اين موضوع خود يكي از نقاط پارامتريك بودن اينگونه معماري است و با استفاده از قوت توزيع در اين مدل ميتوان تغييرات لازم در Application Server و يا حتي ساير اجزا را بدون تاثير در ساير اعضا اعمال كرد.
Data Serviceها از جانب Data Serverها به Clientها اختصاص پيدا ميكنند. Data Server يكي از اجزاي سيستم است كه از نظر قدرت سخت در سطح بالايي قرار داشته و همچنين بايد از نظر زير ساخت ارتباطي در نقطه اي با پهناي باند بالا قرار داشته باشد. ممكن است صدها يا در مواردي هزاران كاربر در يك لحظه به چنين سروري رجوع داشته باشند و همچنين در اكثر مواقع استفاده از اين سرور منتهي به اعمال تغييراتي بر روي دادههاي موجود خواهد شد. به اين ترتيب لازم است كه اين سرور با خصوصيات فني بالا طراحي شده و امكانات ارتباطي مناسبي در اختيار داشته باشد.
Business Serviceها اطلاعات رمزنگاري شده مربوط به اعمال Business را در بر دارند. اين سرويسها در واقع متولي اداره و تركيب اطلاعات به دست آمده از پايگاه داده هستند و در نهايت Application Serviceها را توليد ميكنند. Business Serviceها عموما بوسيله كاربران متعددي مورد استفاده قرار ميگيرند و خود به عنوان يك عضو منطقي به خوبي كار ميكنند. البته در بسياري مواقع اين سرويس ها در كنار Data Serviceها قرار ميگيرند.
توزيع اعضاي منطقي به اين شكل، قابليت اطمينان و مقياسپذيري سيستم را بالا ميبرد. به اين ترتيب به كار بردن مناسب Data Server و Business Server و همچنين برقراري ارتباط صحيح بين اعضا، درجه بالايي از مقياسپذيري را در اختيار قرار ميدهد.
معماري Fat Client
اين معماري شامل 2 سطح متشكل از Data Server و Client است. كليه امور در Client انجام ميپذيرد به اين شكل كهApplication Serviceها، Data Serviceها و Business Serviceها همگي در سمت Client قرار دارند.
اين شكل معماري در طراحي و ساخت نسبتا سادهتر به نظر ميرسد اما تعبيه صفت توزيع شدگي در اين نوع معماري به مراتب دشوارتر از مدل قبلي است. چالش معمول اين نوع معماري بروزرساني دادههاست. به اين شكل كه در اين روش Clientها دادههاي مورد استفاده را در حافظه موقت خود بارگذاري كرده و مسلما پس از اعمال تغييرات اين دادهها را در Data Server ذخيره ميكنند. به اين شكل هر گاه اطلاعات در Data Server مورد تغيير قرار ميگيرد، لازم است كه كليه Clientها دادههاي جديد را در حافظه موقت دوباره بارگذاري كنند.
معماري Fat Server
اينگونه سيستمها درست نقطه مقابل مورد قبل يا همان Fat Client هستند. به چنين سيستمهايي در اصطلاح سيستمهاي كلاينت بي اشتها نيز اطلاق ميشود. روشنترين مثال در اين مورد، We-Browserها هستند كه در آنها Web Serverها اداره كليه اطلاعات را بر عهده داشته و سرويسها در صفحات HTML در اختيار Clientها قرار ميگيرند.
اين سيستمها از هزينه كم، قابليت تغيير و توزيعپذيري بالايي برخوردارند. اين سيستمها به سادگي قابل پيادهسازي و پشتيباني هستند. اما بايد توجه كرد كه صرفا براي مصارف وب مناسب بوده و در امر Business كه پردازشها و تراكنشهاي دادهاي فراواني را در بر ميگيرد، مناسب نميباشد. در عين حال در اينگونه سيستمها كنترل بالايي بر Applicationها وجود ندارد و اين امر در اشكالي از اين معماري كه از طراحي ضعيفتري برخوردارند به شدت قوت ميگيرد. هرچند اين امر حتي در پايين آمدن سطح كيفي عملكرد سيستمهايي به اين شكل كه از طراحي مطلوبي برخوردارند نيز بي تاثير نيست.
معماري توزيع شده Client/Server
در اين شكل از معماري، Application، Business و Data Serviceها هر كدام در يك نقطه جدا از سيستم مستقر هستند و اين نقاط مجزا كاملا قابليت قبول ماهيت Business و Data Server را خواهند داشت.
كليه خصوصيات اين نوع از معماري شبيه معماري 3 Tier است و تنها از اين لحاظ به صورت جدا مورد بررسي قرار گرفت كه اولا وجود انواع سرور در اين نوع معماري تصريح شود و ثانيا ذكر اين نكته كه در يك معماري توزيع شده نقاط منطقي ممكن است از تعدد بالايي برخوردار باشند، از قلم نيفتد.
معماري Peer-to-Peer
در اين نوع از معماري هركدام از نقاط سيستم يا به عبارتي هر كدام از اجزاي پردازشي سيستم ميتوانند خاصيت Client ياServer داشته باشند. در اينگونه سيستمها، عملكرد سيستم بين كليه اعضاي سيستم تقسيم شده و همگي اين اعضا بر روي خطوط ارتباطي در حال مبادله اطلاعات هستند.
اين سيستمها از پيچيدگي بالايي برخوردارند و آمار بروز خطا در آنها بالاست.اغلب پردازنده ها با وقفه روبرو هستند و يا درخواستها در خطر پديده گرسنگي قرار دارند.در صورت بروز خطا ممكن است عملكرد سيستم با ريسك توقف روبرو شود و در غير اينصورت حتي برطرف كردن اين خطا دشواريهاي فراواني را به دنبال خواهد داشت.
انتخاب الگوي توزيع
انتخاب الگوي مناسب براي پيادهسازي معماري توزيعي، خود يكي از مباحث مهندسي نرمافزار به شمار ميرود كه مستلزم در اختيار داشتن دانش و بررسي كليه زوايا و نيازمنديهاي سيستم مورد نظر است.
براي انتخاب الگوي مورد نظر همواره بايد نكات زير را بررسي نمود و با در نظر گرفتن كليه اين معيارها و مروري بر الگوهايي كه در اينجا معرفي شدند، به مدل دلخواه دستيافت.
- مقياسپذيري: مقياسپذيري در واقع قابليت بسط و استقرار سيستم در حوزه جغرافيايي وسيعي است كه در اين حوزه سيستم چه از لحاظ فيزيكي و چه از لحاظ منطقي قابليت توزيعپذيري داشته و حجم كاري سيستم به صورت يكنواخت در كل حوزه توزيع، تقسيم شده است.
- هزينه : اصولا بحث توزيعپذيري در سيستمهايي مورد توجه ا ست كه از حجم كار و تعداد كاربران بالايي برخوردار است. در چنين سيستمهايي معمولا اولين پاسخ براي برطرف كردن نياز بالابه پردازش و پاسخ به همزماني درخواستها، بالا بردن خصوصيات فني اجزاي سختافزاري سيستم است و بديهي است كه اين امر هزينههاي بالاي تهيه تجهيزات را به مشتريان تحميل كرده و در پارهاي اوقات حتي اين امر موجب منتفي شدن انجام يك پروژه به دليل هزينههاي بالا خواهد شد. اين در حاليست كه همانطور كه گفته شد، راهكار توزيعپذيري با تقسيم كار بين PCهاي معمولي اين مشكل را مرتفع خواهد ساخت.
- پشتيباني ساده : ارائه مطلوب خدمات پشتيباني از نيازمنديهاي معمول هر پروژه نرمافزاري به شمار ميرود. ولي ممكن است در برخي پروژهها اين موضوع به عنوان يك گلوگاه اساسي مورد نظر باشد. در اينگونه مواقع تيم توليد پروژه يا متوسل به استفاده از منابع فراوان نيروي انساني، زمان و هزينه ميشود و يا با استفاده از اصل توزيع، به شكلي اقتصادي اين نيازمندي را مرتفع ميكند. به اين ترتيب بهترين زمان براي بررسي اين موضوع، مراحل اوليه پروژه و قبل از انتخاب و پيادهسازي معماري است. در غير اينصورت همانطور كه گفته شد، ممكن است ارائه خدمات پشتيباني به شكلي مطلوب هزينههاي فراواني را به دنبال داشته باشد.
- تحمل خرابي : در مواردي سيستم در دست ساخت يك تيم نرمافزاري سيستمي حياتي و بلادرنگ ميباشد كه قابليت تحمل خرابي از بارزترين خصوصيات آن به شمار ميرود. به اين ترتيب توجه به اين نيازمندي توجه طراحان تيم را به سمت راهكار توزيعشدگي خواهد برد.
در نهايت انتخاب الگوي مناسب براي توزيع، توجه به معيارهاي بالا را طلب كرده و همواره بايد رابطه منطقي بين نيازمنديهاي مطرح برقرار باشد. به طور مثال، معماري Fat Client و يا Fat Server هزينههاي بالايي را در بر خواهد داشت و ارائه خدمات پشتيباني به سيستمهاي Peer To Peer به سادگي قابل انجام نيست. اين در حاليست كه معماري Client/Server در حالاتي تحمل خرابي پاييني دارد. به اين ترتيب همواره بايد نيازمنديهاي ياد شده براي يك سيستم نرمافزاري را شناسايي كرده و آنها را جهت انتخاب نوع توزيع اولويتبندي نمود.
دانلود آدرس مقالات
دانلود جزوه پارسی سیستم های توزیع شده
دانلود جزوه استاد
دانلود حل مسائل انگلیسی کتاب معرفی شده ( TANENBAUM)
دانلود فایل اکانت
نظر یادتون نره مرسی................