عکس پیش‌فرض نوشته

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

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

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

 

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

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

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

 

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

جهت انجام این کار، انتخاب های گوناگونی وجود دارند. نمونه سازی نهایی معماری نرم افزار را معماری سیستم میگویند.

 

به طور کلی دو نوع معماری داریم: معماری متمرکز و معماری نامتمرکز

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

در معماری نامتمرکز، ماشین ها نقش های یکسانی دارند.

 

همانطور که در مطالب گذشته (اهداف سیستم های توزیع شده) اشاره کوچکی شد، هدف مهم سیستم های توزیع شده، تفکیک کاربردها از سکوها از طریق تأمین لایه میان افزار است.

پذیرش چنین لایه ای، تصمیم معماری مهمی است  هدف اصلی آن تأمین شفافیت توزیع است.

اما برای انجام شفافیت، باید موازنه هایی صورت گیرد و این کار منجر به تکنیک هایی برای سازگاری میان افزار میشود.

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

این بینش منجر به سیستم هایی به نام سیستم های خودکار (Autonomic Systems) شده است.

این سیستم های توزیع شده به شکل حلقه های کنترل بازخورد، سازمان دهی میشوند که عنصر معماری مناسبی را در اثنای طراحی سیستم تشکیل میدهند.

 

سبک های معماری سیستم های توزیع شده

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

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

 

برای این بحث، فرضیه سبک معماری (Architectural Style) مهم است.

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

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

موضوع مهم درباره قطعه مربوط به سیستم های توزیع شده این است که میتواند جایگزین شود، به شرطی که واسط های آن تعیین شوند.

 

مفهوم دشوارتر دیگر، کانکتور (Connector) است و راهکاری است که ارتباطات، هماهنگی یا همکاری بین قطعات مختلف را فراهم میسازد. به عنوان مثال، کانکتور میتواند به وسیله امکاناتی برای فراخوانی های رویه (راه دور)، مبادله پیام یا جریان داده ها شکل گیرد.

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

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

معماری های لایه ای

معماری های مبتنی بر شیء

معماری های مرکز داده ها (Data Centered)

معماری های مبتنی بر رویداد (Event Based)

 

ایده اصلی برای سبک لایه آسان است؛ قطعات به روش لایه ای سازمان دهی میشوند که در آن، قطعه ای در لایه l اجازه دارد قطعات لایه l-1 را فراخوانی کند، اما اجازه ندارد قطعه های دیگر را فراخوانی کند.

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

معمولاً کنترل از لایه ای به لایه دیگر جریان دارد، درخواست ها به طرف پایین سلسله مراتب و نتایج به طرف بالا جریان دارند.

 

در معماری های مبتنی بر شیء، سازمان دهی ضعیف تری وجود دارد.

در اصل، هر شیء متناظر با چیزی است که قطعه تعریف کردیم و این قطعات از طریق راهکار فراخوانی رویه (راه دور) متصل شده اند.

این معماری نرم افزار با معماری سیستم سرویس گیرنده – سرویس دهنده تطبیق دارد که قبلاً در مورد آن بحث کرده ایم.

لازم به ذکر است که معماری های لایه ای و مبتنی بر شیء، هنوز مهمترین سبک ها برای سیستم های نرم افزاری بزرگ هستند.

 

معماری های مرکز داده ها بر اساس این ایده تکامل یافته اند که فرآیندها از طریق یک مخزن (فعال یا غیرفعال) مشترک ارتباط برقرار میکنند.

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

به طور مشابه، سیستم های توزیع شده مبتنی بر وب، دارای معماری مرکز داده هستند؛ فرآیندها با استفاده از سرویس های داده مبتنی بر وب مشترک، با یکدیگر ارتباط برقرار میکنند.

 

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

برای سیستم های توزیع شده، پخش رویداد به طور کلی مربوط به سیستم های انتشار / عضویت می باشد.

ایده اصلی این است که فرآیندها رویدادها را منتشر میکنند و پس از میان آن میان افزار تضمین میکند که فقط فرآیندهایی که عضو آن رویدادها هستند، آنها را دریافت مینمایند.

امتیاز اصلی سیستم های مبتنی بر رویداد این است که فرآیندها اتصال ضعیفی دارند. در اصل لازم نیست صریحاً به یکدیگر مراجعه کنند.

این وضعیت را انفصال در فضا یا انفضال ارجاعی می نامند.

 

معماری های مبتنی بر رویداد میتواند به معماری های مرکز داده ها ترکیب شود و فضاهای داده مشترک را به وجود آورد.

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

علاوه بر این، بسیاری از فضاهای داده مشترک، از واسطی شبیه SQL استفاده میکنند تا مخزن را طوری به اشتراک بگذارند که داده ها بتوانند با استفاده از توصیف ارجاع صریح، دستیابی شوند. (همانند فایل ها)

آنچه که این معماری را بارای سیستم های توزیع شده با اهمیت میکند این است که، به دستیابی به شفافیت توزیع (در سطح معقول) کمک میکند.

اما همانطور که میدانید، شفافیت توزیع نیازمند توازن بین کارایی، تحمل عیب، سهولت برنامه نویسی و … است. چون فقط یک راه حل وجود ندارد که نیازمندی های مربوط به تمام کاربردهای توزیع شده ممکن را برآورده کند، پژوهشگران، این ایده را که تنها یک سیستم میتواند 90% از تمام موارد ممکن را پوشش دهد، رد کردند.

 

در این مطلب سعی شد که برخی از سبک های معماری متداول را به طور مختصر مورد بحث و بررسی قرار دهیم.

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

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