Bahman Emami Pari

سیستم های توزیع شده






توزيع پذيري

توزيع‏­پذيري يكي از مباحث مهندسي نرم­‏افزار است كه مبتني بر توزيع بار كاري در اعضاي يك سيستم به منظور دستيابي به كارايي بالاتر و بهره­‏و‏ري بالاتر مي­باشد.

سيستمهايي با فشار زماني بالا و حجم محاسبات قابل ملاحظه همواره با مشكل ساماندهي ارتباط داده‏ه­اي، امنيت داده و تحمل تنش و خرابي  روبرو هستند. يكي از بهترين راه­‏حلها براي رويارويي با مشكلاتي از اين قبيل استفاده از اصل توزيع منطقي و فيزيكي يك سيستم نرم­‏افزاريست كه در ادامه با آن آشنا خواهيد شد.

توزيع پذيري در واقع راه‏­حلي مناسب براي طراحي ساخت سيستم‏هايي است كه خصوصيات زير را نياز داشته و يا در اين باب با ريسك روبرو هستند:‌

قدرت پردازش  در حجم بالا 

راه­كار توزيع پذيري با شناخت كافي از اجزاي يك سيستم، پردازش را در اجزاي مختلف تقسيم كرده و به اين ترتيب به دو  نياز پاسخ مي­دهد:‌

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  مورد استفاده در اين نوع معماري را مشاهده مي­كنيد:‌-           معماري 3 Tier

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)



دانلود فایل اکانت

 
نظر یادتون نره مرسی................












نظرات:

«سالار» می‌گوید:
«مرسی ;)»


متن امنیتی

گزارش تخلف
بعدی