تبليغاتX
گرید کامپیوتینگ-Grid computing

گرید کامپیوتینگ-Grid computing

سایت تخصصی در مورد گرید کامپیوتینگ-grid computing-globus و سیستم های توزیع شده و علوم جديد كامپيوتر

مقدمه‌اي بر معماري مبتني بر سرويس (SOA)-قسمت دوم

مقدمه‌اي بر معماري مبتني بر سرويس (SOA)
تاریخ  :  1385/11/25
منبع مقاله : itna.ir
مترجم  :  رضا گرگان محمدي
خلاصه  :  از جمله مسائل مهمي که در پروژه‌هاي نرم‌افزاري مطرح است بحث هزينه نگهداري سيستم‌هاي نرم‌افزاري است. علاوه بر اين موضوع، در سيستم‌هاي اطلاعاتي بزرگ بحث يکپارچه‌سازي واحد‌هاي مختلف نرم‌افزاري و استفاده از نرم‌افزار‌ها و سيستم‌هاي موجود مطرح مي‌گردد. با در نظر گرفتن تنوع سيستم‌هاي عامل و محيط‌ها و زبان‌هاي توسعه نرم‌افزار، عمل يکپارچه‌سازي و نگهداري اين قبيل سيستم‌ها با هزينه‌ها و مشکلات فراواني مواجه مي‌گردد.

5- چرخه حيات SOA

بر اساس طرح IBM، براي SOA مي‌توان يک چرخه حيات در نظر گرفت. در فاز "مدل" نيازمندي‌هاي کسب‌و کار جمع‌آوري شده و فرايندهاي کسب و کار آنها طراحي مي‌شود. بعد از بهينه شدن فرايندها، از طريق کنار هم قرار دادن سرويس‌هاي موجود و سرويس‌هاي جديد اين فرايندهاي کسب‌و کار شکل مي‌گيرد. سپس اين سرمايه‌ها در يک محيط امن و با قابليت تجميع بالا نصب مي‌شود. بعد از نصب فرايندهاي کسب و کار، کاربران IBM اين فرايندهاي کسب و کار را هم از منظر فني و هم از منظر فرايندهاي کسب و کار مورد نظارت و مديريت قرار مي‌دهند.

اطلاعات جمع‌آوري شده در فاز مديريت به چرخه حيات بازخورد خواهد داشت تا بهبود پيوسته فرايندها را امکان‌پذير سازد. در زير همه اين مراحل در چرخه حيات، حاکميت و فرايندهايي هستند که رهنمود‌ها و افق‌هاي آينده را براي پروژه SOA فراهم مي‌کنند.


شکل 5- چرخه حيات معماري مبتني بر سرويس

6-1- مرحله مدل‌سازي

فاز مدل با جمع‌آوري و تحليل نيازمندي‌هاي کسب‌و کار آغاز مي‌شود که بعداً براي مدل کردن، شبيه‌سازي و بهينه کردن فرايندهاي کسب و کار مورد استفاده قرار مي‌گيرند. فرايندهاي کسب و کار حاصل براي طراحي سرويس‌هاي نرم‌افزاري مرتبط و سطوح سرويس جهت حمايت از اين فرايندها مورد استفاده قرار مي‌گيرند. در طول اين فاز، مدلي جهت ايجاد درک مشترک بين کسب و کار و فناوري اطلاعات در فرايندهاي کسب و کار، اهداف و خروجي‌ها استفاده مي‌شود. به علاوه اين مدل مي‌تواند اين اطمينان را به وجود آورد که کاربردهاي حاصل، نيازمندي‌هاي کسب و کار تعريف شده را براورده مي‌سازد. اين مدل همچنين مي‌تواند مبنايي جهت اندازه‌گيري کارآيي کسب و کار باشد.

6-2- مرحله گردآوري

در طول فاز گردآوري، کتابخانه سرويس‌هاي موجود مي‌تواند جهت يافتن سرويس‌هاي مورد نظر و موجود در سازمان بررسي شود. در صورتي که سرويس مورد نظر يافت نشد اين امکان وجود دارد که يک سرويس جديد ايجاد و پس از تست به مجموعه افزوده شود. هنگامي که سرويس‌هاي مورد نياز فراهم شد، سرويس‌ها جهت پياده‌سازي فرايندهاي کسب‌و کار هماهنگ مي‌گردند.

6-3- مرحله نصب

در طول فاز پياده‌سازي، مقياس و محيط زمان اجرا جهت تأمين نيازمندي‌هاي سطوح سرويس به وسيله فرايندهاي کسب‌وکار پيکربندي مي‌شود. پس از پيکربندي يک فرايند کسب‌وکار، امکان پياده‌سازي آن در يک محيط امن، مطمئن و مقياس‌پذير سرويس‌ها وجود خواهد داشت. محيط سرويس‌ها به گونه‌اي بهينه‌سازي مي‌شود که علاوه بر اجراي مطمئن فرايندهاي کسب‌وکار، امکان انعطاف‌پذيري جهت بروز کردن به طور پويا و در صورت تغيير نيازمندي‌هاي کسب‌وکار را فراهم مي‌آورد. اين رويکرد مبتني بر سرويس همچنين هزينه و پيچيدگي نگهداري سيستم را نيز کاهش مي‌دهد.

6-4- مرحله مديريت

فاز مديريت شامل نظارت و نگهداري از زمان پاسخ و در دسترس بودن سرويس مي‌شود. همچنين مديريت منابع سرويس‌هاي زيرين در اين فاز انجام مي‌شود. درک کارايي زمان واقعي فرايندهاي کسب‌وکار امکان ايجاد بازخورد ضروري به مدل فرايند کسب و کار جهت بهبود دائمي را فراهم مي‌آورد. اين کار همچنين مديريت و نگهداري کنترل نسخه براي سرويس‌هاي تشکيل دهنده فرايندهاي کسب و کار را شامل مي‌شود. فاز مديريت در نهايت امکان اتخاذ تصميمات کسب و کار بهتر و سريع‌تر را فراهم مي‌سازد.

6-5- مرحله حاکميت و فرايندها

حاکميت و فرايندها جهت موفقيت هر نوع پروژه SOA ضروري هستند. جهت تخمين موفقيت، ممکن است يک مرکز تعالي در کسب‌وکار، براي پياده‌سازي سياست‌هاي حاکميتي و دنبال کردن استانداردهاي حاکميتي بين‌المللي جهت اهداف کنترلي براي اطلاعات و تکنولوژي مرتبط ايجاد گردد. پياده‌سازي سياست‌هاي حاکميتي قوي مي‌تواند منجر به پروژه‌هاي SOA موفق گردد.

7- خصوصيات اساسي جهت استفادة بهينه از سرويس‌ها

• درشت‌دانه بودن: عملکردها روي سرويس‌ها به طور متفاوت پياده‌سازي مي‌شوند تا کارآيي بيشتري را در برگيرند و بر روي مجموعه‌هاي داده‌اي بزرگ‌تر در مقايسه با طراحي مبتني بر اجزا عمل مي‌کند. (شکل 8)
• طراحي مبتني بر واسط: سرويس‌ها، واسط‌هاي مجزا‌ ‌تعريف‌شده را پياده‌سازي مي‌کنند. مزيت اين امر آن است که چندين سرويس مي‌توانند يک واسط مشترک را پياده‌سازي کنند و يک سرويس مي‌تواند چندين واسط را پياده‌سازي کند. (شکل 9)
• قابل يافت بودن: سرويس‌ها لازم است هم در زمان طراحي و هم در زمان اجرا قابل يافت باشند، نه تنها با شناسة يکتا بلکه همچنين با شناسة واسط و با نوع سرويس.
• نمونه منفرد: بر خلاف توسعة مبتني بر جزء که از اجزا بر حسب نياز نمونه‌هايي ايجاد مي‌شود، هر سرويس يک نمونه منفرد و همواره در حال اجرا است که مجموعه‌اي از کلاينت‌ها با آن ارتباط برقرار مي‌کنند.
• اتصال ست: سرويس‌ها با ديگر سرويس‌ها و کلاينت‌ها از طريق تبادل اطلاعات استاندارد xml با يکديگر در ارتباط هستند؛ اين ارتباط باعث کاهش وابستگي و جداسازي بر اساس پيام‌رساني مي‌شود.
• آسنکرون: به طور کلي، سرويس‌ها از رويکرد انتقال پيام آسنکرون استفاده مي‌کنند. اما اين امر ضروري نيست. در بعضي مواقع در پياده‌سازي سرويس‌ها از انتقال پيام سنکرون نيز استفاده مي‌شود.
در شکل‌هاي زير برخي از ويژگي‌هاي فوق نمايش داده شده است:



شکل 6- تأکيد بر درشت‌دانه بودن در سرويس‌ها



شکل 7- طراحي مبتني بر واسط در معماري سرويس‌گرا

8- مقياس‌پذيري از طريق رفتار آسنکرون و صف‌بندي

بهتر است که از ماهيت آسنکرون در ‌سرويس‌ها استفاده شود. با توجه به سربار انتقال اضافه و همچنين اين انتظار که سرويس‌ها، ماهيتاً در فواصل فيزيکي دور از يکديگر خواهند بود، کاهش زمان انتظار درخواست‌کننده براي پاسخ بسيار اهميت دارد. از طريق آسنکرون کردن فراخواني يک سرويس، با يک پيام بازگشت مجزا، به درخواست‌کننده امکان ادامة اجرا تا زمان فراهم شدن پاسخ داده مي‌شود.

البته اين به معناي اشتباه بودن رفتار سنکرون سرويس نيست، بلکه به اين معنا است که رفتار سرويس آسنکرون مطلوب است، به خصوص در جايي که هزينه‌هاي ارتباطي زياد است و يا تأخير شبکه قابل پيش‌بيني نيست.



شکل 8- روش سنکرون در مقابل روش آسنکرون

با استفاده از فراخواني آسنکرون، به فراهم‌کننده اين امکان داده مي‌شود که از چندين رشتة کاري جهت مديريت چندين درخواست کلاينت استفاده کند. جهت اجراي فراخواني آسنکرون، درخواست‌کننده بايد نشاني بازگشت را به سرويس پياده‌ساز يک واسط ارسال کند.

9- جمع‌بندي

معماري مبتني بر سرويس گام تکاملي بعدي در دنياي نرم‌افزار است. معماري‌هاي نرم‌افزاري فعلي قادر به حل تمامي مشکلات و چالش‌هاي فرا روي سازمان‌ها و سيستم‌هاي اطلاعاتي بزرگ و پيچيده نيستند. ويژگي‌هاي خاص معماري مبتني بر سرويس اين معماري را به عنوان بهترين گزينه براي اين موضوع مطرح کرده است.

+ نوشته شده در  جمعه هفدهم اسفند 1386ساعت 14:23  توسط یوسف عبدلیان باریکرسفی  | 

مقدمه‌اي بر معماري مبتني بر سرويس (SOA)

 مقدمه‌اي بر معماري مبتني بر سرويس (SOA)
تاریخ  :  1385/11/25
منبع مقاله : itna.ir
مترجم  :  رضا گرگان محمدي
خلاصه  :  از جمله مسائل مهمي که در پروژه‌هاي نرم‌افزاري مطرح است بحث هزينه نگهداري سيستم‌هاي نرم‌افزاري است. علاوه بر اين موضوع، در سيستم‌هاي اطلاعاتي بزرگ بحث يکپارچه‌سازي واحد‌هاي مختلف نرم‌افزاري و استفاده از نرم‌افزار‌ها و سيستم‌هاي موجود مطرح مي‌گردد. با در نظر گرفتن تنوع سيستم‌هاي عامل و محيط‌ها و زبان‌هاي توسعه نرم‌افزار، عمل يکپارچه‌سازي و نگهداري اين قبيل سيستم‌ها با هزينه‌ها و مشکلات فراواني مواجه مي‌گردد.

از سوي ديگر، با وجود رشد و توسعه سريع فناوري‌هاي اطلاعاتي و ارتباطي، نيازمندي‌هاي سازمان‌ها نيز به سرعت در حال افزايش است. آنچه به عنوان راهکاري مناسب براي غلبه بر پيچيدگي‌هاي روز‌افزون سيستم‌هاي اطلاعاتي مطرح مي‌گردد، استفاده از معماري نرم‌افزاري مناسب در توسعه و پياده‌سازي نرم‌افزار‌ها در اين قبيل سيستم‌ها است.

معماري مبتني بر سرويس رويکرد جديدي در دنياي نرم‌افزار است که با رفع محدوديت‌ها و نواقص معماري‌هاي پيشين به عنوان بهترين گزينه در اين زمينه محسوب مي‌گردد. در اين مقاله سعي شده است مفاهيم و اصول پايه‌اي اين معماري به طور اجمالي مورد بررسي قرار گيرد.

مقدمه

سيستم‌هاي اطلاعاتي به سرعت در حال رشد هستند؛ سازمان‌ها نيازمند پاسخگويي سريع به نيازمندي‌هاي جديد کسب‌وکار هستند. اين در حالي است که معماري‌هاي نرم‌افزاري موجود به حد نهايي قابليت‌هاي خود رسيده‌اند. معماري مبتني بر سرويس SOA قدم تکاملي بعدي براي کمک به سازمان‌ها جهت مديريت چالش‌هاي پيچيده است.

معماري مبتني بر سرويس حالت بلوغ يافته معماري مبتني بر اجزا، طراحي مبتني بر واسطه (شي‌گرا) و سيستم‌هاي توزيع ‌شده است. در معماري مبتني بر اجزا عملکرد کلي به کارهاي کوچک‌تري تقسيم مي‌شود که هر يک در يک جزء بسته‌بندي خواهند شد. يک سيستم توزيع‌شده، تعميمي از يک معماري مبتني بر اجزا است که به اجزائي که در موقعيت‌هاي فيزيکي مختلف وجود دارند، اشاره مي‌کند.

مهم‌ترين مزيت معماري مبتني بر اجزا سهولت در استفاده مجدد و تغيير هدف اجزاي خاص و سهولت در امر نگهداري سيستم است. استفاده مجدد و تغيير هدف معمولاً مهم‌ترين پيشران‌هاي کسب‌و کار جهت استفاده از اين نوع معماري در دهه 90 ميلادي بوده است. بر اساس منطق معماري مبتني بر سرويس، سيستم‌هاي نرم‌افزاري بزرگ مي‌توانند از گردآوري مجموعه‌هايي از عملکردهاي مستقل و قابل استفاده مجدد تشکيل گردند.

برخي از اين عمليات مي‌تواند از طريق سيستم‌هاي موجود و يا سيستم‌هاي ديگر فراهم گردد ولي ساير عمليات لازم بايد پياده‌سازي شوند. هر سرويس امکان دسترسي به مجموعه خوش‌ تعريفي از عمليات را مي‌دهد. سيستم به عنوان يک کل به صورت مجموعه‌اي از تعاملات بين اين سرويس‌ها طراحي مي‌شود. معماري مبتني بر سرويس، سرويس‌هايي را که سيستم از آنها تشکيل شده را تعريف ‌مي‌کند و تعاملات لازم بين سرويس‌ها جهت ارائه رفتار مشخص را توصيف ‌مي‌کند و در نهايت سرويس‌ها را به يک يا چند پياده‌سازي در تکنولوژي‌هاي خاص تصوير مي‌کند.

SOA بر اساس استفاده از اشياء و اجزا توزيع شده است و قدم تکامل بعدي در محيط‌هاي محاسبه‌اي است. اين معماري در حال حاضر مدل مرجع استانداردي ندارد؛ اما پياده‌سازي‌هاي موجود مفاهيم مشترکي را مورد استفاده قرار مي‌دهند که در ادامه اين مفاهيم پايه مورد بررسي قرار مي‌گيرند.

2- مفاهيم اصلي در معماري مبتني بر سرويس

در حال حاضر استاندارد مشخصي براي تعريف SOA وجود ندارد اما مواردي که در ادامه مي‌آيد مهم‌ترين و سازگارترين موارد در پياده‌سازي SOA هستند.

2-1- سرويس‌

يک سرويس رفتار تعريف شده قراردادي است که مي‌تواند به‌وسيله يک جزء براي استفاده جزء ديگر پياده‌سازي شده و فراهم گردد.

2-2- شرح سرويس

شرح سرويس پارامترهاي فني، قيود و سياست‌هايي را شامل مي‌شود که قالب‌هاي لازم براي فراخواني سرويس را تعريف مي‌کند. هر سرويس بايد شامل تعريف سرويس در قالب استاندارد باشد. اين موضوع کاربردها و کاربران انساني را قادر مي‌سازد تا با بررسي شرح سرويس و تعيين موضوعاتي نظير اين‌ که سرويس چه کاري انجام مي‌دهد، چگونه به آن انتصاب مي‌يابند و اين‌که چه پروتکل‌هاي امنيتي (در صورت وجود) بايد به همراه آن مورد استفاده قرار گيرد، از آن سرويس استفاده کند.

اين اعلان همچنين ممکن است شامل جزئياتي در مورد هر فرايند ضمني و ديگر واژه‌هاي کاري و قانوني باشد که ممکن است در زمان فراخواني سرويس اتفاق بيفتد. به عنوان مثال، اگر يک استفاده‌کننده سرويس، سرويسي را فراخواني کند که يک درخواست خريد را براي فراهم‌کننده سرويس ارسال نمايد، و اجرا موفقيت‌آميز باشد، اين موضوع ممکن است منجر به مسئوليت مالي نسبت به فراهم‌کننده سرويس يا بخش قانوني ديگر مي‌شود.

در حاليکه طبيعت سرويس‌ها ممکن است تغيير کند، استاندارد مشترکي جهت اعلان يک سرويس هنگام تهيه يک زيرساخت مطلوب است. دو نمونه از چنين استانداردهاي موجود ebXML و WSDL هستند.

2-3- اعلان و يابش سرويس‌ها

شرح سرويس بايد به شيوه‌اي قابل دسترسي در اختيار کاربران بالقوه قرار گيرد که به اين امر اعلان سرويس اطلاق مي‌شود.

يابش، ‌زماني انجام مي‌شود که يک مشتري بالقوه اطلاعاتي در مورد وجود يک سرويس، پارامترهاي قابل اعمال و واژگان آن به دست آورد. يافتن، بحث تصديق هويت جهت اجراي سرويس را شامل نمي‌شود؛ گرچه اين جزئيات ممکن است در الگوي يافتن قرار گيرد.

اجزاي اعلان و يابش در SOA به شيوه‌هاي مختلف از جمله استفاده از روش ثبات / مخزن و يا روش دايرکتوري سرويس قابل پياده سازي هستند.

• پياده‌سازي به روش ثبات / مخزن

يک ثبات / مخزن جزئي است که در آن کاربران امکان ذخيره و مديريت سرويس‌هاي لازم براي عملکرد سازمانشان را خواهند داشت. اين موضوع شامل سرويس‌هايي است که تسهيم بين بيش از يک کاربر (نظير xml schemas و شرح web-service) را فراهم مي‌آورد که به ثبات به گونه‌اي منتسب مي‌شود که ثبات در مورد تمامي رويدادهاي قابل ارزيابي نسبت به محصولات در مخزن اطلاع دارد.

• پياده‌سازي به روش دايرکتوري

دايرکتوري يک واسط است که اطلاعات انتساب به محصولات را فراهم مي‌آورد. افرادي که مالک محصولات هستند و يا آنها را کنترل مي‌کنند، مي‌توانند يک مدخل به دايرکتوري باز کرده تا به محصولات ارجاع داده و خود انتسابات به آن را توضيح دهند. ديگران ممکن است اين اطلاعات را بازيابي کرده و از آن جهت انتساب به محصولات استفاده کنند. مهم‌ترين مشکل دايرکتوري اين است که هيچ کنترل يا اطلاع‌رساني در صورت حذف، تغيير و جايگزين شدن يک محصول انجام نمي‌دهد و قادر به اعلام اين رويدادها به کاربران نيست.

هر دو پياده‌سازي دايرکتوري و ثبات / مخزن امکان سازگاري با يکديگر را دارند. به اين معنا که عملکرد اجازه مي‌دهد که محتوا از يک پياده‌سازي توسط يک پياده‌سازي ديگر مورد ارجاع قرار گيرد.
چندين استاندارد وجود دارد که پياده‌سازي‌ها دايرکتوري و ثبات / مخزن را دارند. رايج‌ترين استانداردها عبارتند از:

• OASIS ebXML Registry-Repository Technical Specifications16
• OASIS Universal Description and Discovery Interface (UDDI) Technical Specification17.2

2-4- خصوصيات مدل داده‌اي مرتبط

در هنگام فراخواني يک سرويس، پارامترهاي مشخصي ممکن است براي انجام درخواست سرويس مورد نياز باشد. سرويس همچنين ممکن است پارامترهايي را به کاربر سرويس بازگرداند. W3C WSDL يک نمونه شناخته شده از پياده‌سازي اين بخش است.

3- اصطلاحات رايج در معماري مبتني بر سرويس

• فراهم‌کننده سرويس: يک موجوديت نرم‌افزاري که خصوصيات سرويس را پياده‌سازي مي‌کند.
• درخواست‌کننده سرويس: يک موجوديت نرم‌افزاري که يک فراهم‌کنندة سرويس را فراخواني مي‌کند، به‌طور سنتي اين مورد به عنوان "کلاينت" شناخته مي‌شود؛ اما يک درخواست‌کننده سرويس مي‌تواند يک کاربر برنامه کاربردي و يا سرويس ديگر باشد.
• موقيعت‌ياب سرويس: يک نوع خاص از فراهم‌کننده سرويس که به‌عنوان يک ثبات عمل مي‌کند و امکان جست‌وجوي واسطه‌هاي فراهم‌کننده سرويس و موقعيت سرويس را مي‌دهد.
• واسط سرويس: يک نوع خاص از فراهم‌کننده سرويس است که مي‌تواند درخواست سرويس را به يک يا چند فراهم‌کننده سرويس منتقل کند.

4- چارچوب SOA

4-1- زيرساخت SOA
4-1-1- نقشه مفهومي

شکل‌هاي 2 تا 4 نقشه‌هايي مفهومي هستند که مفاهيم پايه SOA را مستقل از معني و تکنولوژي‌ها تشريح مي‌کنند. نقشه‌هاي مفهومي غير رسمي بوده و نمايش گرافيکي از مفاهيم و رابطه بين آنها را شامل مي‌شود. شکل 2 مثالي از يک نقشة مفهومي است.


شکل1- مثالي از نقشه مفهومي

اغلب معماري‌هايي که SOA ناميده مي‌شوند، شامل يک فراهم‌کننده سرويس، يک کاربر سرويس و برخي زيرساخت‌هاي پيام‌رساني هستند.


شکل2- مدل مرجع معماري مبتني بر سرويس پايه

4-1-2- مفاهيم اختياري و زيرساخت‌هاي SOA اشتراکي


شکل3-مفاهيم اختياري براي SOA و نمايش تعامل آنها با مفاهيم پايه اين معماري

جهت اجراي تعهدات در زمان اجرا، اغلب SOAها ممکن است شامل مفاهيمي اضافه بر آنچه در شکل 3 نشان داده شده است، باشند. مفاهيم ديگر کاربران سرويس، کلاينت سرويس، قرارداد پذيرش سرويس و فراخواني سرويس هستند. فراخواني يک سرويس يا وجود کاربر سرويس در مدل SOAالزامي نيست. فراهم‌کننده يک سرويس، قرارداد سرويس جهت استفاده آن و شرح سرويس را ارائه مي‌کند. شرح سرويس به مدل داده‌هاي مرتبط با فراخواني سرويس ارجاع مي‌کند.

شرح سرويس از طريق يکي از چندين روش اعلان مي‌شود. کاربر سرويس خصوصيات سرويس را از طريق مکانيزم اعلان شناسايي مي‌کند. شناسايي، پذيرش قرارداد را شامل نمي‌شود. همچنين فراخواني سرويس را نيز القا نمي‌کند. اين امر صرفاً عملي براي پيدا کردن اطلاعات در مورد سرويس است. اين امر لزوماً در يک عمل اتفاق نمي‌افتد و ممکن است به تعدادي از کارها نياز داشته باشد. همچنين ممکن است از طريق وسايل غير الکترونيکي صورت پذيرد.
شکل 4 ساير عملکردهاي خاص اختياري را حذف کرده و از پياده‌سازي‌هاي خاص نظير پيام‌رسانيSOAP ، WDSL و ebXML خودداري مي‌کند.

4-2- الگوهاي SOA

شکل 5 يک الگوي ساده سرويس را نمايش مي‌دهد. در جايي که يک فراهم‌کننده سرويس، سرويس را پيشنهاد مي‌دهد و يک کاربر سرويس، از سرويس‌ها استفاده مي‌کند. چندين نوع از پروتکل‌هاي ارتباطي ممکن است زوج درخواست/ پاسخ را مورد استفاده قرار دهد و روش‌هاي متنوعي نظير سنکرون يا آسنکرون ممکن است استفاده شود. SOA به هيچ پروتکل ارتباطي خاص محدود نمي‌شود. شکل 5 الگوي "درخواست – پاسخ" را نمايش مي‌دهد.

+ نوشته شده در  جمعه هفدهم اسفند 1386ساعت 14:22  توسط یوسف عبدلیان باریکرسفی  | 

معماریهای مختلف پایگاه داده ها

 

معماریهای مختلف پایگاه داده ها

Database Architectures

مهدی سرمدی

اشکان ناصری

 

 

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

معماری پایگاه داده ها به چند دسته مختلف تقسیم می شوند:

·          سیستم های متمرکز[1]

·          سیستم های  مشتری/خدمتگزار [2]

·          سیستم های موازی [3]

·          سیستم های توزیع شده   [4]

در ادامه به شرح سیستم های مختلف می پردازیم.

 

1.     سیستمهای متمرکز [Silb]

     در این نوع سیستم ها تمامی اطلاعات در یک پایگاه ذخیره و همچنین بازیابی می شوند بدین ترتیب که کاربران برای استفاده از اطلاعات ذخیره شده فقط باید به دستگاهی که پایگاه در آن ذخیره شده است مراجعه کنند. اینگونه پایگاه داده ها که امروزه کمتر مورد استفاده قرار می گیرند،  برای استفاده در مواردی که کاربرد زیادی دارند ایجاد می شوند.

در شکل زیر شمای کلی معماری متمرکز اریه شده است.

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

همانطور که در شکل مشاهده می شود، در این نوع معماری پایگاه داده در یک کامپیوترقرار دارد. بدین معنی که در این معماری یک یا بیشتر پردازنده و یک حافظه مشترک بین پایگاه داده و سیستم عمل وجود دارد.

از مزایای این نوع معماری می توان موارد ریز را برشمرد:

 

·          سادگی در طراحی

·          سادگی در استفاده

·          عدم نیاز به امکانات سخت افزاری یا نرم افزاری خاص

 

همچنین از معایب آن می توان به موارد زیر اشاره کرد:

 

·          تک کاربره بودن

·          مشکل بودن استفاده در سازمانهای بزرگ

 

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

 

2.     سیستم های مشتری/خدمتگزار [Silb]

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

در شکل زیر شمای کلی این نوع معماری قابل مشاهده است.

 

 

 

 

 

 

  

 

 

 

 


 

بخش های مختلف پایگاه داده ها در این نوع معماری بر حسب کاربری به دو بخش تقسیم می شود:

·          Back-end : این قسمت وظیفه بررسی و کنترل دسترسی ها، بررسی و بهینه سازی پرس و جو[5] ها و کنترل همزمانی ها و سالم بودن پایگاه داده ها را به عهده دارد.

·           Front-end: شامل ابزار هایی برای نمایش و زیباسازی نتایج پرس و جو ها مثل ابزارهای تولید فرم ها و ابزار های گزارش گیری می باشد.

برای ایجاد ارتباط درست میان دو قسمت فوق نیازمند یک لایه و بستر است. این بستر میتواند از دو طریق دستورات SQL و یا API ها برقرار شود.

 

 

در شکل زیر شمای کلی دو قسمت اصلی پایگاه داده و همچنین بستر ارتباط این دو قسمت نشان داده می شود.

 

 

 

  

 

 

 

 

 

 

 

 

 

 

 


 

در مقایسه این نوع معماری با معماری متمرکز با استفاده از Mainframe ها می توان به مزایای زیر اشاره کرد:

·          افزایش میزان کاربری سیستم با توجه به هزینه

·          راحت تر شدن گسترش دادن و توزیع کردن منابع

·          تولید واسط های کاربر بهتر

·          راحت تر شدن نگهداری سیستم

 

در این نوع معماری، سرورها از لحاظ عملکردی به دو بخش مجزا تقسیم می شود:

·          سرورهای داده ای: این نوع سرور ها بیشتر در سیستم های شی گرا مورد استفاده قرار می گیرند

·          سرور های تراکنشی: این نوع سرور ها بیشتر در سیستم های رابطه ای مورد استفاده قرار می گیرند

 

در ادامه به شرح این دو بخش می پردازیم.

 

در سرورهای تراکنشی که به آنها سرورهای پرس و جو هم گفته می شود روش کار بدین صورت است که درخواست های کاریران به این سیستم ها ارسال می شود و نتیجه در این سرور ها تولید و به کاربر ارسال می شود. درخواست های کاربران به صورت دستورات RPC و دستورات SQL ارسال می شود.برای ارسال و دریافت نیاز به نرم افزار هایی هست مانند ODBC و JDBC که وظیفه ارتباط با سرور و ارسال پرس و جوها و دریافت نتایج را به عهده دارد.

برای پیاده سازی سرورهای تراکنشی از تعدادی پردازه که حافظه مشترک دارند استفاده می شود که معمولا برای بهبود پردازه ها هر کدام از آنها Multithread مورد استفاده قرار می گیرند.

تعدادی از پردازه هایی که حتما یک سرور تراکنشی باید داشته باشد در زیر می بینیم:

·          پردازه های سرور: این پردازه ها وظیفه دریافت پرس و جو ها و تولید پاسخ ها را به عهده دارد

·          پردازه مدیریت همزمانی: وظیفه مدیریت همزمانی درخواست ها را عهده دار است این امکان یا با استفاده از سمافورهای سیستم عامل و یا با استفاده از روش های مثل Test and Set فراهم آورده می شود.

·          پردازه نگارنده پایگاه داده: که وظیفه نوشتن نتایج پرس و جو ها را بر روی دیسک به عهده دارد

·          پردازه نوشتن logها: این پردازه اطلاعات نوشته شده روی بافر برای ذخیره به حافظه های پایدار می نویسد.

·          پردازه check point: این پردازه مسؤلیت چک کردن پردازشها در مراحل مشخص انجام می دهد

·          پردازه Monitor Process: وظیفه این پردازه کنترل عملکرد دیگر پردازه ها و در صورت لزوم Recover کردن آن پردازه می باشد.

 

برای مشخص تر شدن چگونگی طرز کار و ارتباط بین پردازه ها شکل زیر ارایه می شود.

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

نوع دیگر سرور ها سرور های دیتا هستند که بیشتر در سیستم های شی گرا استفاده می شود. این سرورها معمولا در شبکه های Lan مورد استفاده قرار می گیرد.

روش کار به این صورت است که داده ها به Client ها برای پردازش منتقل می شود و داده های پردازش شده به سرور برای ذخیره سازی برگردانده می شوند. این سیستم ها بیشتر برای معماری شی گرا استفاده می شوند.

 

3.    معماری موازی [RAMA]

معماری موازی به نوعی از معماری گفتع می شود که در این نوع معماری سعی شده است که با پیاده سازی روش های کار موازی کارایی سیستم را افزایش دهیم. پردازش های موازی می تواند در بخش های مختلف و  وظایف مختلف از قبیل خواندن داده ها، تولید فهرست ها و پردازش پرس و جو ها پیاده سازی شود. همچنین در این نوع سیستم ها داده ها می توانند از لحاظ قرار گیری فیزیکی در قسمت های مختلف قرار گرفته باشند.

ایده اصلی در معماری موازی استفاده از پردازش های موازی در مراحل مختلف تا آنجا که امکان دارد برای بهبود کارایی سیستم است.

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

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

نوع سوم معماری، معماری بدون عنصر مشترک بین پردازنده هاست. هر پردازنده در این روش حافظه و دیسک سخت خود را دارند و هیچ حافظه ای را به اشتراک نمی گذارند. تمامی ارتباطات میان پردازنده ها از طریق شبکه بین آنها ایجاد می شود.

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

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

دو روش به اشتراک گذاشتن حافظه و دیسک سخت دارای مشکلی هستند که با افزایش تعداد کاربران مشخص می شود. در این دو روش با بالارفتن تعداد پردازنده ها استفاده از فضای مشترک هم بیشتر می شود، از آنجایی که داده های منتقل شده در شبکه زیادتر می شود سرعت و در نتیجه کارایی کل هم کاهش پیدا می کند.

 شکل زیر چگونگی ارتباط بین افزایش تعداد پردازنده ها و تاثیر آن بر سرعت در این دو نوع  روش قابل بررسی است.


 

 

 

 

 

 

 

مشکل ایجاد شده امروزه مورد تحقیق و بررسی بسیاری از علاقمندان قرار دارد و گروه های متعدد روش هایی را برای چگونگی حل این مشکل ارایه داده و می دهند. برای نمومه یکی از روش ها استفاده از مفاهیم “شبکه های عصبی” در حل این مشکل است. [iii]

 

3.1           اجرای پرس و جو ها در معماری موازی

 برای اجرا پرس و جو ها ابتدا باید درخواست پرس و جو ها به درختواره عملیاتی تبدیل شود. در این درختواره می توان با حرکت از پایین به بالا دستوراتی که ورودی های آنها مشخص شده است را به صورت موازی اجرا کنیم. در این روش دستوراتی در درختواره وجود خواهند داشت که هنوز ورودی آنها مشخص نشده است در نتیجه این دستورات تا آماده شدن ورودی های آن اجرا نخواهد شد.

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

در بخش بندی داده ها روش هایی مانند Round- robin, استفاده از روش Hash و همینطور روش Range partitioning  استفاده کرد. روش RR بیشتر برای مواردی که کل داده ها مورد پردازش قرار می گیرند بیشتر استفاده می شود. دو روش دیگر برای مواقعی که تنها بخش های خاصی از داده ها مورد پردازش قرار می گیرند استفاده می شوند.

3.2     عملگرهای تک عملوندی در معماری موازی

در این بخش به چگونگی اجرای عملگرهای تک عملوندی در معماری موازی بدون به اشتراک گذاشتن منابع را مورد بررسی قرار می دهیم.

 

مرتب سازی:

برای مرتب سازی روش اول بدین گونه است که هر پردازنده داده هایی که در دیسک سخت مریوط به خود را مرتب کنند و در نهایت نتایج را با هم ادغام کنیم.

اما روش کاملتر اینست که در ابتدا داده ها را با توجه به توان هر پردازنده بین پردازنده ها توزیع عادلانه کنیم و در نهایت نتایج را با هم ادغام کنیم. مزیت این روش نسبت به روش اول توزیع درست داده ها و استفاده درست و عادلانه از پردازنده هاست.

 

-عمل Join

برای عمل Join بین دو رابطه هم از همان روش فوق یعنی تقسیم داده ها و توزیع آنها بین پردازنده ها استفاده می شود. در این روش دو نوع بخش بندی محتمل است. روش اول تقسیم بندی بدون توجه به عامل Join است که در این حالت تمامی داده ها بدون هیچ پیش فرضی تقسیم می شوند. روش دوم استفاده از عامل ارتباط است که در این حالت داده ها را با توجه به عامل ارتباط و با توجه به تعداد پردازنده ها تقسیم می کنیم. پس از تقسیم بین پردازنده ها عمل Join در هرکدام انجام می شود و نتیجه نهایی از اجتماع این نتایج بدست می آید. در هر کدام از پردازنده ها برای عمل Join از روش Hash Join که قبلا توضیح داده شده است استفاده می شود.

یک روش برای بهبود عمل Hash Join اینست که داده ها را به بخش های متعدد تقسیم کنیم و عمل Join هر بخش را به صورت موازی اجرا کنیم . شکل زیر چگونگی این روش را نشان می دهد.


 

 

 

 

 

 

 

 

 

 

 

عملگرهای دیگر نظیر عملگرهای گروهی مانند Sum نیز امروزه بحث های مهمی را در این زمینه ایجاد کرده اند و گروه های مختلفی بر روی چگونگی اعمال این عملگرها کار می کنند. یکی از روش های اعمال پردازش موازی اعمال روش بخش بندی و توزیع داده ها مانند روش های فوق است که برای عملگرهای گروهی نیاز به تغییرات و طراحی روش جدید است[iv].

 

4.    معماری پایگاه داده توزیع شده [RAMA]

 

در این معماری، داده ها در محلهای مختلفی نگهداری می شود. دو خاصیت مهم این نوع از پایگاه داده ها :

 

1.     استقلال داده های توزیع شده[6]: کاربران باید بتوانند بدون اطلاع از محل ذخیره داده ها، از پایگاه داده ها پرس و جو کنند.

2.     عدم تفاوت تراکنشهای توزیع شده[7]: کاربران باید بتوانند دقیقاً مشابه روشی که در مورد تراکنشهای محلی(local) عمل می کردند، تراکنشهایی بنویسند که به داده ها در محلهای مختلف دسترسی داشته باشد و آنها را بروز کند.

اگرچه این دو خاصیت مطلوب هستند ولی در عمل در بعضی موارد عملی کردن آنها مهم نیست و حتی وقتی که داده ها در سراسر جهان توزیع شده اند این دو خاصیت مطلوب هم نیستند.

 

انواع پایگاه داده های توزیع شده:

اگر داده ها توزیع شده باشند و تمام DBMSها از یک نوع بودند، یک سیستم پایگاه داده های توزیع شده همگن داریم. اگر داده ها در محلهای مختلف باشند ولی نوع DBMSها مختلف باشند در این حالت یک سیستم پایگاه داده های توزیع شده ناهمگن داریم. کلید ایجاد سیستم های ناهمگن داشتن استانداردهای مقبول برای پروتکلهای گذرگاهها می باشد.

 

 

معماریهای مختلف برای سیستم مدیریت پایگاه داده های توزیع شده:

 

1.     سیستمهای مشتری/خدمتگزار: در این معماری وظایف مشتری و خدمتگزار کاملاً از هم جداست و در هر لحظه یک یا چند پردازه مشتری و یک یا چند پردازه خدمتگزار در سیستم موجود است و پردازه های مشتری می توانند به هر یک از پردازه های خدمتگزار پرس و جو بفرستند. این معماری به دلیل سادگی نسبی پیاده سازی و متمرکز بودن خدمتگزار خیلی رایج است. در این سیستم کاربر می تواند با استفاده از واسط کاربر گرافیکی در سیستم مشتری کار کند و نیازی به کار کردن با واسطهای کاربر نامأنوس در سیستم خدمتگزار نیست.

 

 

 

2.     سیستم تشریک مساعی خدمتگزار [8]: سیستم مشتری/خدمتگزار به یک پرس و جو اجازه پوشش چند خدمتگزار را نمی دهد زیرا در این صورت مشتری باید پرس و جو را به بخشهای مختلف تقسیم کرده تا در خدمتگزارهای مختلف اجرا شوند و جوابها را با هم ترکیب کند که این کار اصل جدا بودن وظایف مشتری از خدمتگزار را زیر سوال می برد. در سیستم تشریک مساعی مجموعه ای از خدمتگزارها داریم که هر کدام توانایی اجرای تراکنش روی داده های محلی را دارند و با همکاری یکدیگر تراکنشهایی که شامل چند خدمتگزار می شود را اجرا می کنند.

 

 

3.     سیستمهای میان افزار [9]: محیطی را در نظر بگیرید که در آن تمام خدمتگزاران قابلیت پشتیبانی از پرس و جوهایی که از چند خدمتگزار استفاده می کنند را ندارند، سیستمهای میان افزار برای این محیط از پایگاه داده های توزیع شده طراحی شده است. ایده اصلی در این روش وجود فقط یک خدمتگزار با قابلیت مدیریت تراکنشهای توزیع شده است و سایر خدمتگزاران فقط پرس و جوهای محلی را پاسخ می هند. می توان این خدمتگزار خاص را یک لایه نرم افزاری در نظر گرفت که به آن میان افزار می گویند. این نرم افزار داده ای درا نگهداری نمی کند.

 

 

تکرار [10]

 

تکرار به این معنی است که ما کپی های متعددی از یک رابطه و یا یک قطعه از یک رابطه را ذخیره کنیم. به طور مثال اگر R1 و R2 و R3 ،قطعه های رابطه R باشند، ما ممکن است یک کپی از R1 داشته باشیم ولی مثلاً R2 در دو سایت موجود است و R3 در تمامی سایت ها.

مزایای این روش عبارتند از :

1-     افزایش دسترس پذیری داده : اگر یک سایت که شامل یک کپی از یک رابطه است خراب شود ما همان داده را می توانیم در سایت دیگری پیدا کنیم همچنین اگر یک کپی محلی از رابطه هایی که در سایت های دیگر هستند را داشته باشیم کمتر در معرض تهدید از بین رفتن کانال ارتباطی خواهیم بود. Replication دارای دو نوع مختلف همگام[4] و غیر همگام [5] می باشد، تفاوت این دو نوع در روش به روز رسانی کپی های یک رابطه است در زمانی که یک رابطه تغییر می کند.

2-     پرس و جو ها با سرعت بیشتری قابل اجرا هستند زیرا یک کپی محلی از داده های ذخیره شده درپایگاه داده موجود است.

3-     انجام وظایف بصورت موازی: در موردي كه بيشتر دسترسي هاي به رابطه r براي خواندن از رابطه r مي باشد، چندين سايت مي توانند پرس و جو را به صورت موازي پردازش كنند، نسخه هاي بيشترr شانس اينكه داده مورد نياز در سايتي كه تراكنش در حال اجراست، يافته شود را بالا مي برد از اين رو تکرار داده انتقال داده بين سايتها را حداقل مي كند.

4-     افزایش سربار بروز کردن: سيستم بايستي مطمئن شود كه تمام نسخه هاي رابطه r سازگار هستند. بنابراين هرگاه r، بروز شود اين بروز رسانی بايستي در تمامي سايتهايي كه حاوي نسخه ها هستند منتشر شود. در نتيجه overhead زياد مي شود.

 

اگر رابطه r ، نسخه برداري شده باشد، يك كپي از رابطه r در دو يا بيش از دو سايت ذخيره مي شود. در بيشتر موارد، با تکرار داده کامل روبرو هستیم، به اين منظور كه هر نسخه بر روي تمامي سايتها ذخيره مي شود. كنترل update هاي همزمان توسط چندين تراكنش روي داده هاي نسخه برداري شده مشكلتر از سيستمهاي متمركز است. ما مي توانيم مديريت نسخه هاي رابطه r را با انتخاب يكي از آنها به عنوان كپي اصلي r ساده كنيم.

شفافیت Transparency :

كاربر يك پايگاه داده توزيعي نبايد نياز به دانستن اين داشته باشد كه داده ها به صورت فيزيكي در كجا واقع شده اند يا اينكه در يك سايت محلي خاص داده ها چگونه دستيابي مي شوند. به اين خاصيت data transparency گفته مي شود و مي تواند چند فرم داشته باشد:

·        Fragmentation Transparency: كاربر نيازي به دانستن اينكه يك رابطه چگونه بخش بندي شده است ندارد.

·        Replication Transparency: كاربر هر شي داده را منطقا يكتا مي بيند. سيستم توزيعي ممكن است يك شي را تکرار كند تا کارایی يا در دسترس بودن داده ها را افزايش دهد. كاربر نگران اين موضوع نيست كه كدام اشياء داده اي تکرار شده اند يا در كجا اين نسخه ها قرارگرفته اند.

·        Location Transparency: كاربران نياز به دانستن مكان فيزيكي داده ها ندارند. پايگاه داده توزيعي بايستي قادر به يافتن هر داده اي توسط اعمال شناسه داده در تراكنش كاربر باشد.

 

Data item ها مثل رابطه ها، بخشها، و نسخه ها بايستي نامهاي يكتا داشته باشند. اعمال اين خاصيت در پايگاه داده هاي متمركز آسان است. در يك پايگاه داده توزيعي ما بايد مراقب باشيم كه دو سايت از يك نام مشابه براي data item هاي مجزا استفاده نكنند. يك راه براي اين مشكل اين است كه تمامي نامها در يك name server مركزي ذخيره شوند. name server كمك مي كند تا مطمئن شويم كه يك نام مشابه براي data item هاي مختلف استفاده نمي شود. ما همچنين مي توانيم از name server براي پيداكردن يك data item، طبق نام Item استفاده كنيم.

اين راه حل دو مشكل بزرگ دارد:

1- name server مي تواند گلوگاه كارايي سيستم ما شود اگر محل data item طبق نامهايشان پيدا شود.

2- اگر name server،مشکلی پیدا کند سيستم از كار مي افتد.

 

رویکردهاي ديگر كه بيشتر استفاده مي شوند اين است كه هر سايت به هر نام كه توليد مي كند id خودش را به  صورت پيشوند اضافه كند. از اين جهت هيج كنترل مركزي نياز نيست .اما اين روش location transparency را نقض مي كند .(برخي پایگاه داده ها آدرس اينترنتي خود را به عنوان id سايت استفاده مي كنند.)

براي غلبه بر اين مشكل سيستم پايگاه داده مي تواند مجموعه از نامهاي مستعار[11] براي data item ها  ايجاد كند.كاربر مي تواند به data item توسط نامهاي ساده كه توسط سيستم به نامهاي كامل ترجمه مي شوند مراجعه كند. نگاشت[12] نامهاي مستعار به نامهاي واقعي مي تواند در هر سايت ذخيره شود.با نامهاي مستعار كاربر مي تواند از محل فيزيكي data item،ناآگاه بماند . همچنين چنانچه مدیر پایگاه داده ها تصميم به انتقال data item از سايتي به سايت ديگر رفت كاربر دچار مشكل نشود.

 

مدیریت کاتالوگ توزیع شده[13]:

 

نام گذاری اشیاء[14] :

 

در صورتی که یک رابطه قطعه بندی و تکرار می شود ما باید قادر باشیم هر کپی از یک قطعه را به صورت یکتا مشخص کنیم. یک راه حل اینست که یک global unique ID توسط یک name server تولید شود.

مشکلی که این راه حل دارد اینست که اشیاء محل باید بتوانند بدون در نظر گرفتن اسامی سراسری نام گذاری شوند. راه حلی کلی اینست که هر نام چندین فیلد داشته باشد. یک فیلد نام محلی که هر سایت مسئول نام گذاری آن است و یک فیلد Birth Site که سایتی که رابطه را تولید کرده و اطلاعات تمامی Fragment ها و کپی های رابطه را دارد، را مشخص می کند.

توسط این دو فیلد یک رابطه به صورت یکتا نام گذاری می شود که ما به آن global relation name می گوئیم. برای مشخص کردن یک replica ما از ترکیب global relation name و replica ID استفاده می کنیم و به آن global replica name می گوئیم.

 

ساختار کاتالوگ[15]:

 

کاتالوگ می تواند بر روی یک سایت مرکزی باشد ولی درصورتی که آن سایت خراب شود کاتالوگ سیستم از بین می رود روش دیگر اینست که در هر سایت یک کپی از کاتالوگ سیستم نگهداری شود. ولی اشکال این روش هم اینست که هر تغییر در کاتالوگ سیستم باید به تمامی سایت های دیگر broadcast شود.

روش دیگر اینست که در هر سایت یک کاتالوگ محلی که شامل اطلاعات کپی داده ها در آن سایت می باشد، موجود باشد همچنین کاتالوگ در سایت مادر (birth site) مسئول اینست که محل تکرار های آن رابطه را ذخیره کند هنگامی که یک نسخه جدید تولید می شود و یا یک نسخه از یک سایت به سایت دیگری منتقل می شود اطلاعات سایت مادر باید به روز رسانده شود. هنگامی که یک رابطه تولید می شود اطلاعات کاتالوگ سایت مادر بررسی می شود.

 

استقلال داده توزیع شده[16]:

 

استقلال داده توزیع شده به این معناست کاربران بدون اینکه اطلاعی از تکرار ها و قطعه های یک رابطه باشند قادر به نوشتن پرس و جو های خود باشند. بازسازی رابطه ها وظیفه DBMS می باشد. به عبارت دیگر کاربران هنگام اجرای یک پرس و جو نباید نام کامل اشیاء داده ای را مشخص کنند.

در کاتالوگ سیستم نام محلی هر رابطه ترکیبی از نام کاربر و نام تعریف شده توسط کاربر برای آن رابطه است. هنگامی که کاربر query خود نام یک رابطه را می آورد، DBMS نام کاربر را به این نام اضافه می کند تا نام محلی رابطه را بدست آورد و سپس site-id کاربر را به آن اضافه می کند تا global relation name را بسازد. با جستجو براساس global name درون سایت مادر DBMS می تواند محل تکرار های آن رابطه را پیدا کند.

 

تراکنش های توزیع شده[17]  :

هنگامی که یک تراکنش در یک سایت ثبت می شود، مدیر تراکنش ها در آن سایت، آن تراکنش را به چند زیر تراکنش تقسیم می کند به طوری که هر زیر تراکنش در سایت خاصی اجرا می شود.

 

بازیابی توزیع شده[18]:

 

مقوله بازیابی در معماری های توزیع شده پیچیده تر از معماری های متمرکز است زیرا :

1-      2 نوع Failure می توانیم داشته باشیم یکی از Failure کانال های ارتباطی و Failure سایت های دیگری که زیر تراکنش ها در آنها در حال اجرا می باشند.

2-      یا تراکنش تمامی سایتها باید Commit شود و یا هیچ کدام از آنهاکه این مسئله توسط  Commit Protocol تضمین می شود.

 

پروتوکلهای اجرای معمولی و ثبت[19] :

 

در حین اجرا اعمال زیر تراکنش ها در آن سایت ثبت می شود. و نهایتاً Commit protocol بررسی می کند که آیا تمامی زیر تراکنش های آن تراکنش Commit شده اند یا خیر.

به مدیر تراکنش های سایتی که تراکنش به آن تعلق داد Coordinator می گویند و به مدیر تراکنش های سایتهایی که در آنها زیر تراکنش ها اجرا می شوند Subordinator می گویند هنگامی که کاربر تصمیم می گیرد که تراکنش را Commit بکند دستور Commit به Coordinator تراکنش فرستاده می شود و پروتکل two phase commit به صورت زیر اجرا می شود.

1-    Coordinator یک پیغام Prepare به تمامی Subordinate ها می فرستد.

2-    هنگامی که Subordinate پیغام prepare را دریافت می کند تصمیم می گیرد که آیا تراکنش را abort کند و یا commit کند. سپس در prepare log خود وضعیت را ثبت می کند و یک پیغام بله و یا خیر به Coordinator می فرستد.

3-    اگر Coordinator از تمامی Subordinate ها پیغام بله را دریافت کند یک Commit را در فایل log ثبت می کند و پیغام Commit را به تمامی Subordinate ها می فرستد. ولی در صورتی که حتی از یک Subordinate پیغام خیر دریافت کند و یا اینکه اصلاً پیغامی دریافت نکند پیغام abort را به تمامی Subordinate ها می فرستد. و آن را نیز log می کند.

4-    هنگامی که یک Subordinate پیغام abort را دریافت می کند abort را در فایل log ثبت می کند و یک پیغام ack به coordinator می فرستد و زیر تراکنش خود را abort می کند. در صورتی که Subordinator پیغام commit دریافت کند نیز آن را log می کند و یک ack به coordinator می فرستد و زیر تراکنش را commit می کند.

5-    هنگامی که coordinator از تمامی Subordinator ها پیغام ack را دریافت می کند برای تراکنش end را در فایل log ثبت می کند.

 

دلیل اینکه به این پروتکل two phase commit می گویند اینست که دو دسته پیغام رد و بدل می شود یک دسته پیغام های نظرسنجی [20] و دسته دوم پیغام های termination.

 

شروع دوباره بعد از Failure :

هنگامی که یک سایت پس از یک crash دوباره احیا می شود، فرآیند Recovery را فراخوانی می کند. فرآیند recovery و فایل log را می خواند و تمامی تراکنش هایی که هنگام Failure درحال اجرای commit protocol بودند را پردازش می کند.

·        اگر برای تراکنش T مایک رکود Commit  داریم  T را Redo می کنیم و اگر رکورد abort باشد آن را undo می کنیم. در صورتی که این سایت coordinator باشد و از روی رکوردهای log می توان فهمید باید به تمامی Subordinate ها پیغام Commit و یا abort بفرستیم و بقیه کادر همانند قبل ادامه دهیم.

·        اگر مایک رکورد Log برای تراکنش T  داریم ولی رکورد Commit و abort نداریم آنگاه متوجه می شدیم که این سایت Subordinate  است، از رکورد coordinator را شناسائی می کنیم و با آن ارتباط برقرار می کنیم تا وضعیت تراکنش T  را بیابیم.  هنگامی که coordinator وضعیت تراکنش را پاسخ داد (commit   abort)  همانند مورد قبل عمل می کنیم.

·        اگر هیچ گونه log برای تراکنش T نداشته باشیم، مسلماً T برای commit نظر خواهی نکرده است در نتیجه ما می توانیم T را به سادگی abort کنیم. در این حالت ما نمی توانیم مشخص کنیم که سایت Coordinator بوده است یا Subordinate.

 

اگر سایت Coordinator ، fail شود، Subordinate ها نمی توانند تصمیم بگیرند که آیا زیر تراکش را Commit  یا abort بکنند، در این موقعیت T بلاک شده است.

البته subordinate  ها در این مرحله می توانند با یکدیگر ارتباط برقرار کنند تا از وضعیت یکدیگر مطلع بشوند و در صورتی که یکی از آنها abort کرده است بقیه نیز abort کنند.

 

 

References:

i.Database System Concepts (4th edition)-2001-Abraham Silberschatz, Henry F. Korth, S. Sudarshan

ii.Database Management Systems – 2000 – R. Ramakrishnan, J. Gehrke

iii. Jose´ Castro, Michael Georgiopoulos, Ronald Demara, Avelino Gonzalez - "Data-partitioning using the Hilbert space filling curves: Effect on the speed
of convergence of Fuzzy ARTMAP for large database problems"

iv. Damianos Chatziantonioua, Kenneth A. Rossb - "Partitioned optimization of complex queries"
 


[1] Centralized Database

[2] Client Server Database

[3] Parallel Database

[4] Distributed Database

[5] Query

[6] Distributed Data Independence

[7] Distributed Transaction Atomicity

[8] Collaboration Server System

[9] Middleware

[10]  Replication

[11] Alias

[12] Mapping

[13] Distributed Catalog Management

[14] Objects Naming

[15] Catalog Structure

[16] Distributed Data Independence

[17] Distributed Transactions

[18] Distributed Recovery

[19] Normal Execution and Commit Protocols

[20] Voting phase

+ نوشته شده در  جمعه هفدهم اسفند 1386ساعت 14:19  توسط یوسف عبدلیان باریکرسفی  | 

معماري سرويس گرا Service Oriented Architecture چیست؟

معماري سرويس گرا Service Oriented Architecture چیست؟

منبع : مجله شبكه
شماره پنجاه ويكم

معاري سرويس گرا (SOA) روشي جديد و در حال تكامل براي ساخت برنامه هاي توزيع شده با Distributed Applicationاست. سرويس ها اجزاي توزيع شده با رابط هاي تعريف شده و مشخص هستند كه پيغام هاي XMIL را پردازش وتبادل مي كنند. با رويكرد سرويس گرا مي توان راه حل هاي را ارائه داد كه به مرز دامنه هاي سازمان، شركت يا دپارتمان محدود نيستند. با استفاده از SOA مي توان در شركتي كه داراي سيستم ها و برنامه هاي كاربردي مختلف روي پلتفرم هاي متفاوت است، يك راه حل يك پارچه سازي با استقلال زياد(loosly coupled) ساخت كه جريان يكنواخت و ناهماهنگ كار را تضمين كند.
هر كس كه از سايت هاي تجارت الكترونيكي به صورت آنلاين خريد كرده باشد، با مفهوم سرويس ها آشنا است. وقتي كه سفارش تا ن را داديد، بايد اطلاعات كارت اعتباري تان را ارايه كنيد كه به طور معمول توسط يك فراهم كننده سرويس ثانويه، تاييد و شارژ مي شود. وقتي كه سفارش پذيرفته شد، شركت سفارش گيرنده با يك شركت فراهم كننده سرويس حمل ونقل فراهم مي كند و در نهايت كالاي شما تحويلتان مي شود. نياز به معماري سرويس گرا از جنبه اي ديگر نيز به نحوه بارزي در برنامه هاي كاربرديeCommerce مشهود است. اگر مثلا جزء(componet) مربوط به پرداخت با كارت اعتباري offline و يا غير فعال باشد،‌قرار نيست كه فرايند فروش متوقف شود. بلكه سفارش ها بايستي پذيرفته شوند وعمليات پرداخت به وقت ديگري موكول شود.
مثل ساير معماري هاي توزيع شده،‌ SOA ساخت برنامه هاي كاربردي با استفاده اجزايي كه در domainهاي جدا از هم را قرار دارند را ممكن مي سازد . SOA از سرويس هاي وب به عنوان نقاط ورود برنامه كاربردي استفاده مي كند كه از لحاظ مفهومي معادل همان اجزاي proxy و stub در سيستم هاي توزيع شده سنتي مبتني بر اجزاء هستند . با اين تفاوت كه در اين جا ارتباط بين سرويس وب و استفاده كننده خيلي آزاداترانه ومستقل تر (loosely coupled) است .به علاوه SOA به خاطر در بر داشتن فاكتورهايي كه اهميت حياتي در تجارت دارند ، نيز منحصر به فرد است . فاكتورهايي نظير: قابليت اطمينان سرويس،‌ جامعيت پيام ، يكساني تراكنش و امنيت پيام . در امور تجاري واقعي نمي توان روي سرويس هايي كه يك درخواست را فقط به خاطر اين كه بتوانند بفهمند،‌ پردازش مي كنند حساب كرد . در امور تجاري به قطعيت و اطمينان بيشتري نياز است. واضح است كه سيستم هاي مختلف ممكن است بعضي اوقات غير فعال باشند و يا پاسخگويي آن ها در دفعات مختلف متفاوت باشد . با وجود اين هيچكدام از اين موارد نبايد براي كنار گذاشتن ياعدم پاسخ به يك درخواست باشند.
علاوه بر آن نبايد دليلي براي كنار گذاشتن يا عدم پاسخ به يك درخواست باشند واضح است كه سيستم هاي مختلف ممكن است بعضي اوقات غير فعال باشند و يا پاسخگويي آن ها در دفعات مختلف ، متفاوت باشد. با وجود اين ،‌هيچ كدام ازاين موارد نبايد دليلي براي كنار گذاشتن يا عدم پاسخ به يك درخواست باشند. علاوه بر آن نبايد هيچ ابهامي در نحوه فراخواني يك سرويس وجود داشه باشد. اگر سيستمي توانايي هاي خود را در قالب سرويسي روي وب ارائه كند. در آن صورت نحوه فراخواني آن سرويس بايد به طور واضح مستند سازي و اعلام شود . بسياري از مسائل دسترس پذيري و مقياس پذيري برنامه هاي كاربردي امروزي در SOA حل شده است كه احتمال نقض آن در هر مر حله اي از جريان كار بسيار زياد است.در SOA فرض بر اين است كه خطا وجود دارد و مي تواند بيفتد ، بنابراين استراتژي هايي براي مثال اگر يك سرويس نتواند يك پيغام را در مرحله اول بپذيرد . اين معماري طوري طراحي شده است كه مجددا پيام را بفرستد . واگر يك سرويس به طور كامل قابل دسترس نباشد، (كه هرگز نبايد در يك سيستم SOA پايدار انفاق بيفتد ) آن وقت معماري طوري طراحي شده است كه روي دادن خطاهايي كه ممنجر به قطع كامل در خواست سرويس مي شود،‌امكان پذير نباشد. SOA قابليت اطمينان را افزايش مي دهد، چون خطاهاي موقت در بخشي از جريان كار نمي توانند كل فرايند تجاري را از كار بياندازند .
به بيان كلي،‌ SOA فرايندي تكامل يافته را ارائه مي نمايد و ازاين نظر مي تواند ان را بلوغ سريس هاي وب و تكنولوژي هاي يكپارچه سازي به حساب آورد . در SOA به اين امر توجه شده است كه سيستم هاي با اهميت حياتي كه بر مبناي تكنولوژي هاي توزيع شده ساخته مي شوند. بايد تضمين هاي خاصي را تامين نمايند . در اين گونه سيستم ها بايد اين اطمينان وجود داشته باشد كه در خواست هاي سرويس به طور صحيح مسير دهي و هدايت مي شوند، در زمان مناسب به آن ها پاسخ داده مي شود، و اين سرويس ها به طور واضح و دقيق سياست هاي ارتباطي و رابط هاي خود را اعلام مي كنند.

سرويس ها چيستند ؟
بسياري از ما آنقدر با تكنولوژي هاي سرويس هاي وب آشنا هستيم كه اغلب در باره اين كه خود سرويس ها واقعا چه هستند، فكر نمي كنيم. در ادامه سه تعريف مي آوريم كه در كنار يكديگر ماهيت يك سرويس راشرح مي دهند:
1-سرويس ها اجزاء مستقلي هستند كه پيغام هاي XML با ساختار مشخص و خوش تعريف(Well-defined) را پردازش مي كنند.
2-سرويس ها داراي رابط هاي خوش تعريف هستند كه به وسيله يك سند مبتني بر XML كه سند Web Service Description Language (WSDL) خوانده مي شود، به اين سند گاهي قرارداد WSDL نيز گفته مي شود. محتويات اين سند،‌عمليات (متدهايي) كه توسط سرويس ارائه مي شود را شرح مي دهد. از جمله اطلاعات مربوط به انواع داده، اطلاعات نحوه اتصال به سرويس، جهت يافتن و ارتباط با عمليات سرويس وب.
3-سرويس ها داراي نقاط انتهايي(Endpoint) هستند كه استفاده كنندگان از و ساير سرويس ها مي توانند بر اساس آدرس سرويس (معمولا URL ) به آن ها متصل شوند. اين همان چيزي است كه ارتباط(جفت شدن) آزادانه خوانده مي شود.

مشخصه هاي سرويس هاي وب و WS-IBasic Profile
برنامه هاي كاربردي SOA نياز به پشتيباني و امكانات زير ساختي زيادي دارند. از جمله امكانات ارسال و دريافت مختلفي ، زير ساخت امنيتي و پشتيباني براي پيام رساني مطمئن. شركت هاي مختلفي، از جمله IBM و مايكروسافت،‌براي ارائه مشخصه هاي استانداردي كه دامنه گسترده تكنولوژي هاي زير ساخت SOA را پوشش دهد، با يكديگر همكاري مي كنند.
متاسفانه مشخصه هاي سرويس هاي وب در محيطي ارايه مي شوند و توسعه مي يابند كه شركت هاي دخيل در آن بيشتر رقيب هستند تا شريك. رقابت هاي ميان شركت ها باعث مي شود كه نتواند بر سر استانداردهاي صحيح و مناسب به توافق برسند. اغلب،‌گروههاي مختلف شركت ها، براي موارد يكسان ، استاندارهاي متفاوتي را دنبال مي كنند . سازمان هاي غير انتفاعي مثل OASIS گرد همايي هايي براي همكاري در ارايه و توسعه استانداردها و مشخصه هاي سرويس هاي وب برگزار مي كنند.( براي اطلاعات بيشتر درباره OASIS به http://www. Oasisopen.org مراجعه كنيد.)

معرفي WS-IBasic Profile
سازمان(WS-I)Web Services Interoperability يك هدف اصلي دارد و آن را ارائه مشخصه هاي استانداردي است كه سرويس هاي وب بتوانند با استفاده از آن روي پلتفرم هاي مختلف با هم تعامل داشته باشند. به بيان ديگر، هدف اين سازمان اين است كه سرويس هاي وب بتوانند با هم كار كنند،‌بدون توجه به اين كه تحت چه سكوي كاري عمل مي كنند و يا با استفاده از چه ابزارهايي ايجاد شده اند . اين مشخصه هاي سرويس هاي وب زمينه هاي گسترده اي را پوشش مي دهند، از پروتكل هاي نقل و انتقال داده تا امنيت كه مجموعه آن ها تحت عنوان پروفايل پايه WS-I جمع آوري شده اند.
مشخصه هاي سرويس هاي وب به طور عمده در گروههاي زير دسته بندي مي شوند:
نقل و انتقال (Tranport )
اين گروه از مشخصه ها، پروتكل هاي ارتباطي براي انتقال داده هاي خام بين سرويس هاي وب را تعريف مي كنند و پروتكل هاي HTTP، HTTPS و SMTP را شامل مي شوند.

پيغام رساني (Messaging)
اين گروه از مشخصه ها تعيين مي كنند كه پيغام هاي XMIL كه سرويس هاي وب تبادل مي كنند. چه فرمتي بايد داشته باشند. اين گروه مشخصه هاي SOAP براي نحوه رمز گذاري پيغام و مشخصه هاي XMIL و XSD براي كلمات كليدي پيغام (vocablury) . را شامل مي شود. مشخصه هاي آدرس دهي سرويس هاي وب نيز در اين گروه قرار دارد . اين مشخصه ها اطلاعا ت مقصد پيغام را از پروتكل نقل و انتقال داده ها، مستقل مي سازد . براي مثال مي توان با استفاده از مشخصه هاي آدرس دهي سرويس هاي وب، چندين مقصد براي يك پيغام XMIL تعريف كرد.

تشريح (Description)
اين گروه شامل مشخصه هايي براي تشريح و توضيح يك سرويس وب است . مشخصه هاي اصلي اين گروه WSDL ( براي قرارداد سرويس ) و XSD ( براي تعريف شماهاي نوع داده) هستند. اين گروه همچنين مشخصه سياست گذاري سرويس وب) WS-Policy )را شامل مي شود كه سياست گذاري هايي كه يك سرويس وب به هنگام ارتباط با يك سرويس گيرنده( كلاينت) اعمال مي كند و تشريح مي كند. براي مثال يك سرويس ممكن است شرايط خاصي براي فراخواني عملياتش داشته باشد. مشخصه WS-Policy به سرويس وب اين امكان مي دهد كه به سرويس گيرنده هاي احتمالي بگويد براي اجراي يك درخواست سرويس موفق بايد از چجه قوانيني تبعيت كنند. نهايتا،‌ در اين گروه مشخصه UDDI براي يافتن ( description) سرويس هاي وب گنجانده شد ه است.

ضمانت هاي سرويس (Service Assurances)
سرويس هاي وب نبايد فقط به سادگي پيغام هاي XMIL را رد و بدل كنند. اين سرويس ها بايد تضميني براي سرويس گيرنده داشته باشند كه اولا پيغام به نحوي ايمن منتقل خواهد شد، ثانيا اين كه سرويس گيرنده بايد حتما پاسخي دريافت كند، حتي اگر در نقطه اي از جريان كار، نقصي پيش آمده باشد. اين گروه از مشخصه ها شامل مشخصه امنيت سرويس وب ( براي تضمين رسيدن پيغام ها) مشخصه پيغام رساني مطمئن سرويس وب ( براي تضمين رسيدن پيغام ها در شبكه هاي ناپايدار و بدون قابليت اطمينان) و تعداد زيادي از مشخصه هاي مربوط به تراكنش است.

تركيب سرويس (Service Composition)
مجموعه گسترده مشخصه هاي WS-I Basic Profile را نمي توان به طور كامل در هر سرويس وب پياده كرد. به همين خاطر، توسعه دهندگان بايد مشخصه هايي كه براي يك سرويس خاص مهم و مناسب هستند را انتخاب و در آن سرويس پياده كنند. براي تامين اين هدف،‌ سرويس ها داراي ويژگي تركيب سرويس هستند . كه به توسعه دهندگان اجازه مي دهد مشخصه هاي مختلف را براي هر سرويس انتخاب كنند و آن ها را در سند WSDL گرد آوري و ثبت كنند.
در ادامه بحث ،تعدادي از مهمترين مشخصه هاي سرويس هاي وب و اهداف آن را بيان مي كنيم:
WS-Seccurity (امنيت سرويس وب ): مشخصه اي جامع كه مجموعه اي از تكنولوژي هاي متداول امنيتي را تحت پوشش دارد، از جمله امضاهاي ديجيتال و رمز گذاري مبتني بر نشانه هاي امنيتي،شامل گواهي هاي X.509
WS-Policy (سياستگذاري سرويس وب ): به سرويس هاي وب امكان مي دهد نيازها، ترجيحات(‌preferences ) و توانايي هاي خود را براساس مجموعه اي از فاكتورها بيان و مستند سازي مي كند كنند. البته تمركز بيشتر با فاكتورهاي امنيتي است . براي مثال سياستگذاري يك سرويس وب مي تواند شامل نيازهاي امنيتي آن، نظير رمز گذاري و امضاي ديجيتال بر اساس يك گواهي X.509 باشد.
WS-Adressing (آدرس دهي سرويس وب): نقاط انتهايي سرويس را در يك پيغام مشخص مي كندو امكان update شدن اين نقاط انتهايي را در مواردي كه پيغام بين دو يا چند سرويس منتقل مي شود، فراهم مي سازد. اين مشخصه به طور گسترده در حال جايگزيني مشخصه قديمي تر WS-Routing (مسير دهي سرويس وب )است.
WS-Messaging (پيغام رساني سرويس وب): امكان پشتيباني از ساير پروتكل هاي كانال ارتباطي، نظير TCP ، را در كنار HTTP براي سرويس وب فراهم مي سازد. اين مشخصه ساخت و توسعه نرم افزارهاي پيغام رساني، از جمله برنامه هاي كاربردي غير همزمان كه با استفاده از SOAP روي HTTP ارتباط برقرار مي كنند، را تسهيل مي كند.
WS-Secure Conversation(مكالمه ايمن سرويس وب): با استفاده از نشانه هاي امنيتي (Security tokens) ارتباطات مورد اعتماد براي جلسات كاري فراهم مي كند.
WS-Reliable Messaging (پيغام رساني مطمئن سرويس وب): مكانيسم هايي براي تضمين اطمينان از رسيدن پيغام،حتي در صورتي كه يك يا چند سرويس در زنجيره سرويس ها قابل دسترس نباشند ، را فراهم مي سازد. اين مشخصه شامل روش هايي براي اعلام رسيدن پيغام است، به طوري كه فرستنده بتواند بفهمد كه آيا گيرنده در دريافت پيغام موفق بوده است يا نه.
با معرفي و ثبت مشخصه هاي جديد و بهبود مشخصه هاي قبلي ، مشخصه هاي سرويس هاي وب دائما در حال تكامل هستند. البته، مجموعه مشخصه هاي پايه اي كه در مقاله بيان شد، احتمالا براي مدتي به عنوان زير بناي اصلي مشخصه هاي سرويس هاي وب باقي خواهند ماند،‌ چرا كه اين مشخصه ها نيازهاي اصلي و بنيادي برنامه هاي كاربردي سرويس گرا را پوشش مي دهند.

معرفي .NET Web Services Enhancements 2.0 for
Web Services Enhancements (WSE) 2.0 مجموعه اي از ابزارهاي مديريت شده تحت .NET را جهت پياده سازي مشخصه هاي سرويس هاي وب براي توسعه دهندگان فراهم آورده است. WSE جهت فراهم آوردن پشتيباني بيشتر زيرساختي، فراتر از آنچه كه در حال حاضر به وسيله چهارچوب كاري دات نت تامين مي شود،‌براي راه حل ها ي SOA ارايه شده است. به كمك WSE همچنين زير ساخت پردازشي براي ميزباني سرويس هاي وبي كه WS-Specification را پياده سازس مي كنند، فراهم مي آورد. براي مثال، WSE به شما امكان مي دهد كه به آساني سرويس هاي وبي بسازيد كه رمز گذاري و امضاهاي ديجيتال را روي درخواست ها و پاسخ هاي سرويس وب اعمال مي كنند. در نهايت،‌WSE يك ابزار بهره وري است كه براي هدايت توسعه دهندگان دات نت به سمت نسخه آينده Indigo طراحي شده است .Indigo از محصولات آينده مايكروسافت است كه پشتيباني يك پارچه براي برنامه هاي كاربردي پيغام رساني و سرويس گرا را هم فراهم مي آورد.
WSE يك محصول در حال تكامل است و در حال حاضر تمام مشخصه هاي سرويس هاي وب را پشتيباني نمي كند، ولي بسياري از مشخصه هاي مهم نظير WS-Seccurity و WS-Policyپشتيباني مي نمايد . به خاطر داشته باشيد كه SOA تحت تاثير مجموعه اي از استانداردها و مشخصه هاي فني است كه خودشان در حال تغيير هستند . نگارش هاي WSE براي هماهنگي با نسخه هاي جديد اين استانداردها و تكنولوژي ها بايد چرخه انتشار انعطاف پذيري داشته باشند. به همين خاطر مايكروسافت تصميم گرفته است كه چرخه انتشار WSE از چرخه انتشار نگارش هاي .NET Framework جدا كند،‌تا بتواند انتشار نگارش هاي اين محصول را با انعطاف پذيري بيشتري برنامه ريزي كند.

خلاصه
در اين مقاله مفاهيم اصلي معماري سرويس گرا (SOA) براي برنامه هاي كاربردي توزيع شده مبتني بر تكنولوژي سرويس هاي وب ،‌معرفي شدند. در اين مقاله بيان كرديم كه يك سرويس، ‌در رابطه با SOA در واقع چه چيزي است و جنبه هاي مهم و اصلي معماري SOA را مرور نموديم. همچنين به طور مختصر WS-I Basic Profile و WS-Specificationو Web Services Enhancementsمعرفي شدند.

+ نوشته شده در  جمعه هفدهم اسفند 1386ساعت 13:17  توسط یوسف عبدلیان باریکرسفی  | 

بررسی معماری سرویس گرا

 
 
بررسی معماری سرویس گرا

سهیل توده فلاح

اشاره :

در چهار دهه اخیر ، پیچیدگی نرم افزارها روز بروز بیشتر شده و تقاضا برای نرم افزارهای قدرتمندتر افزايش يافته است. در این میان ، به نظر می رسد که روشهای قدیمی جوابگوی نیازهای در حال رشد کنونی نیستند و نیاز به ایجاد و بکارگیری روشهایی است که بوسیله آنها بتوان بر این پیچیدگیها در زمانهايی کوتاهتر غلبه کرد. از طرفي امكان كنار گذاشتن سیستمهای نرم افزاری موجود که تا به حال مشغول سرویس دهی به مشتریان بوده اند ، وجود ندارد و می بایست سیستمهای جدید را بصورت یکپارچه و در کنار همین سیستمها بوجود آورد. معماری سرویس گرا ، با تکیه بر محاسبات توزیع شده و بر پایه شبکه ها و لایه های میانی و همچنين زبانهایی که توليد نرم افزارهای توزیع شده را فراهم مي كنند ، بعنوان راه حلی مناسب جهت از میان برداشتن مشکلات و مسائل مذكور مطرح گرديده است. در این مقاله ضمن معرفی این معماری به محاسبات سرویس گرا و نیازهای آن پرداخته و معماری سرویس گرای توسعه یافته به عنوان راه حلی برای رفع این نیازها ارائه می شود.



معرفی
تعاريف گوناگوني از معماري سرويس گرا ارائه شده است كه از جمله آنها مي توان به تعاريف زير اشاره كرد:
مجموعه قوانين ، سياستها و چهارچوبهايي كه نرم افزارها را قادر مي سازد تا عملكرد خود را از طريق مجموعه سرويسهاي مجزا و در عين حال مربوط به هم در اختيار ساير درخواست كنندگان قرار دهند تا بتوانند بدون اطلاع از نحوه پياده سازي و تنها از طريق رابطهاي استاندارد و تعريف شده ، این سرويسها را پيدا كرده و فراخواني نمايند.و یا معماری سرویس گرا روشي برای ساخت سیستمهای توزیع شده اي است که در آنها عملکرد سیستم بصورت سرویس در اختیار کاربران و یا سایر سرویسها قرار می گیرد.
از ديگرتعاريف ارائه شده مي توان به "واحدهاي نرم افزاري آماده در شبكه (Network-available Software Unit) " يا "سرويسهاي سطح حرفه (Business-level services) " اشاره كرد.
در حال حاضر ، تکنولوژی سرويسهاي وب(Web Services)  و پیاده سازی نمونه های موفق از آن، نشان داده است که SOA می تواند به عنوان راه حلی عملی و دست یافتنی در طراحی سیستمهای جدید و یکپارچه-سازی سیستمهای بزرگ موجود ، مطرح گردد. البته ذکر تفاوت سرويسهاي وب و SOA در اینجا لازم به نظر می رسد.
سرويسهاي وب  مجموعه ای از تکنولوژیهایی همچون XML,SOAP,WSDL و UDDI می باشد که امکان ارائه راه حل و برنامه نويسي جهت رفع مشکلی خاص را فراهم مي نمايد.
در حالی که SOA یک معماریست و از مجموعه مشخصی از تکنولوژیها فراتر مي باشد. اگرچه SOA بر اساس این تکنولوژیها راه حل ارائه می نماید ، اما در عین حال مستقل از هر یک از آنها است.
آنچه اهمیت دارد تعریف سرویس به عنوان مهمترین عنصر این معماری می باشد.
سرویس ، رفتار قرادادی تعریف شده ایست که هر قطعه ای می تواند آنرا جهت استفاده سایر قطعات در سیستم تهیه و پیاده سازی نماید.
در این معماری ، همه توابع به عنوان سرویس تعریف می گردند. این توابع شامل توابع حرفه (Business functions)  و تراكنشهاي حرفه‌اي (Business transactions)می باشند كه تراكنشهاي حرفه خود شامل توابع سطح پايين (Low-level functions) و توابع سيستمي سرويسها(System service functions) هستند.
سرویسها بصورت مستقل طراحی و پیاده سازی شده و به عنوان جعبه سياه عمل می نمایند. قطعات دیگر در خارج از این قطعه نیازی به دانستن نحوه انجام کار در این سرویس را ندارند و تنها به نتیجه آن نیازمندند.
قطعات، سرویسهای خود را از طریق رابطها (interface) در اختیار قطعات دیگر قرار میدهند که این رابطها قابل دستیابی و فراخوانی هستند، بدون اینکه محل قرار گیری آنها اهمیت داشته باشد (رابطهاي محلي يا دور ) . در ضمن این رابطها می توانند به همان نرم افزار كاربردي  یا به آدرسی در محل دیگری از شبکه مرتبط باشند .
رابطها به عنوان کلیدی در برقراری این ارتباطها هستند و از طریق آنها نوع پارامترهای ورودی و نتایج (خروجی) مشخص می گردد.
بعلاوه ، با ایجاد قابلیت توزیع شدگی به شكلي مناسب و بدون وابستگی زیاد ، می توان سرویسها را در قسمتهای مختلف شبکه و بصورت بعضا تکراری ( مخصوصا برای سرویسهای مهم ) قرار داد تا این سرویسها همیشه در دسترس بوده و در صورت زیاد شدن درخواستها بتوان با استفاده از تکنیکهای Load Balancing به تمامي آنها به‌خوبی پاسخ داد.

ویژگیهای سرویس و محاسبات سرویس گرا
محاسبات سرویس گرا (SOC) ، نمونه ای از محاسبات است که در آن طراحی و توسعه سیستم های کاربردی بر پايه سرویس به عنوان عنصر اساسی ، انجام می گیرد. سرویس ها عناصری هستند که مستقل از پلتفرم بوده و در ساخت سیستمهای توزیع شده سریع و ارزان قیمت کمک می نمایند. همچنین سازمانها را قادر می- سازند تا توابع خود را از طریق زبانها و پروتکلهای بر پایه XML پیاده سازی و بر روی اینترنت یا اینترانت ارائه نمایند.
از آنجا که سرویسها از طریق سازمانها و شرکتهای گوناگون تهیه می شوند و جهت دسترسي كاربران مختلف می بایست همواره در دسترس باشند ، رعایت ویژگیهای زیر ضروری می باشد:

- مستقل از تکنولوژی باشند؛ به این معنا که بکارگیری و مکانیزم فراخوانی و پیدا کردن سرویسها به راحتی و از تمام محیطها ( سیستمهای عامل مختلف و زبانهای برنامه سازی گوناگون ) میسر بوده و وابسته به پلتفرم خاصی نباشد.

- وابستگی بسیار پایینی بین درخواست کننده و ارائه دهنده سرویس وجود داشته باشد و یا بعبارتی Loosly Coupled باشد. به این معنا که درخواست کننده نباید هیچ نیازی به دانستن ساختار داخلی و نحوه پیاده سازی سرویس داشته باشد. برای این منظور ، فراخوانی سرویس از طریق بکار گیری مکانیزم پیغام (Message) بجای فراخوانی API انجام می گردد.

- درخواست کننده نباید نیازی به دانستن محل قرارگیری سرویس داشته باشد و بعبارتی معماری سرویس گرا می بایست Location Transparency  را پشتیبانی نماید. به این ترتیب که محل قرارگیری سرویس و مشخصات آن در مخزنی (Repository) قرار می گیرد و درخواست کننده ، محل و اطلاعات لازم را از طریق بازیابی آن از این مخزن بدست می آورد.

سرویس ها می توانند به دو شکل ساده و ترکیبی ارائه شوند. سرویسهای ترکیبی ، سرویسهایی هستند که بر اساس بکارگیری چند سرویس ساده ( یا ترکیبی) ایجاد می شوند. برای مثال ، ممکن است سیستم توزیع شده ای  بر اساس چند سرویس ساده صدور صورتحساب ، ثبت سفارش ، مدیریت روابط مشتری و ... سرویسهای ترکیبی گسترده تری در ارتباط با حرفه اي خاص ایجاد نماید.
سیستمهای ساخته شده بر اساس سرویس ، ترکیبی از سرویسهای مستقل هستند که عملکردهای خود را از طریق رابطهای تعریف شده ای در اختیار کاربران (بالقوه ) خود  قرار میدهند.  (Web Service Description Language)WSDL از جمله راههایی است که بطور گسترده برای تعریف این رابطها بکار می رود تا بوسیله آن جزئیات لازم برای اتصال درخواست کننده به ارائه دهنده سرویس تعریف شود.

نرم افزار به‌عنوان سرویس
اصل ارائه شده " نرم افزار- بعنوان- سرویس" از محاسبات سرویس گرا ، بر اساس مدل ASP مطرح گشته است. ASP هویت سوم شخصیست که بكارگيري سرويسهاي نرم افزاري و دسترسی مشتری را به بسته نرم افزاری از طریق شبكه، مدیریت و میزبانی می نماید.به‌عبارتی ASP ها راهی برای رفع نیازهای IT شرکتها از طریق واگذاری بخشي از این نيازها  یا تمامی آنها به بیرون از سازمان می باشند.
برای این منظور ASP با استفاده از زیر ساختهای خود ، ارتباط بین مشتری و نرم افزار ارائه شده را برقرار کرده و دسترسی وی به داده ها و توابع موجود را بصورت در دسترس (online)، مدیریت می نماید.
اگرچه نظریه "نرم افزار بعنوان سرویس" اولین بار توسط ASP ارائه شد ، اما مشكلات این روش باعث ایجاد کدهایی می شد که معمولا قابل استفاده مجدد نبوده و محدود به مشتری خاص می بود ، بعبارتی وابستگی زیادی بین سرویس ارائه شده و سیستم استفاده کننده بوجود می آمد.
معماری سرویس گرا اجازه میدهد تا نظریه "نرم افزار بعنوان سرویس"، گسترش یافته  تا از طریق آن بتوان پردازشها و تراکنشهای پیچیده را بعنوان سرویسهايی با قابلیت استفاده مجدد ارائه کرد و به این ترتیب سیستمها را مستقل از سرویسها طراحی و تولید نمود.

معماری سرویس گرای مقدماتی

SOA شیوه ای منطقی برای طراحی سیستمهای نرم افزاری است که از طریق آن سرویسهایی جهت ارائه به کاربران یا سایر سرویسهای توزیع شده بر روی شبکه ایجاد می شود و این سرویسها از طریق رابطهای تعریف شده در دسترس می باشند.
معماری سرویس گرای مقدماتی ، راهی برای تبادل اطلاعات بین عاملهای نرم افزاری بوسیله پیغام تعریف می نماید. این عاملها ، درخواست کننده سرویس (مشتری) و یا تهیه کننده سرویس می باشند. علاوه بر این دو، عامل دیگری بعنوان عامل کشف سرویس نیز وجود دارد. در معماری سرویس گرا معرفی سرویسها و همچنين نحوه ارتباط این سه شرکت کننده نیز اهمیت دارد. این ارتباطات عبارتند از : منتشر کردن سرویس ، پیدا کردن سرویس و متصل شدن به سرویس.

شکل 1 (براي مشاهده نماي بزرگتر، روي تصوير کليک کنيد)

در یک سناریو بر پایه سرویس ، تهیه کننده ، سرویس را پیاده سازی کرده و از طریق شبکه به ارائه توضیحات آن سرویس برای درخواست کننده یا عامل کشف سرویس می پردازد. در خواست کننده معمولا درخواست پیدا کردن سرویس را به عامل کشف سرویس میدهد تا از طریق آن به توضیحات ارائه شده سرویس و محل آن دسترسی پیدا کند. سپس با بکارگیری این اطلاعات به تهیه کننده سرویس متصل شده و از سرویس ارائه شده استفاده می نماید.
بدین ترتیب ، سرویس بعنوان قطعه نرم افزاری پیاده سازی شده ای که توسط یک رابط تعریف شده مستند گرديده است و نه تنها بوسیله خود تهیه کننده بلکه توسط سایر عواملی که از نحوه پیاده سازی آن خبر ندارند ، نیز قابل استفاده و فراخوانی است. این ویژگی جعبه سیاه بودن سرویس از اصل ماژولاریتی در مهندسی نرم افزار به ارث رسیده است. البته سرویس با تعاریفي مانند ماژول ، قطعه نرم افزاری یا شی تفاوت دارد ، زیرا نه تنها در سطح برنامه ها و نرم افزارهاي کاربردی ، بلکه در سطح حرفه و حتی مابین سازمانها نیز قابل بكارگيري و استفاده مجدد مي باشد.
در واقع سرویسها، نمایش عملکرد معنی داری از حرفه هستند که می توانند بنا به نیاز مشتری در سرویسها و توابع بزرگتر یا جدید بکار گرفته شوند.
رابطها به سادگی مکانیزمی جهت برقراری ارتباط بین سرویس و نرم افزارها یا سایر سرویسها ایجاد می نمایند. از لحاظ تکنیکی، رابط سرویسها ، توضیحاتی در مورد نام و امضاء متدهای یک سرویس هستند که توسط درخواست کننده ، قابل فراخوانی می باشند.

معماری سرویس گرای توسعه یافته
معماری سرویس گرای مقدماتی به برخی از مسائل موجود در یک معماری مبتنی بر سرویس نمی پردازد. از جمله این مسائل، مدیریت، هماهنگ سازی سرویسها ، متناسب کردن آنها ، امنیت ، مدیریت تراکنشها و ... می باشد.این نکات که در شکل 2 نمایش داده شده است ، در معماری سرویس گرای توسعه یافته در نظر گرفته شده است.

شکل 2 (براي مشاهده نماي بزرگتر، روي تصوير کليک کنيد)

معماری مقدماتی در لايه پاييني این معماری لایه ای قرار گرفته است. لایه ترکیب سرویس در معماری توسعه یافته ، شامل توابع و نقشهای لازم برای یکپارچه کردن چند سرویس بعنوان سرویس ترکیبی می باشد. سرویس ترکیبی بدست آمده ، توسط Service Aggregator بعنوان یک سرویس مقدماتی استفاده می گردد و یا توسط درخواست کنندگان سرویس بکارگرفته می شود.
Service Aggregator تهیه کننده سرویسی است که سرویسهای ارائه شده توسط سایر تهیه کنندگان را یکپارچه می نماید تا از آنها سرویسهای جدید بسازد، همچنین مشخصات و کدهایی را تهیه می کند تا در مورد سرویسهای ترکیبی عملیات زیر را انجام دهد:

متناسب کردن : کنترل اجرای سرویسهای ترکیب شده و مدیریت گردش داده ها در بین آنها و انتقال آن به خروجی.

کنترل کردن : مجوز دادن به رخدادها و اطلاعات تولید شده توسط سرویسهای ترکیبی جهت به اشتراک گذاشتن و منتشر کردن رخدادهای ترکیبی سطح بالاتر ( برای مثال از طریق فیلتر کردن و خلاصه سازی)

مطابقت دادن : حصول اطمینان از حفظ جامعیت سرویسهای ترکیبی از طريق تطبیق دادن محدودیتها و نوع پارامترهای سرویسهای بکار رفته.

ترکیب خواص سرویسها : بکارگیری ، مجتمع سازی و دسته بندی ویژگی هاي سرویسهای ترکیب شده جهت بدست آوردن خواص ترکیبی جدید که دربردارنده کارایی ، هزینه ، امنیت ، جامعیت ، قیاس پذیری ، در دسترس بودن و قابلیت اطمینان می باشد.

استانداردهای جدید ارائه شده با عنوان زبان اجرای پردازشهای حرفه برای سرویسهای وب ، تلاشی است که بر اساس XML ، تعریف سرویسهای وب جدید را که از ترکیب سرویسهای موجود بدست می آیند ، ارائه دهد.یک پردازش BPEL بصورت انتزاعي با ارجاع و اتصال به portTypeهای تعیین شده در WSDL اي ايجاد مي شود كه در سرویسهای وب موجود در یک پردازش ، تعريف شده است.
مدیریت نرم افزارهای کاربردی مهم و بحرانی تجارت الکترونیک ، مي بايست نظارت عمیق و جامعی در محیطهای توزیع شده داشته باشد. خارج از دسترس بودن یک عنصر کلیدی در سیستمهای توزیع شده، تاثیر منفی زیادی بر کل چرخه گذاشته و باعث بیرون رانده شدن ارائه کننده سرویس از بازار می شود.
برای رويارويي با چنین موقعیتهایی ، سازمانها نیاز به کنترل دائم سرویس و حصول اطمینان از سلامتی سیستم دارند. کارایی می بایست همیشه ، در هر شرایطی و با هر بار کاری ، در سطح قابل قبولی باشد.
برای مدیریت قسمتهای مهم و بحرانی و سرویسهای ویژه ، معماری توسعه یافته ، در لایه مدیریت سرویس بعنوان بالاترین سطح ، سرویسهای مدیریت شده را ارائه کرده است.
این لایه شامل دو قسمت مدیریت عملکرد و مدیریت بازار می باشد. کارکرد مدیریت عملکرد بدین صورت است که قسمتهای مهم سیستم را پشتیبانی می نماید. این لایه جزئیاتی از کارایی سیستم را جهت  ارزیابی آن ارائه میدهد و بدین صورت سازمان را قادر می سازد تا بر اساس وضعیت نرم افزار و تکمیل شدن تراکنشهای حرفه ، تصمیم گیری نماید. اپراتور سرویس ، مسئول انجام امور مربوط به این واحد است.
مدیریت عملکرد ، قابلیت بسیار مهم و کلیدی است که می تواند صحت و کارایی کلی سیستم را کنترل نماید و بدین ترتیب از بروز مشکلات شدید و خطا در سرویسها جلوگیری کند.
این خطاها ممکن است بر اثر اجتماع و هماهنگ سازی سرویسها و بخاطر عدم رعایت توافقهای در سطح سرویس (SLA) اتفاق بیافتد.
مدیریت و کنترلهای مناسب باعث کاهش احتمال بروز چنین خطاهایی می شود؛ بدین ترتیب که صحت ، پایداری و همچنين مناسب بودن ارتباط بین توابع بکار رفته در سرویسهای ورودی و خروجی را بررسی و کنترل می نماید.
قسمت دیگر در لایه مدیریت ، مدیریت بازار می باشد. مسئولیت این واحد ارائه پروتکلها و قوانین استاندارد در سطح حرفه می باشد تا از این طریق امکان استفاده از سرویسهای تعبیه شده در بازارهای مختلف بوجود آيد.
در ضمن برخی از تسهیلات و سرویسهای پایه برای امور مالی ، تضمین کیفیت و ... در این لایه قرار می گیرد تا از این طریق بازارهای مختلف بتوانند در کمترین زمان به سرویسها دسترسی یابند.
این قسمت از لایه مدیریت ، توسط سازندگان بازار که کنسرسیومی از شرکتهای فعال در این عرصه هستند ، کنترل و نگهداری می گردد.
درنهايت ، با توجه به نكات مذكور مي توان معماري سرويس گرا را روشي در جهت بهبود طراحي و استفاده از سيستمهاي نرم افزاري دانست ، اگرچه مشكلات و چالشهاي پيش روي آن همچنان نيازمند بررسي تجارب گذشته و نيز ارائه راه حل مناسب پيرامون مسائل مطرح در این معماري مي باشند.

منابع:

1- Channabasavaiah. Kishore, et al., Migrating to a service-oriented architecture, Part 1, IBM official web site, 16 December 2003.

2- Bieber .guy , Carpenter.Jeff , Introduction to Service-Oriented Programming , Motorola ISD , 2003

3- Zimmermann.Olaf, et al., Elements of Service Oriented Analysis and Design, IBM official web site, 2 June 2004.

4- Papazoglou Mike, Service-Oriented Computing :Concepts, Characteristics and Directions, Tilburg University ,  Proceeding of  the forth international conference on web information system engineering , IEEE , 2003

5- Hao Ding, Exploiting Extended Service-Oriented Architecture for Federated Digital Libraries, Information Management Group, Norwegian Univ. of  Sci.& Tech, 2004

6- Andrew Yang , Critical Infrastructure for Service-Oriented Architecture, Westbridge Technology ,2004

7- Mark Colan , Service-Oriented Architecture Expands the Vision of Web Services , Part 1 , IBM official web site , 21 April

+ نوشته شده در  جمعه هفدهم اسفند 1386ساعت 13:14  توسط یوسف عبدلیان باریکرسفی  | 

بانكهاي اطلاعاتي توزيع شده

 

بانكهاي اطلاعاتي توزيع شده

(گزارش شماره 3)

 

پدرام قدس نيا

اشكان بياتي

 

دانشکده مهندسی برق و کامپيوتر

دانشگاه تهران

 

 

فهرست مطالب

 

1.بررسي الگوريتمهاي انتخاب چندگانه در سيستم هاي همتا به همتا 1

2-1.مشكلات موجود در استفاده از بانكهاي اطلاعاتي توزيع شده مبتني بر P2P.. 2

2-2.الگوريتم توزيع شده انتخاب چندگانه. 3

2-3-مراحل الگوريتم.. 4

2-4.محاسبات پيچيدگي الگوريتم.. 8

2-5.آزمايشات تجربي.. 9

3.الگوريتم پوياي Replication براي Data Grid هاي چند لايه. 11

3-1.انواع الگوريتمهاي موجود. 11

3-2.معماري سيستم.. 12

3-3.پيشنهاد بهبود معماري.. 13

3-4.الگوريتمهاي replication‌ به صورت پويا 14

3-4-1.روش SBU... 14

3-4-2.روش ABU... 15

4.منابع. 15

 

 

 

 

1.بررسي الگوريتمهاي انتخاب چندگانه در سيستم هاي همتا به همتا

در بخش اول اين گزارش در مورد الگورتمهاي انتخاب چندگانه در سيستمهاي توزيع شده همتا به همتا صحبت خواهيم نمود. عمده مطالب اين بخش از مقاله [1] برگرفته شده است.

امروزه بحث محاسبات همتا به همتا (peer-to-peer) يكي از مباحث داغ در زمينه سيستم هاي توزيع شده به شمار مي‌رود. به كمك معماري هاي موجود در اين زمينه مي توان قدرت پردازش و همچنين اطلاعات موجود در تعداد زيادي كامپيوتر را كه در گستره جغرافيايي پهناوري وجود دارند و تنها از طريق شبكه و يا اينترنت به هم متصل هستند به اشتراك گذاشت و در نتيجه سيستم توزيع شده اي داشت كه به كمك آن بتوان به قدرت پردازشي بالايي دست يافت و يا به حجم عظيمي از اطلاعات توزيع شده در سيستم هاي مختلف دسترسي پيدا نمود. در سالهاي گذشته بيش از نيم بيليون دلار در شركتهايي كه در اين زمينه فعاليت مي كنند سرمايه گذاري شده است. شدت علاقه به اينگونه سيستمها از موفقيت چشمگير نرم افزارهاي شناخته شده و معروفي مثل Napster (نرم افزار به اشتراك گذاري فايل هاي موزيك) و يا پروژه ضد سرطان دانشگاه آكسفورد(به اشتراك گذاري قدرت پردازش براي شركت در محاسبات لازم براي تحقيقات بيولوژيك در زمينه سرطان) نشات مي گيرد. به دنبال محبوبيت اين نرم افزار ها تعدادي پروژه به اشتراك گذاري فايل و پردازش ديگر هم شكل گرفت كه از جمله آنها مي توان به نرم افزار هاي Kaza، Emull، Edonkey و ... براي به اشتراك گذاري فايل و پروژه شبيه سازي ژنتيكي گوگل براي استفاده از قدرت پردازش كامپيوتر هاي دنيا در انجام تحقيقات ژنتيكي نام برد.

از كاربردهاي ديگري كه مي توان براي اينگونه سيستم ها در نظر گرفت به اشتراك گذاشتن اطلاعات مفيد بين كمپاني هاي مختلف است. تعدادي كمپاني كه رقيب هم هستند براي به دست آوردن اطلاعات آماري كه منافع مشتركي را براي همه آنها در بر دارد مي توانند از سيستمهاي همتا به همتا مابين كامپيوتر هاي يكديگر استفاده كنند. تفاوت اين مورد را با موارد قبلي مي توان در موارد زير خلاصه كرد :

-         نياز به امنيت اطلاعات بيشتر براي جلوگيري از فاش شدن اطلاعات خصوصي كمپاني در هنگام به اشتراك گذاري فايلها و قدرت پردازش.

-         كمتر بودن تعداد كامپيوتر هاي شركت كننده در كل سيستم

-         پيچيده تر بودن دستورالعملهاي بانك اطلاعاتي و نياز به الگوريتمهاي توزيع شده بهينه

-         تعلق كامپيوتر هاي شركت كننده به كمپاني به جاي افراد حقيقي

اين تغييرات مواردي هستند كه مشكلات جديدي را مطرح مي كنند كه براي حل آنها پنجره جديدي از تحقيقات باز شده است.

2-1.مشكلات موجود در استفاده از بانكهاي اطلاعاتي توزيع شده مبتني بر P2P

اگر چه سيستم هاي P2P‌ موفقيت چشمگيري داشته اند ولي هنوز به كار بردن آنها در بعضي از كاربردها با مشكلاتي روبروست. يكي از جدي ترين اين مشكلات در حوزه عمليات بانك اطلاعاتي حاكم است. بسياري از دستورالعملهاي بانك اطلاعاتي در روي يك كامپيوتر در زمان كوتاهي قابل اجرا هستند ولي اجراي همين دستورالعملها در يك بانك اطلاعاتي توزيع شده ممكن است به رد و بدل شدن پيامهاي ارتباطي زيادي نياز داشته باشد و در نتيجه زمان بيشتري ببرد.

يكي از اين دستورالعملهاي زمانبر Selection است مثالي براي عمل Selection‌ در [1] آمده است.

يك راه حل براي اين مشكل اين است كه همه اطلاعات را روي يك كامپيوتر بياوريم و سپس عمل Select‌ را به شكل بهينه اي روي آن كامپيوتر اعمال كنيم. ولي اين راه حل مشكلات زير را دارد :

- امنيت : انتقال همه اطلاعات به يك كامپيوتر ممكن است مشكل امنيتي به دنبال داشته باشد. همانطور كه در مثال قبلي گفتيم ممكن است يك كمپاني علاقه اي به ارسال همه اطلاعات خود به كامپيوتر كمپاني رقيبش نداشته باشد ولي ارائه نتيجه يك جستجو يا select بدون دادن جزئياتي كه اين نتيجه را حاصل كرده به رقيب مشكلي برايش ايجاد نكند. مثلا شايد فيلدهاي خاصي از ركوردهاي مشتريانش داراي اهميت امنيتي باشند ولي ارائه ساير فيلدها مشكلي در بر نداشته باشد ويا ارائه برخي ركوردها به رقيب مشكل امنيتي داشته باشد و ارائه بقيه آنها مشكلي نداشته باشد.

-      ظرفيت ذخيره سازي كامپيوترها : ممكن است حجم اطلاعاتي كه عمل select‌ روي آنها انجام مي شود آنقدر زياد باشد كه امكان انتقال همه آنها به يك كامپيوتر وجود نداشته باشد.

-         پهناي باند مصرفي : انتقال حجم زيادي از اطلاعات در شبكه مي تواند بار زيادي را به شبكه تحميل كند و ترافيك شبكه را به شدت بالا ببرد.

 

با توجه به دلايلي كه گفته شد انتقال همه اطلاعات روي يك كامپيوتر و انجام عمل select‌ روي آن مقرون به صرفه نمي باشد. در اين مقاله الگوريتم بهتري ارائه شده است كه از اين روش و ساير روشهايي كه تا كنون ارائه شده اند بسيار بهينه تر عمل مي كند.

2-2.الگوريتم توزيع شده انتخاب چندگانه

الگوريتم توضيح داده شده در اين مقاله از الگوريتم انتخاب تكي اي گرفته شده است كه توسط نويسنده همين مقاله قبلا ارائه شده است. نكته حائز اهميت اين است كه اين الگوريتم از لحاظ پيچيدگي و بازدهي مقدار كمي با الگوريتم قبلي تفاوت دارد و از اين لحاظ بهبود قابل توجه اي صورت گرفته است.

از آنجايي كه قبل از شروع عمليات الگوي آماري توزيع كليدهاي مورد جستجو مشخص است لذا از دانش آماري موجود مي توان در جهت افزايش سرعت اين الگوريتم استفاده نمود. به عبارت ديگر مي توان با تغييرات مختصري در الگوريتم با توجه به چگونگي توزيع كليدها در سايت هاي مختلف به سرعت بالاتري دست يافت.

در الگوريتم انتخاب تكي، هدف پيدا كردن يك كليد در فايل بزرگي است كه در سايت هاي مختلف توزيع شده است. براي نمونه پيدا كردن 30 امين كوچكترين كليد. از آنجايي كه در كاربرد هاي واقعي اصولا نياز به پيدا كردن سلسله وار تعداد بيشتري كليد است، لذا وجود يك الگوريتم بهينه بسيار پرفايده مي باشد.

يك مورد خاص از پيدا كردن(انتخاب) كليدهاي چند گانه كه در اين مقاله مورد بحث قرار گرفته و مثالهاي ارائه شده از اين الگو پيروي مي كنند به اين صورت است كه هدف پيدا كردن p-1 كليد است (كليدهايي با مرتبه هاي n/p، 2n/p، ... و (p-1)n/p ) در سيستمي با n ركورد و p‌ كامپيوتر (سايت). براي مثال پيدا كردن 30 امين و 60 امين كليد در سيستمي با 90 ركورد و 3 كامپيوتر.

شرايط و فرضياتي كه در نظر گرفته شده است عبارتند از :

-         همه كامپيوتر ها با قابليت broadcast/multicast به يكديگر متصل شده اند.(مثلا در يك LAN)

-      يك فايل بزرگ به صورت فيزيكي مابين p كامپيوتر توزيع شده است و تعداد n ركورد به صورت تقريبا uniform بين اين n كامپيوتر تقسيم شده است(يعني n/p ركورد در هر كامپيوتر)

-      كليدهاي موجود در فايل به صورت X(i,k) نمايش داده مي شوند كه k عددي بين 1 و n/p‌ است و i شماره كامپيوتر را مشخص مي كند. كليدها در هر كامپيوتر مرتب شده اند و لذا داريم :

X(i,1) < X(i,2) < ...< X(i, k) < ... < X(i, n/p)

 

-         هيچ ترتيبي مابين كليدها در سايت هاي مختلف وجود ندارد. يعني مثلا دليلي ندارد كه كليد اول سايت اول از كليد اول سايت دوم كوچكتر باشد.

-         نحوه توزيع كليدها در كامپيوتر هاي مختلف مي تواند از هر توزيع آماري دلخواهي پيروي كند ولي در اين مقاله براي راحت تر شدن فهم مثالها از توزيع ساده uniform‌ استفاده شده است.

هدف اين الگوريتم پيدا كردن p-1 كليد هدف است. مرتبه كليدهاي مورد نظر در كل فايل jn/p است به طوري كه (1 . براي مثال پيد اكردن 30 امين و 60 امين كليد در سيستم 90 ركوردي با 3 كامپيوتر.

اين الگوريتم قابليت پيدا كردن تعداد بيشتري كليد را هم دارد ولي براي راحتي فهم مثالها و از آنجايي كه كاربرد واقعي‌اي براي اين مورد وجود داشته است از اين تعداد خاص استفاده شده است.

2-3-مراحل الگوريتم

فاز اول :

مرحله اول : يك كامپيوتر به عنوان coordinator انتخاب مي شود. هر كامپيوتري بزرگترين و كوچكترين كليد خود را به coordinator‌ اعلام مي كند. coordinator از روي مقادير دريافت شده MAX (بزرگترين كليد كل فايل) و MIN (كوچكترين كليد كل فايل) را پيدا مي كند و از روي آنها با استفاده از فرمول زير مقادير آغازين جدا كننده ها را پيدا مي كند:

DELIMITERj = MIN + (MAX-MIN)j / p (1 <= j <= p-1)

 

مرحله دوم :

coordinator‌ مقادير p-1‌ جداكننده را به همه كامپيوتر ها ارسال مي كند.

مرحله سوم :

هر كامپيوتر p-1‌ محور (pivot) انتخاب مي كند. Pivot i,j بزرگترين مقدار در كامپيوتر iام است كه از DELIMITERj كوچكتر است(يا با آن برابر است).

مراحل اول و دوم در صورتي كه MIN‌ و MAX‌ از قبل براي همه كامپيوتر ها مشخص باشد اختياري است و لذا ارسال پيامهاي مربوط به اين دو مرحله قابل كاهش است. در شكل زير مراحل 1 و 2 را مشاهده مي كنيد.

 

فاز دوم :

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

محاسبه رتبه :

r[i,j] را به صورت تعداد كليدهاي كوچكتر از محور i,j‌ در كامپيوتر i‌ تعريف مي كنيم. هر كامپيوتر p-1‌ محور از ساير كامپيوتر ها به صورت broadcast دريافت مي كند. و كامپيوتر ها مقادير كليدهاي محلي خود را با اين كليدها مقايسه مي كنند و به ترتيب و پشت سرهم كامپيوتر ها رتبه خود را نسبت به اين محور هاي اعلام شده به همه منتشر مي‌كنند.

محاسبه محور:

همانطور كه مشخص است هر كامپيوتر (p-1)2 رتبه از ساير كامپيوتر ها دريافت مي كند. بعد از دريافت اين رتبه ها با استفاده از رابطه زير رتبه خود را در فايل سراسري محاسبه مي كند. در اين رابطه رتبه همه كامپيوتر ها با هم جمع مي‌شود و به راحتي رتبه سرتاسري به دست مي آيد. چنانچه رتبه به دست آمده همان رتبه مورد نظر بود كه كليد پيدا شده و كار تمام است. در اين شرايط با پيغام خاصي پيدا شدن كليد به اطلاع همه خواهد رسيد و از اين پس كسي به دنبال آن كليد خاص نخواهد گشت.

در صورتي كه كليد پيدا نشده باشد هر كامپيوتر محور جديدي با استفاده از متدي كه در زير معرفي شده است محاسبه مي كند.

محاسبه محور جديد :

در واقع بعد از هر مرحله هر فايل محلي به دو زير فايل تقسيم مي شود. همه كليدهاي موجود در زير فايل اول كوچكتر يا مساوي با محور i,j‌ هستند در حالي كه همه كليدهاي موجود در زير فايل دوم از اين مقدار بزرگتر هستند.

اگر رنگ سرتاسري محاسبه شده از محور كوچكتر باشد فايل اول مورد استفاده قرار مي گيرد و در غير اين صورت فايل دوم مورد استفاده قرار مي گيرد. محور جديد به طريق زير محاسبه مي شود :

كه Offsetj به صورت زير محاسبه مي شود.

كوچكترين كليد در زير فايل دوم كه بزرگتر يا مساوي با NP‌ باشد به عنوان محور جديد در نظر گرفته مي شود. در صورتي كه به سراغ فايل اول رفته باشيم بزرگترين كليد در فايل اول كه كوچكتر يا مساوي با NP باشد به عنوان محور جديد در نظر گرفته مي شود.

در واقع الگويتم به صورت لگاريتمي عمل مي كند و هر دفعه فايل هاي محلي كامپيوتر ها را به دو قسمت تقسيم مي‌كند و در واقع مجازا در كل فايل چنين عملي در حال انجام است.

براي روشن تر شدن موضوع به مثال زير توجه كنيد :

مثال :

در شكل زير سه جدول Table1، Table2و Table3 كه در كامپيوتر هاي 1 و 2 و3 قرار دارند به همراه كليدهاي موجود در هر كدام مشاهده مي كنيد.

 

پيغام هاي رد و بدل شده بين كامپيوتر هاي مختلف در مراحل اجراي الگوريتم را در جدول زير مشاهده مي نماييد.

 

 

همانگونه كه مشاهده مي كنيد 30 امين كليد بعد از سه مرحله پيدا شد و از آنجا به بعد با ارسال حرف E‌ به ديگران گفته مي شود كه عمليات پيدا كردن اين كليد به پايان رسيده و نيازي به ادامه محاسبات روي اين كليد نيست. ولي همانگونه كه مشاهده مي كنيد كليد 60 ام هنوز پيدا نشده است، لذا عمليات براي پيدا كردن آن همچنان ادامه مي يابد تا اينكه در 5 مرحله اين كليد هم پيدا ميشود و عمليات كلا به پايان مي رسد.

در شكل زير نحوه انتقال پيغام ها بين كامپيوتر ها را در اولين مرحله‌ مشاهده مي كنيد.

 

2-4.محاسبات پيچيدگي الگوريتم

در ادامه مقاله به بررسي پيچيدگي زماني اين الگوريتم و همچنين تعداد پيامهاي رد و بدل شده لازم بين كامپيوتر ها پرداخته شده است. در قسمت سلسله اي از ادعا ها به همراه اثبات آنها آورده شده است. براي نمونه ثابت شده است كه حد بالاي همه پيامهاي ارسالي عبارت است از :

 

حد بالاي تعداد كل مراحل عبارت است از :

حد بالاي مجموع كليدهايي كه هر كامپيوتر نياز دارد تا براي ساير كامپيوتر ها در حين پروسه الگوريتم اعلام كند عبارت است از :

همچنين در مورد سيستمي كه قابليت Broadcast‌ ندارد نيز محاسبات پيچيدگي زماني و تعداد پيامها صورت گرفته است.

براي مثال حد بالاي تعداد پيغامهاي لازم براي پيدا كردن كليدي با رتبه J‌ در سيستمي بدون قابليت Broadcasting به صورت زير است :

 

2-5.آزمايشات تجربي

در بخش بعدي مقاله در ابتدا كارهاي مشابه انجام شده به صورت مختصر معرفي شده اند و سپس نتايج تجربي اين الگوريتم به صورت تعدادي نمودار بيان شده است. در اين نمودارها نشان داده شده است كه در تجربه نتيجه بهتري از محاسبات تئوري انجام شده در مورد پيچيدگي به دست آمده است. البته اين بدان دليل است كه در محاسبات تئوري حد بالا براي پيچيدگي ها محاسبه شده بود. در زير نمودارهاي مربوطه حاصل از نتايج تجربي را مشاهده مي نماييد :

 

 

نمودار تعداد مراحل بر حسب تعداد كامپيوتر ها

 

همانطور كه مشاهده مي كنيد بالا رفتن تعداد كامپيوتر ها تاثيري بر تعداد مراحل ندارد.

 

 

نمودار تعداد پيغامها بر حسب تعداد كامپيوتر ها

 

همانگونه كه مشاهده مي كنيد با بالا رفتن تعداد كامپيوترها تعداد پيغامها به صورت خطي بالا مي رود.

 

نمودار تعداد مراحل بر اساس حجم فايل (تعداد ركوردها) در تعداد كامپيوتر هاي مختلف

 

نمودار تعداد پيامها بر حسب حجم فايل (تعداد ركوردها) در تعداد كامپوتر هاي مختلف

 

نمودار زمان بر حسب تعداد ركوردها در تعداد كامپيوتر هاي مختلف

 

در ادامه مقايسه اي صورت گرفته است مابين روشهاي قبلي و اين روش آماري ارائه شده.

 

 

همانگونه كه در اين نمودار مشاهده مي كنيد از لحاظ تعداد مراحل، پيشرفت قابل توجهي در اين الگوريتم نسبت به روشهاي قبلي حاصل شده است. نكته ديگري كه وجود دارد اين است كه برعكس الگوريتمهاي قبلي تعداد كامپيوتر ها در اين الگوريتم تاثيري در تعداد مراحل ايجاد نمي كند.

 

 

3.الگوريتم پوياي Replication براي Data Grid هاي چند لايه

 

الگوريتم Dynamic Replication اي كه در اين قسمت معرفي مي شود برگرفته از [2] است. با اين حال براي بهبود كارايي الگوريتم پيشنهادهايي ارائه شده است كه در ادامه ذكر خواهيم نمود. data grid‌ ساختاري براي نگهداري فايلهاي اطلاعاتي با ابعاد بزرگ است و قابليت محاسباتي قدرتمندي براي سازمانهاي بزرگ و يا سيستمهاي اطلاعاتي مبتني بر community بزرگ فراهم مي كند. در data grid‌ اصولا كپي هاي متعددي از هر داده نگهداري مي شود و كاربران براي دسترسي به اطلاعات به در دسترس ترين و نزديك ترين و سريعترين كپي هدايت مي شوند. براي مديريت data grid ها مكانيزمهاي مختلفي تا كنون پيشنهاد شده است. يكي از مهمترين مسائلي كه در مديريت data grid‌ ها مطرح است ، چگونگي سيستم برخورد با replicate ها است. اينكه از كدام فايلها replicate ‌ بسازيم، چه موقع از داده ها replicate‌ ايجاد كنيم و اين replicate را در كجاي سيستم قرار دهيم تا بازدهي كلي data grid بالا برود از جمله مسائلي است كه پيرامون آنها بحث و تبادل نظر و تحقيقات وسيعي در جريان است. همچنين رعايت سازگاري ميان كپي هاي مختلف داده ها در سيستم هاي مبتني بر replication ازجمله مسائلي است كه تحقيقاتي براي حل مشكلات مربوط به آن صورت گرفته است [3].

3-1.انواع الگوريتمهاي موجود

با نگاهي به سوابق تحقيقاتي در اين زمينه روشهاي replication‌ را به دو دسته كلي تقسيم كرده اند.

دسته اول Static Replication است كه در آن سياست Replication از ابتدا به صورت ثابت و ايستا مشخص مي گردد و در واقع جزئي از پيكربندي سيستم محسوب مي شود. مسلما با تغيير توپولوژي شبكه data grid و يا تغيير الگوي درخواستها تغييري در اين سياست داده نخواهد شد. لذا بازدهي سيستم به شدت پايين مي آيد و ممكن است از منابع به شكل مناسب و مطلوب استفاده نشود. به عنوان مثال ممكن است تعداد استفاده كنندگان از سيستم در زمان تعيين سياست ها به صورت ايستا 50 عدد در نظر گرفته شده باشد، در حالي كه پس از گذشت مدتي تعداد كاربران به 500 عدد برسد و يا تعداد كاربران متصل به يك نود خاص بيشتر از بقيه بوده باشد و بعد از گذشت مدتي اين الگو تغيير كند و ترافيك نود ديگري بالا برود.

در مقابل اين روش، روش دايناميك وجود دارد كه در آن data grid‌ با توجه به تغيير الگوهاي دسترسي و موارد متغير ديگر به صورت اتوماتيك در زمان نياز به ساخت replicate‌ مي پردازد و آن را در جاي مناسب قرار مي دهد تا فركانس دسترسي به آن بهينه باشد و باعث بالا رفتن هزينه نگردد.

3-2.معماري سيستم

معماري سيستمي را كه از replication به صورت پويا استفاده مي كند در شكل زير مشاهده مي كنيد.

 

همانطور كه در شكل مشاهده مي كنيد، وقتي يك كاربر مي خواهد به يك فايل داده اي دسترسي داشته باشد، براي دسترسي به آن فايل نام آن را به RS(Replica Selector) ارسال مي دارد. وظيفه RS‌ انتخاب يك replica‌ مناسب براي سرويس دهي با درخواست اين كاربر است. معيارهايي كه براي انتخاب replica مناسب در نظر گرفته مي شود عموما نزديكي replica‌ به كاربري كه درخواست داده است و همچنين ميزان ترافيك فعلي replica‌ ها براي دسترسي است. يعني بايد replica‌ اي كه نزديكتر است و سرش خلوت تر است انتخاب شود. به اين ترتيب پهناي باند شبكه كمتر مصرف خواهد شد و زمان پاسخگويي به درخواست هم بالا خواهد رفت.

وقتي كه RS‌ مكان درست فايل داده اي را به درخواست كننده اعلام كرد، درخواست كننده با LRM(Local Replica Manager) مربوط به آن نود ارتباط برقرار مي كند. وظيفه LRM مديريت replica هاي موجود در يك سايت است.

براي هر انتقال فايل موفقيت آميزي كه صورت مي گيرد، LRM ، DRS(Dynamic Replica Scheduler) را صدا ميزند و اين انتقال موفق را به او خبر مي دهد.

DRS مسوول زمانبندي Replication‌ است. يعني تعيين مي كند كه چه زماني نياز است يك replication‌ جديد از فايل داده اي خاصي ايجاد شود. هرگاه كه خبر انتقال موفقيت آميزي به DRS‌ داده مي شود، اين خبر را log‌ مي كند. درواقع شمارنده تعداد دسترسي هاي انجام شده به آن فايل داده اي را يكي افزايش مي دهد.

در واقع DRS‌ وظيفه دارد كه اين log‌ ها را نگهداري كند و در بازه هاي زماني خاصي فايلهاي داده اي با محبوبيت بيشتر را شناسايي كند و براي آنها يك مكان كناسب در نظر بگيرد و دستور ساخت replica از آنها را صادر نمايد و سپس تعداد دسترسي هاي انجام شده را صفر كند و اين كار را دوباره ادامه بدهد. هر گاه DRS تشخيص بدهد كه بايد جابجايي صورت بگيرد دستور لازم را به LRM‌ سايت مربوطه ارسال مي كند و LRM خودش ساخت Replica‌ جديد را انجام مي دهد و نتيجه را به DRS‌ خبر مي دهد. DRS‌ با شنيدن خبر ساخت موفقيت آميز يك replica‌ جديد موضوع را به RC (Replica Catalogue)‌ خبر مي دهد تا خود را بروزرساني كند و ظهور replica‌ جديد را در سيستم در نظر بگيرد. RC‌ همانند يك name server‌ عمل مي كند و نگاشتي مابين فايلهاي منطقي و مكان فيزيكي آنها اعمال مي كند. براي اطمينان از سازگاري سيستم، خبر ساخت و يا حذف replica‌ ها بايد به RC‌ اعلام شود. توجه داشته باشد كه lock‌ ها هم در RC نگهداري مي شود ولي توسط DRS‌ مديريت مي شوند. هنگامي كه عمل نوشتن در يكي از replica‌ ها مي خواهد صورت بگيرد، DRS روي داده Lock مي گذارد و بعد از اينكه نوشتن به پايان رسيد DRS‌ همه replica‌ هاي متناظر را با تغيير داده شده هماهنگ مي كند و پس از اطمينان از اينكه كپي هاي مختلف نگهداري شده در سيستم با هم سازگار شدند، Lock‌ را از روي داده بر مي دارد.

3-3.پيشنهاد بهبود معماري

از آنچه كه تا كنون گفتيم اينگونه مي توان نتيجه گرفت كه وظايف DRS، RS و RC روي يك نود قرار گرفته است و همانطور كه مشخص است، سيستم وابستگي زيادي به اين اجزا دارد. لذا از بين رفتن يا خراب شدن هر كدام از اين اجزا مي تواند كل سيستم را از كار بيندازد. براي رفع اين مشكل پيشنهاد مي كنيم معماري ارائه شده در اين مقاله به صورت زير تغيير كند.

همانطور كه مشاهده مي كنيد در اين معماري بهبود يافته براي اين اجزاي حساس، كپي هاي متعددي در نظر گرفته شده و به كمك اين كي ها سيستم توزيع شده تر مي گردد. اين كپي ها در بازه هاي زماني خاصي نسخه فعلي را بررسي مي كنند و چنانچه متوجه شوند كه از كار افتاده است با استفاده از الگوريتم توزيع شده bully [4] از بين خود يكي را انتخاب مي كنند و از اين پس وظيفه بر عهده كپي منتخب خواهد بود. به اين ترتيب تحمل سيستم در برابر خرابي بالا خواهد رفت سيستم توزيع شده تر عمل خواهد نمود.

حال كه با معماري سيستم آشنا شديم به بررسي الگوريتم هاي ارائه شده براي زمانبندي replication‌ خواهيم پرداخت.

3-4.الگوريتمهاي replication‌ به صورت پويا

3-4-1.روش SBU

اولين روشSBU يا Single Bottom Up‌ نام دارد. ايده اصلي نهفته در اين الگوريتم قرار دادن replica‌ ها تا جايي كه ممكن است، نزديك نودهايي است كه استفاده بيشتري از اين replica دارند.

وقتي كه تعداد درخواستهاي كاربران از حد آستانه مشخصي مي گذرد، عمل replication‌ صورت مي گيرد. در واقع الگوريتم در DRS انجام مي شود و در دوره هاي زماني خاصي log‌ هاي گرفته شده جستجو مي شوند و دسترسي هايي كه از حد آستانه خود گذشته اند براي انتقال replica‌ به سمت آنها در نظر گرفته مس شوند. در اين الگوريتم ساده در ساختار درختي data grid سعي بر اين است كه replica‌ دقيقا در والد نودي كه درخواست كننده بيش از حد آستاده داشته قرار داده شود. ولي چنانچه اين نود پر بود و جا نداشت به سراغ والد آن مي رويم و اين كار را تا ريشه درخت ادامه مي دهيم. چنانچه در حال حاضر replica‌ در والد نود مورد نظر قرار داشت از انجام عمليات replication خودداري مي كنيم و به صفر كردن تعداد دسترسي ها در فايل log‌ مبادرت مي ورزيم.

3-4-2.روش ABU

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

شكل زير را در نظر بگيريد :

 

همانگونه كه در اين شكل مشاهده مي كنيد نود C1 به فايل داده اي x‌ تعداد 10 بار دستيابي كرده است و نود c2‌ به فايل داده اي Y تعداد 9 بار دستيابي كرده و فايل داده اي y توسط C3 تعداد 8 بار مورد دستيابي قرار گرفته است. همانگونه كه مي بينيد فايل داده اي y‌ مجموعا توسط نودهايي كه به والد S1 متصل هستند 17 بار مورد دستيابي قرار گرفته شده است. پس انتقال Y‌ به S1‌ ضروري به نظر مي رسد. چنانچه از روش SBU با حد آستانه 10 استفاده كنيم، فايل X‌ به S1‌ منتقل مي شود در حالي كه نود Y كه انتقال آن ضروري تر به نظر مي رسد منتقل نخواهد شد. به همين منظور از روش ABU به عنوان روش بهبود يافته SBU استفاده مي شود. در اين روش دسترسي هايي كه به فايل داده‌اي يكساني انجام شده است با هم جمع مي شوند حد آستانه براي مجموع در نظر گرفته مي شود. به اين ترتيب معيار بهتري براي تشخيص زمان و مكان replication به دست مي آيد كه كارايي سيستم را بالاتر خواهد برد.

 

4.منابع

 

  1. A. Loo, “Distributed multiple selection algorithm for peer-to-peer systems” Elsevier, 25 Agust 2004
  2. M. Tang, B. Lee, C. Yeo, X. Tang, “Dynamic Replication Algorithms For The Multitier Data Grid” Elsevier, October 2004.
  3. A. Domenici, F. Donnob,G. Pucciani, H. Stockingerc,K. Stockinger, Replica consistency in a Data Grid” Elsevier, July 2004
  4. Ramkrishnan, Gehrke, “Database Management Systems Third Edition”

 

 

منبع گرفته شده :

http://ece.ut.ac.ir/DBRG/seminars/BaiatiAshkan-GhodsniaPedram/CD1/report3/report3.htm#_Toc129246782

+ نوشته شده در  یکشنبه پنجم اسفند 1386ساعت 16:57  توسط یوسف عبدلیان باریکرسفی  | 

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

مولف و مترجم : مهندس سعید صادقی
شرکت صفا رایانه
 
 


 
تعریف سیستم توزیع شده:
هر سیستمی که بر روی مجموعه ای از ماشین ها که دارای حافظه اشتراکی نیستند، اجرا شده و برای کاربران به گونه ای اجرا شود که گویا بر روی یک کامپیوتر می باشند ، يک سيستم توزيع شده است.
در يک سيستم توزيع شده :
  • يک نرم افزار يا مجموعه نرم افزاری واحد و متحد الشکل بر روی هر گره اجرا می شود.
  • همه ماشینها یک کرنل مشابه را اجرا می کند.
  • هر کرنل منابع خود را کنترل می کند
 
مواردی که در طراحی سیستم توزیع شده باید در نظر گرفت:
  • شفافیت
  • انعطاف پذیری
  • قابلیت اطمینان
  • کارایی خوب
  • قابليت گسترش
 
قابلیت اطمینان:
  • در دسترس بودن یک فاکتور مهم مرتبط با اين سيستم ها است.
  • طراحی نباید به گونه ای باشد که نیاز به اجرای همزمان کامپوننت های اساسی باشد.
  • افزونگی بیشتر داده هاه باعث افزایش در دسترس بودن شده اما ناسازگاری را بیشتر میکند.
  • قدرت تحمل نقص(Fault tolerance) باعث پوشاندن خطاهای ایجاد شده توسط کاربر می شود.
 
کارآیی:
  • بدون کارآیی مناسب کلیه موارد استفاده نرم افزار بی فایده می باشد.
  • اندازه گیری کارايی در سيستم های توزيع شده کار آسانی نيست.
  • برای رسيدن به کارايی بايد توازنی خاص در تعداد پیغامها و اندازه کامپوننهای توزیع شده بر قرار باشد.
 
قابليت گسترش:
  • قابليت گسترش یک اصل کلی برای توسعه سیستمهای توزیع شده می باشد.
  • برای رسيدن به اين قابليت بايد از کامپوننتها، جداول و الگوریتمهای متمرکز دوری کرد.
  • فقط باید از الگوریتمهای غیر متمرکز استفاده شود.
 
 خصوصیات الگوریتمهای غیرمتمرکز:
  • هیچ ماشینی نباید اطلاعات کاملی در مورد وضعیت سیستم داشته باشد.
  • ماشینها باید بر مبنای اطلاعات محلی خود تصمیم بگیرند.
  • خرابی یک ماشین نباید تاثیری در اجرای الگوریتم داشته باشد.
  • نباید تصوری ضمنی از وجود ساعتی عمومی وجود داشته باشد.
 
 
گونه های مختلف سیستمهای توزیع شده:
  • سرور- ایستگاه کاری
  • Processor pool
  • هیبرید
  • یکپارچه
 
مدل سرور -  ایستگاه کاری
 
مدل Processor Pool
 
 
 
مدل هیبرید
 
مدل یکپارچه
 


سیستمهای توزیع شده متکی بر ارتباطات هستند و به طور کلی از دو سرويس زیر استفاده می کنند:
  • انتقال پيام Message Passing
  • فراخوانی از راه دور رویه ها Remote Procedure Call
 
سیستم توزیع شده از ديد لايه بندی ها
 
برنامه های کاربردی
DBMS,TPS, …
سیستم عامل توزیع شده
سخت افزار
 
بخشهای اصلی سیستم عامل توزیع شده
·        مدیریت فایل
·        مدیریت منابع
·        مدیریت حافظه
·        مدیریت فرآیندها
·        Kernel
 
سیستم عامل توزیع شده باید امکانات Encapsulating منابع را مهیا سازد. کرنل و سرورها هر دو وظیفه مدیریت منابع را بر عهده دارند و چون شامل منابع نیز می باشند، باید موارد زیر را مهیا سازند:
  • مجتمع سازی داده ها و سرويس ها Encapsulating
  • پردازش همزمان
  • محافظت داده ها
 
نحوه دسترسی به منابع
کلاینتها با مشخص سازی منابع در آرگومان عملیات (فراخوانی از راه دور رویه ها در سرور یا فراخوانی سیستم در کرنل)به آنها دسترسی پیدا می کنند.
 


ارتباط بین قسمتهای مختلف DBMS
 
 
قسمتهای اضافه DDBMS
 
 


معماری سیستمهای توزیع شده
 
 
بر اساس استاندارد ISO در مدل معماری Open Distributed Computing موارد ذيل بايد transparent (شفاف) باشند :
  • دسترسی(Access)
  • موقعیت (Location)
  • همزمانی(Concurrency)
  • کپی برداری داده ها (Replication)
  • اشکالات (Failure)
  • تبديل پلتفرم (Migration)
  • کارآیی (Performance)
  • توسعه پذيری (Scaling)
 


مدلهايی برای تعامل فرآیندها
  • مدل خادم / مخدوم (Client/Server)
  • مدل یکپارچه
  • مدل پایپ
  • فراخوانی رویه از راه دور(RPC)
 
مدل کلاینت سرور
در اين حالت نرم افزار خاص کلاينت روی هر ماشين اجرا می شود و کلاينت با واسطه سرور به منابع دسترسی پيدا می کند. سه مشکل عمده مدل کلاینت سرور عبارت است از:
  • کنترل منابع اختصاصی بر روی یک سرور متمرکز می شود.
  • هر سرور به طور بالقوه یک گلوگاه (Bottleneck) است.
  • برای بهبود کارآیی، پیاده سازی چندگانه برای توابع مشابه باید انجام شود.
 

 


مدل کلاینت سرور در سیستم توزیع شده
 
 
مدل یکپارچه
در این مدل هر نرم افزار کامپیوتر بعنوان ابزاری کامل طراحی شده که دارای فایل سیستمی عمومی و مکانیسمی جهت تفسیر اسامی می باشد. این بدین معناست که هر کامپیوتر در سیستم توزیع شده از یک نرم افزار استفاده می‌کند.
توجه داشته باشید که اگر سیستمی بر پایه مدل یکپارچه توسعه یافته باشد، اگر به صورت مناسبی پیکره بندی شده باشد، می تواند به راحتی به شکل سیستمی مبتنی بر مدل Client/Server ديده شود.
 
مدل Pipe
مدل پایپ بر اساس مفهوم فرآیند پایه ریزی شده است که در این مدل داده از طریق استراتژی FIFO می توانند بین فرآیندها منتقل شوند. همچنین این مدل اجازه همگام بودن اجرای فرآیندها را می دهد. در این مدل به طور سنتی از فایل سیستم برای ذخیره داده ها استفاده شده و از قابلیتهای منحصر بفرد آن امکان ارسال کلی داده توسط فرآیند به یک گره می باشد.


مدل RPC
در سیستمهای مبتنی بر RPC، یک فرآیند می تواند یک رویه را در یک کامپیوتر راه دور فراخوانی کند. هنگامی که عمل فراخوانی انجام می شود، پیغام درخواستی برای کامپیوتر راه دوری که رویه در آن قرار دارد فرستاده می‌شود، سپس فرآیندی ایجاد می شود تا رویه اجرا شود، بعد از کامل شدن این فرآیند، پیغام پاسخ به فرآیند صد‌ازننده فرستاده می شود.
 
دلایل توزیع داده
·         DBMS متمرکز در مقابل سیستم پایگاه داده توزیع شده
·     سیستم پایگاه داده توزیع شده مجموعه ای از داده ها است که از لحاظ منطقی به یک سیستم تعلق دارند ولی از لحاظ فیزیکی در سایتهای مختلف یک شبکه کامپیوتری قرار دارند.
 
فاکتورهای مختلفی که باعث توسعه سیستم پایگاه داده توزیع شده شده اند عبارت است از:
  • طبیعت توزیع شدگی برخی از برنامه های دیتا بیس
  • افزایش قابلیت اطمینان و در دسترس بودن
  • امکان به اشتراک گذاشتن داده ها
  • افزایش کارآیی
 
طراحی و پیاده سازی سیستم پایگاه داده توزیع شده از پیچیدگیهای بیشتری برخوردار است و نسبت به DBMS‌های متمرکز توابع بیشتری را باید پیاده سازی کرد از جمله:
  • دسترسی به سایتها و انتقال جستجو ها و داده ها
  • اطلاع از توزیع داده ها و Replication در کاتالوگ DDBMS
  • بکارگیری استراتژیهای مناسب برای اجرای پرس و جو ها و ... که دادهایشان در چندين سایت مختلف قرار دارد.
  • تصمیم گیری در مورد استفاده از کدامین داده Replicate شده
  • سازگار نگه داشتن کپی های داده های Replicate شده
  • قابلیت بازیابی داده ها از سایتهایی که دارای مشکل شده اند.
  • و ...
 


 
معماری فیزیکی DDBS
 
 
 
 
 


 
قانونهایی برای سیستمهای توزیع شده
 
قانون صفر: سیستمهای توزیع شده باید برای کاربر نهایی دقیقا به صورت سیستمهای متمرکز باشند.
 
  1. استقلال محلی
  2. عدم وابسته بودن به سایت مرکزی
  3. عملیات پیوسته
  4. استقلال Location
  5. استقلال قطعات(Fragmentation)
  6. استقلال Replication
  7. پردازش توزیع شده جستجوها
  8. مدیریت توزیع شده Transaction
  9. استقلال سخت افزاری
  10. استقلال سیستم عامل
  11. استقلال شبکه
  12. استقلال DBMS
 


قانون 1: استقلال محلی
  • سایتها باید تا حد امکان(بیشترین حد ممکن) مستقل باشند.
  • داده های محلی باید در محل ذخیره و مدیریت شوند(با توجه به در نظر گرفتن یکپارچگی و امنیت)
  • عملیات محلی باید حتما در خود محل اجرا شوند.
  • تمام عملیات در یک سایت باید توسط همان سایت کنترل شود. این بدین معناست که سایت X نباید برای انجام موفقیت آمیز عملیات خود وابسته به سایت Y باشد.
  • در برخی موارد، از دست دادن مقدار کمی از استقلال، اجتناب ناپذیر است:
§         مشکل قطعه قطعه شدن(قانون 5)
§         مشکل Replication(قانون 6)
§         به روز رسانی رابطه Replicate شده(قانون 6)
§         مشکل محدودیت یکپارچگی بین چند سایت(قانون 7)
§         A problem in participation in a 2 phase commit process(قانون 8)
 
قانون 2: عدم وابسته بودن به سایت مرکزی
  • به هیچ عنوان نباید برای یک سرویس مرکزی به یک سایت وابسته بود. بعنوان مثال نباید دارای یک پردازشگر مرکزی(متمرکز) جستجوها یا مدیریت مرکزی(متمرکز) Transaction بود، چرا که کل سیستم به یک سایت خاصی وابسته می شوند.
  • وابسته بودن به یک سایت خاص، حداقل به دو دلیل زیر غیر مطلوب می باشد:
§         سایت مرکزی ممکن است یک گلوگاه(Bottleneck) باشد.
§         سیستم ممکن است آسیب پذیر باشد.
  • در یک سیستم توزیع شده، عملیات زیر (در میان سایر عملیات) حتما باید توزیع شده باشند:
§         مدیریت دیکشنری
§         پردازش جستجو
§         کنترل همزمان
§         کنترل بازیابی
 
قانون 3: عملیات پیوسته
هیچگاه نباید نیاز به خاموش کردن (از قبل پیش بینی شد)ه کل سیستم برای اعمال تغییرات داشته باشیم.
اضافه کردن سایت جدید X به سیستم توزیع شده D، نباید باعث توقف کل سیستم شود.
اضافه کردن سایت جدید X به سیستم توزیع شده D، نباید نیازمند تغییری در برنامه های کاربر یا فعالیتهای ترمینال باشد.
حذف سایت X از سیستم توزیع شده، نباید ئقفه های غیر ضروری در سرویس ایجاد کند.
ایجاد و حذف و تکثیر قطعات به صورت پویا باید در یک سیستم توزیع شده امکان پذیر باشد.
باید بتوان بدون نیاز به خاموش کردن کل سیستم، DBMS یک سایت را به روز کرد.
 
قانون 4: استقلال Location
  • نه تنها کاربران نباید از محلی فیزیکی ذخیره داده ها مطلع باشند، بلکه از لحاظ منطقی باید به تصور کنند که داده ها در سایتهای محلی خودشان قرار دارد.
  • ساده کردن برنامه های کاربر و فعالیتهای ترمینال
  • اجازه تغییر سکو
  • فراهم کردن استقلال Location برای عملیات ساده بازیابی ساده تر از عملیات به روز رسانی می باشد.
  • داشتن طرحی برای نام گذاری داده توزیع شده(Distributed Data Naming Scheme) و ایجاد پشتیبانی مناسب از طریق زیر سیستم دیکشنری
  • مواردی که باید در مورد کاربران پیاده سازی شود:
§         کاربر U باید شناسه معتبری برای ورود در سایتهای مختلف داشته باشد.
§         پروفایل هر کاربر برای هر شناسه مجاز باید در دیکشنری باشد.
  • دسترسی های هر کاربر در هر سایت به وی اختصاص داده شود.
 
قانون 5: استقلال قطعات(Fragmentation)
  • سیستمهای توزیع شده از قطعه قطعه شدن داده ها پشتیبانی می کنند، منوط به اینکه یک رابطه خاص قابلیت تقسیم به قسمتهای مختلف برای ذخیره در محلهای فیزیکی گوناگون را داشته باشد. سیستمی که این قابلیت را داشته باشد، از استقلال قطعات نیز پشتیبانی می کند.
  • کاربران باید از لحاظ منطقی به گونه ای تصور کنند که گویا اصلا داده ها در قسمتهای مختلف ذخیره نشده اند.
  • از دلایل قطعه قطعه شدن داده ها، می توان به افزایش کارآیی اشاره کرد.
  • قطعه قطعه شدن افقی(Select)
  • قطعه قطعه شدن عمودی(Project)
  • قطعه قطعه شدن باید در متن یک پایگاه داده توزیع شده تعریف شود.
  • استقلال قطعات همانند استقلال Location باعث ساده تر شدن برنامه های کاربر و فعالیتهای ترمینال می شود.
  • داده هایی که به کاربران نمایش داده می شود، از ترکیب منطقی قطعات مختلف (به واسطه الحاقها(Joins) و اجتماعات(Unions) مناسب)به دست می آید.


مثالی از قطعه قطعه شدن:
داده ها از دید کاربران:
شماره کارمندی
دپارتمان
حقوق
E1
DX
450.000
E2
DY
400.000
E3
DZ
500.000
E4
DY
630.000
E5
DZ
400.000
 
قطعه مشهد                                                     قطعه تهران
 
 
 
 
شماره کارمندی
دپارتمان
حقوق
 
شماره کارمندی
دپارتمان
حقوق
E2
DY
400.000
 
E1
DX
450.000
E4
DY
630.000
 
E3
DZ
500.000
 
 
 
 
E5
DZ
400.000
 
 
محل فیزیکی ذخیره داده ها(مشهد)                 محل فیزیکی ذخیره داده ها(تهران)
 
قانون 6: استقلال Replication
  • کاربران باید از لحاظ منطقی به گونه ای تصور کنند که گویا اصلا داده ها تکرار(replicated) نشده اند.
  • سیستم توزیع شده از کپی برداری دادها پشتیبانی می کند، به شرط آن که یک رابطه( یا بطور کلی تر یک قطعه از رابطه) بتواند از لحاظ فیزیکی در کپی های مجزا و در سایتهای مجزا ذخیره شود.
  • کپی برداری داده ها باید همانند قطعه قطعه شدن برای کاربران شفاف(غیر قابل تشخیص) باشد.
  • دلایل عمده کپی برداری داده ها
§         کارآیی
§         در دسترس بودن(دسترسی)
  • مشکل انتشار به روز رسانی
  • استقلال Replication   همانند استقلال قطعات و استقلال Location باعث ساده تر شدن برنامه های کاربر و فعالیتهای ترمینال می شود.
  • رو نوشت از داده ها (Snapshots)
 


مثالی از کپی برداری داده ها:
 
داده ها از دید کاربران:
شماره کارمندی
دپارتمان
حقوق
E1
DX
450.000
E2
DY
400.000
E3
DZ
500.000
E4
DY
630.000
E5
DZ
400.000
 
قطعه مشهد                                                     قطعه تهران
 
 
 
 
شماره کارمندی
دپارتمان
حقوق
 
شماره کارمندی
دپارتمان
حقوق
E2
DY
400.000
 
E1
DX
450.000
E4
DY
630.000
 
E3
DZ
500.000
 
 
 
 
E5
DZ
400.000
 
 
                  کپی قطعه تهران                                        کپی قطعه مشهد
 
 
 
 
شماره کارمندی
دپارتمان
حقوق
 
شماره کارمندی
دپارتمان
حقوق
E1
DX
450.000
 
E2
DY
400.000
E3
DZ
500.000
 
E4
DY
630.000
E5
DZ
400.000
 
 
 
 
 
 
محل فیزیکی ذخیره داده ها(مشهد)                 محل فیزیکی ذخیره داده ها(تهران)
 
 


قانون 7: پردازش توزیع شده جستجوها
  • یکی از مهمترین و حیاتی ترین نکات در مرود سیستمهای پایگاه داده توزیع شده، انتخاب استراتژی مناسب برای پردازش توزیع شده جستجو(Query) می باشد.
  • پردازش جستجو در سیستم های توزیع شده شامل موارد زیر می باشد:
      • عملیات محلی ورودی و خروجی(I/O) و CPU در سایتهای مجزا
      • تبادل اطلاعات میان سایتهای فوق الذکر
  • Query Compilation Ahead Of Time
  • Views That Span Multiple Sites
  • integrity constraints that within DDBS that span multiple sites
 
 
قانون 8: مدیریت توزیع شده Transaction
  • دو نکته مهم برای مدیریت Transaction، کنترل بازیابی(Recovery Control ) و کنترل سازگاری(Consistency Control) می باشد که نیاز به اعمال و دقت بیشتری در محیط های توزیع شده دارند.
  • در یک سیستم توزیع شده، یک Transaction می تواند باعث اجرای کد در چندین سایت شده که همین امر خود می تواند باعث عملیات به روز رسانی در سایتهای مختلف شود.
  • هر Transaction را می توان شامل چندید Agent در نظر گرفت که هر Agent، فرآیندی است که از طرف Transaction  در سایت به خصوصی اجرا می شود.
 
بن بست عمومی: هیچ سایتی نمی تواند با استفاده از اطلاعات داخلی خود، آن را تشخیص دهد.
قانون 9 :استقلال سخت افزاری
·         صرفه نظر از اینکه چه Platform سخت افزاری استفاده می شود، کاربران باید تصویر واحدی از سیستم داشته باشند.
·         بهتر است بتوان یک DBMS را بر روی سیستمهای سخت افزاری مختلف اجرا کرد.
·         بهتر است سیستم های مختلف سخت افزاری سهم یکسانی در یک سیستم توزیع شده داشته باشند.
·     نمی توان به راحتی فرض کرد که همواره می توان از سیستمهای همگن استفاده کرد، به همین دلیل هنوز باید یک DBMS بر روی سیستمهای مختلف سخت افزاری قابل اجرا باشد.
 
قانون 10: استقلال سیستم عامل
·     بهتر است که علاوه بر استقلال سخت افزاری، قادر به راه اندازی DBMS بر روی سیستم عاملهای مختلف (حتی سیستم عاملهای مختلف بر روی یک سخت افزار) باشیم.
·     حداقل سیستم عاملهای مهمی که باید DBMS پشتیبانی کند(با توجه به معیارهای تجاری)، عبارتند از: MVS/XA؛ MVS/ESA، VM/CMS، VAX/VMS، UNIX(محصولات مختلف)، OS/2، MS/DOS و WINDOWS
 
قانون 11: استقلال شبکه
·         مطلوب آن است که بتوانیم شبکه های نامتجانس مختلف را پشتیبانی نماییم.
·         از دید یک DBMS توزیع شده، شبکه یک سرویس مطمئن انتقال پیغام می باشد.
·     مفهموم مطمئن در عبارت فوق را می توان بدین صورت توصیف نمود که به طور مثال اگر شبکه پیغامی را از سایت X برای تحویل به سایت Y دریافت کرد، سرانجام آن پیغام را به سایت Y تحویل دهد.
·         نباید در محتوای پیغامها خللی ایجاد شده و پیغامها باید به ترتیب فرستاده شدن ارسال شده و بیش از یکبار نیز تحویل مقصد نشوند.
·         شبکه مسئول تایید سایت(Site Authentication) نیز می باشد.
·         یک سیستم ایده آل باید هم از شبکه های محلی(LAN) و هم از شبکه های گسترده(WAN) پشتیبانی نماید.
·         سیتمهای توزیع شده باید معماریهای مختلف شبکه را پشتیبانی نمایند.
 
قانون 12:استقلال DBMS
سیستم توزیع شده ایده آل باید استقلال DVBMS را مهیا سازد
+ نوشته شده در  یکشنبه پنجم اسفند 1386ساعت 16:23  توسط یوسف عبدلیان باریکرسفی  | 

تکنولوژی بکار رفته در cpu های دو هسته ای

  • تکنولوژی بکار رفته در cpu های دو هسته ای



  • تکنولوژی بکار رفته در cpu های دو هسته ای در چندین ماه گذشته پیشرفت های جدیدی در طراحی پروسسورها، بویژه از طرف شرکت AMD حاصل شد. این شرکت علاوه بر اینکه یک cpu با طراحی کاملا ْ64 بیتی عرضه کرد که باعث برتری یافتن این شرکت در بازار کامپیوترهای رومیزی پیشرفته گردید، همچنین در حذف کنترل کننده‌های حافظه (MCH) پیشقدم شد که در عملکرد Athlon 64 و چیپهای optron یک پیشرفت قابل ملاحظه نسبت به پروسسورهای intel به حساب می‌آید. اینتل به طور متقابل پروسسور سازگار 64 بیتی را عرضه نمود. به تازگی نیز هر دو شرکت پردازشگرهای دوهسته ای را عرضه نموده‌اند، این پروسسورها بهتر از آن چیزی که شما انتظار دارید کار می‌کنند. پروسسورهای اینتل و AMD هر دو دارای دو هسته پروسسور، در حال کار در یک قالب می‌باشند که هر یک از هسته‌ها بصورت مستقل توابع و پردازشهای داده را انجام می‌دهند (در مورد اینتل این مورد کامل تر است) و هر دو این هسته‌ها توسط نرم افزار سیستم عامل هم آهنگ می گردند.
    در این مقاله سعی شده تا تکنولوژی که در این دو محصول استفاده شده و مقدار افزایش کارایی که شما می توانید از آنها انتظار داشته باشید بررسی گردد. در حال حاضر AMD فقط پروسورهای کلاس سرور opteron با دو هسته را بطور کامل به بازار عرضه کرده و بزودی Athlon 64*2 برای کامپیوترهای رومیزی را نیز به بازار عرضه می‌کند. در طرف مقابل اینتل در حال حاضر پنتیوم Extreme Edition 840 رومیزی با دو هسته را به بازار عرضه نموده در حالی که خطهای تولید Pentium D و dual xeons هنوز متوقف نشده اند.
    با توجه به اینکه پروسسورهای دو هسته‌ای در اصل یک سیستم چند پروسسوره که در یک قالب قرار گرفته اند، می باشد. اجازه بدهید اینک چندین تکنولوژی که در سیستم های چند پردازشگر استفاده می شود را مورد بررسی قرار دهیم.
    چند پردازشگرهای متقارن ( SMP (symmetric Multi processing
    SMP روش مشترکی می باشد که چندین پردازشگر بطور جداگانه با یکدیگر در یک مادربرد کار می‌کنند. سیستم عامل با هر دو cpu تقریباً بطور یکسان کار می‌کند و کارهای مورد نیاز را به آنها ارجاع می‌دهد. چیپ‌های دوهسته ای جدید intel و AMD توانایی SMP را بصورت داخلی مورد توجه قرار داده‌اند. پروسسورهای سرور opteron دوهسته ای می‌تواند همچنین بصورت خارجی با دیگر چیپ‌های دوهسته ای ارتباط برقرار کند. (بشرط آنکه چیپ متقابل نیز دارای این خاصیت باشد)
    محدودیت اصلیSMP در پشتیبانی سیستم عاملها و نرم افزارها از این تکنولوژی می‌باشد. خیلی از سیستم عاملها (مانند ویندوز XP سری خانگی ) توانایی پشتیبانی از SMP را ندارند و از دومین پردازشگر استفاده نمی‌کنند. همچنین بیشتر برنامه‌های پیشرفته بصورت تک رشته ای کار می‌کنند، در اصل در هر زمان فقط یک پردازشگر در حالت فعال می باشد. برنامه های چند رشته‌ای از پتانسیل موجود در سیستم‌های دو یا چند پرازشگر، می‌توانند نتایج مفیدتری بگیرند، ولی به صورت کامل عمومیت ندارد.
    در گذشته intel و AMD سعی داشته‌اند تا تکنولوژی جدیدی مثل SMD را بیشتر برای پردازشگرهای سرور پیشرفته مانند opteron و Xeon استفاده نمایند ( البته تا قبل از پنتیوم 3 )

    Hyperthreading
    این تکنولوژی بصورت اختصاصی توسط اینتل در پردازشگرهای چند هسته‌ای بکار گرفته شده است. این تکنولوژی قبلاً نیز توسط این شرکت بکار گرفته ‌شده‌ بود. اینتل برای آنکه از منابع CPUبنحو بهتری استفاده نماید فقط قسمتهایی که کار پردازش اطلاعات را انجام می دهد را تکثیر کرده است. یعنی آنکه منابع داده در داخل CPU بصورت مشترک استفاده می‌شد. ایده hyperthreading برای دو برابرکردن مقدار فعالیت چیپ می‌باشد تا آنکه کاهش عملکرد سیستم که در اثر فقدان حافظه Cash روی می‌دهد کمتر گردد همچنین بصورت تئوری نشان داده شده که منابع سیستم کمتر تلف می‌‌گردند.
    در صورتی که CPU های hyperthreading مانند دو پروسسور حقیقی بنظر می رسد. ولی این CPU ها نمی‌توانند عملکردی مشابه دو CPU مجزا مانند CPU های دوهسته ای داشته باشند. زیرا در CPU های دو هسته ای دو "Threads"مشابه بطور همزمان و با Cash ‌های جداگانه L1 و L2 می‌توانند اجرا گردند که این عمل در پردازشگرهای hyperthreading قابل انجام نمی‌باشد.
    یکی از چیپهای جدید اینتل بنام ، پردازشگر پنتیوم Extreme Edition 840 ، در داخل هر هسته خود از تکنولوژی hyperthreading نیز پشتیبانی می‌کند، یعنی آنکه در یک سیستم عامل آن بصورت چهار پردازشگر حقیقی دیده می‌شود.
    دو چیپ در یک قالب ... چرا؟
    چرا دو شرکت اینتل و AMD بطور ناگهانی شروع به توزیع پردازشگرهای دو هسته‌ای کردند؟
    اول از همه رقابت چنانچه بعداً بیان خواهیم کرد AMD از ابتدا توانائی بالقوه دوهسته‌ای را در پردازشگرهای 64 بیتی خود داشت. ساختمان ورودی و خروجی برای دومین هسته در CPU های فعلی 64 بیتی AMD موجود می‌باشد.
    هیچ شرکتی نمی تواند دیگران را از بدست آوردن تکنولوژی‌های جدید منع نماید و AMD در حال حاضر با موفقیت چشمگیر خط تولید پرداشگرهای 64 بیتی آسودگی را از intel سلب نموده ‌است.
    برای اینتل ضروری می‌باشد که دارای یک تولید تخصصی در تکنولوژی دوهسته ای ‌باشد تا رقابت با شرکاء تجاری خود را حفظ نماید.
    دوم، کارایی می‌باشد. مطمئناً برنامه‌های کاربردی چند رشته‌ای در پردازشگرهایی که توانایی انجام چند پردازش را دارند در پردازشگرهایی که یک پردازش را در هر زمان انجام می‌دهند، بهتر عمل خواهند نمود.
    البته برای سیستم های چند پردازشگره یک ایراد عمومی وجود دارد و آن تاْخیری می‌باشد که این CPU ها در اجرای کار سیستم بوجود می آورند. به بیان ساده در حال حاضر روشی برای سیستم عامل‌های موجود وجود ندارند تا پردازشها را بطور کاملاً مساوی در بین پردازشگرها تقسیم نماید، پردازشگر دوم عموماً بایک مداخله کمتر و کارایی پایین‌تر کارمی‌کند، در صورتی که ممکن است پردازشگر اول بصورت 100% در حال پردازش ‌باشد.
    سومین دلیل کمتر نمایان است، ناامیدی AMD و اینتل می‌باشد، هر دو شرکت با یک مانع جدی برای افزایش سرعت پردازشگرها و کوچکتر کردن اندازه قالب آنها روبرو شده اند تا این مانع حذف نشود و یا اینکه تا کاربران عمومی متوجه نشوند که GHZ به تنهایی کارایی را بیان نمی‌کند. هر دو شرکت برای دست یافتن به هر پیشرفت که کارایی پردازشگرها را بهبود بخشید تلاش خواهند نمود و تقریباً دلیل اصلی بوجود آمدن پردازشگرهای دو هسته ای را می‌توان همین دلیل سوم بیان نمود.

    دسترسی AMD به تکنولوژی دو هسته ای
    فرم فاکتور فعلی پردازشگر 64 اتلن به طراحی دو هسته ای خیلی نزدیک می‌باشد. وجود کنترل کننده‌های Hypertransport و کنترل کننده حافظه درقالب چیپهای فعلی 64 اتلن به معنی آنست که اضافه نمودن دومین هسته در داخل چیپ چندان مشکل نمی‌باشد.
    بدلیل رابط NorthBridge که AMD برای اتلن 64 تهیه کرده‌ است کنترل کننده حافظه و رابط Hypertransport در داخل چیپ پشتیبانی می گردد. این به چیپ‌های دوهسته‌ای امکان می دهد که از داخل خود پردازشگر با یکدیگر ارتباط برقرار کنند.




    تعداد ترانزیستورهای پردازشگرهای اتلن 64*2 بیش از دو برابر پردازشگرهای اتلن 64 می‌باشد. با توجه به اینکه در ساختن CPU های جدید از روش 90nm استفاده می شود سایز کل چیپ کمی افزایش پیدا کرده و ولتاژ عملکرد 1.35 تا 1.4 می‌باشد و گرمای خروجی به بیش از 110w کمی افزایش می‌یابد.
    هر هسته پردازشگر حافظه Cash L1 و L2 مخصوص به خود را دارد، 128 KB برای L1 و بسته به مدل 512 KB تا 1 MB برای L2.
    دو برتری مهمی که AMD در CPU های دو هسته‌ای دارد عبارتند از اینکه :
    "Crossbar Switch" که آدرسها را جمع‌آوری کرده و توزیع می کند و داده را از هر هسته به هسته دیگر یا باقی سیستم توزیع می کند در حال حاضر امکان اضافه شدن دومین هسته را دارد.
    موفقیت دیگر AMD که از نظر مصرف کننده خیلی مهم می‌باشد امکان استفاده اتلن 64*2 از مادربردهای سوکت 939/940 می باشد و فقط لازم است که شرکت تولید کننده مادربرد BIOS را برای پشتیبانی از خصوصیات جدید به روز رسانی نماید.

    دسترسی اینتل به پردازشگر دو هسته ای
    با توجه به اینکه اینتل مانند AMD دارای مدل قبلی برای اضافه کردن هسته جدید در داخل یک قالب CPU نبود، برای ساخت آن مدل جدیدی را طراحی نمود که البته دارای نواقصی نسبت به مدل AMD می‌باشد.
    پنتیوم D در اصل از دو پردازشگر "پرسکات" پنتیوم D در یک قالب تشکیل شده است ، این پردازنده دارای مزیت داشتن دو حافظه کش L1 و L2 برای هر هسته بطور مجزا می‌باشد، ولی دارای نواقصی نیز می باشند از جمله اینکه این دو پرداشگر برای ارتباط برقرار کردن با یکدیگر باید، از NorthBridge و FSB خارج پردازشگر استفاده نمایند. تعداد ترانزستورها برای چیپ های جدید بیش از 230 میلیون و گرمای تولید شده به مقدار فوق‌العاده 130W برای پنتیوم Extereme Edition می‌رسد.


    یکی از بزرگترین معایب طراحی اینتل نسبت به AMD که سوکت‌های 939 را برای طراحی پردازشگرهای دو هسته‌ای خود حفظ نمود آن است که راه حل دو هسته‌ای اینتل نیاز به یک جفت چیپ ست جدید بنامهای 955X و 945P دارد. شرکت nvidia اخیراً ویرایش اینتل SLI که پروسسورهای دو هسته‌ای را پشتیبانی می‌کند را به بازار عرضه کرده ‌است که این مورد هم زمان بیشتری را مصرف و هم هزینه‌ای اضافی برای مصرف کننده در پی دارد.

    گرما و پهنای باند :
    هر دو پردازشگرهای تک هسته‌ای AMD و Intel گرمای فوق‌العاده زیادی تولید می‌کردند، که هیت سینک‌های فوق‌العاده بزرگی که برای آنها استفاده می ‌شود گویای این مطلب می‌باشد. حال با اضافه کردن یک هسته اضافی چگونه می‌توان این پردازشگرها را خنک نمود.
    ولی AMD و Intel از چندین روش برای خنثی کردن این موضوع استفاده کرده‌اند، ابتدا آنکه در ساخت این پردازشگرها از تکنولوژی 90nm استفاده شده که باعث کوچکتر شدن CPU ونزدیکتر شدن قسمتهای مختلف بر روی CPU شده و در نتیجه گرمای تولید شده را به مقدار زیادی کاهش می‌دهد و دوم آنکه فرکانس کاری این CPU ها بمقدار حدود 400MHz نسبت به آخرین CPU های تک هسته ای کاهش پیداکرده و همچنین هسته دوم همیشه بصورت کامل کار نمی‌کند این سه مطلب باعث می‌گردد که گرمای تولید شده بمقدار خیلی زیادی نسبت به CPU های تک هسته‌ای افزایش نیابد.
    پهنای باند بکار رفته محدودیت بزرگتری برای CPU های دو هسته‌ای می‌باشد، زیرا هر دو AMD و Intel پهنای باند برای CPU های تک هسته‌ای را برای این نوع CPU ها نیز حفظ کرده‌اند و طرحی برای افزایش آن ندارد.

    دو پردازشگر تک هسته ای در مقابل یک پردازشگر دو هسته‌ای
    محاسبات و بررسی طرحهای موجود نشان می‌دهد که دو چیپ اپترن AMD باید دارای سرعت بالاتری نسبت به یک چیپ دو هسته‌ای باشد، زیرا هر یک از این OPTERON ها دارای یک کنترل کننده حافظه مجزا می‌باشد ولی در چیپ‌های دو هسته‌ای هر دو هسته باید یک کنترل کننده حافظه را بصورت مشترک استفاده کنند.
    در مورد اینتل این موضوع مطرح نمی‌باشد زیرا در هر دو طرح یک کنترل کننده حافظه در خارج از CPU استفاده می شود و فقط در طراحی دوهسته ای این مسیرها کوتاه‌تر می‌باشند که چندان پارامتر مطرحی در افزایش سرعت نمی‌باشد.
    یکی از بزرگترین مزایای پردازشگرهای دو هسته‌ای نسبت به دو پردازشگر تک هسته‌ای بحث اقتصادی آن می‌باشد، زیرا اولاً خرید یک CPU دو هسته‌ای از دو CPU تک هسته‌ای ارزانتر می‌باشد و از طرف دیگر باید قیمت مادربرد را نیز لحاظ کرد که در این صورت این موضوع بیشتر جلب توجه می‌نماید
    + نوشته شده در  یکشنبه پنجم اسفند 1386ساعت 16:18  توسط یوسف عبدلیان باریکرسفی  | 


    لینکهای جدید گرید
    www.tiziran.com/download/grid/gridComputing.htm


    لینک کتاب گرید از گروه گرید دانشگاه آزاد تفرش
    www.tiziran.com/download/grid/GridComputing.pdf


    مقاله گرید
    www.tiziran.com/pirahansiahGrid.pdf

    وبلاگ استاد عزیزم حامد سلیمی پور رودسری سرپرست گروه گرید
    www.xgrid.blogfa.com


    آموزش اوراکل 11

    www.tiziran.com


    آموزش جاوا

    www.learnjava.ir

    آموزش پردازش تصویر
    www.pirahansiah.com

    + نوشته شده در  پنجشنبه دوم اسفند 1386ساعت 18:38  توسط یوسف عبدلیان باریکرسفی  |