توضیحات
رشته های مرتبط: مهندسی کامپیوتر، مهندسی نرم افزار
مقدمه ازمیان افزار JavaSymphony جهت ایجاد سیستم توزیع شده استفاده میشود . این ابزار یکی از کاراترین میان افزار های طراحی شده جهت ساخت سیستم های توزیع شده است که برنامه نویس را از پرداختن به بسیاری از جزئیات برنامه نویسی بی نیاز می کند. در بخش۲ به معرفی JavaSymphony پرداخته, امکانات و توانایی هایی که این ابزار جهت ساخت سیستم های توزیع شده و موازی در اختیار برنامه نویس قرار می دهد را معرفی کرده, نحوه استفاده از JavaSymphony برای برنامه نویسی و ساخت سیستم های توزیع شده به زبان جاوا, خصوصیات کلاس ها و توابع مختلف این ابزار و ویژگی های آنها بیان می شود. در بخش۳ امکانات پیشرفته تر JavaSymphony که در نسخه های بعدی آن به منظور افزایش کارایی برنامه های ساخته شده توسط این ابزار به آن اضافه شده (مانند تکنیک های همگام سازی پروسه ها, ایجاد اشیا چند نخی, بسط معماری مجازی, تبدیل پویا اشیا و… ) را بررسی خواهیم کرد. در بخش ۴ نحوه نصب, راه اندازی و استفاده از JavaSymphony درکامپیوتر های مختلف شبکه برای ایجاد یک زیر ساخت ارتباطی و تعریف معماری فیزیکی سیستم توزیع شده را بررسی خواهیم کرد.۲٫ مفاهیم اصلی JavaSymphony اغلب سیستمهای توزیع شده یا موازی که به وسیله جاوا پیاده سازی می شوند نیازمند پرداختن برنامه نویس به کارهای جزئی بسیار و خسته کننده هستندکه احتمالا منجر به اشتباه برنامه نویس نیز می شوند. JavaSymphony یک ابزار برنامه نویسی جهت پیاده سازی سیستم های توزیع شده و موازی است که دامنه وسیعی از سیستم های همگن از سیستم هایی با خوشه های کوچک تا سیستم های محاسباتی وسیع را پشتیبانی می کند. این ابزار تماما به زبان جاوا نوشته شده وبا تمام ماشینهای مجازی جاوا (JVM) سازگاری دارد. می توان گفت در مقایسه با دیگر ابزارهای موجود، JavaSymphony امکانات بهتر و قابل انعطاف تری را برای مکان یابی اشیاء و بارگذاری متعادل در اختیار برنامه نویس قرار می دهد. JavaSymphony در واقع یک کتابخانه از کلاس های جاوا است که به برنامه نویس امکان کنترل Locality موازی سازی و بارگذاری متعادل را در سطح بالایی می دهد, و برنامه نویس را از پرداختن به مسائل جزئی مانند ایجاد و استفاده از Remot-Proxy ها, برنامه نویسی نخ ها, برنامه نویسی سوکت ها و پردازش خطا ها بی نیاز می کند. به کمک این ابزار یک معماری مجازی، ازگره های محاسباتی (کامپیوتر های شبکه ) تعریف می شود. برنامه نویس می تواند با تعریف معماری مجازی دلخواه خود، سلسله مراتبی ازگره های محاسباتی فیزیکی برای سیستم توزیع شده خود بسازد. اشیاء برنامه می توانند به صورت پویا در هر کدام از مؤلفه های این معماری مجازی مستقرشده یا بین آنها حرکت کنند. مجمو عه ای ازگره های سطح بالا جهت کنترل پارامترهای مختلف نرم افزاری و سخت افزاری سیستم در دسترس است . اشیاء می توانند توسط فراخوانی متدهای یکدیگر به سه روش سنکرون، آسنکرون و یک طرفه با یکدیگر ارتباط برقرار کنند. بارگذاری کلاسهای برنامه به صورت دلخواه در گره های مختلف محاسباتی نیز می تواند موجب کاهش حافظه مورد نیاز در کل سیستم توزیع شده شود. بعلاوه می توان اشیاء را به طور دائم در حافظه های جانبی ذخیره, نگهداری و بازیابی کرد. اغلب پروژهای تحقیقاتی که یک زیر ساخت نرم افزاری برای برنامه های توزیع شده وموازی ارائه می کنند معمولا مانع از کنترل مکان استقرار اشیاء توسط برنامه نویس می شوند. با توجه به اینکه معمولا برنامه نویس اطلاعات بیشتروکامل تری در مورد ساختار سیستم توزیع شده و نحوه توزیع شده گی مطلوب اشیاء بر روی شبکه را دارد از این رو اکثر سیستم های توزیع شده که توزیع اشیاء درگره های محاسباتی و حرکت بین آنها را به صورت اتوماتیک انجام می دهند موجب کاهش کارایی سیستم توزیع شده خواهند شد. زیرا که از اطلاعات مهمی که برنامه نویس در مورد سیستم توزیع شده دارد استفاده نمی کنند و در نتیجه ممکن است ارتباط بین اشیاء توزیع شده در شبکه با یکدیگر زیاد شده و کارایی کل سیستم بسیار پایین بیاید.
مقدمه ازمیان افزار JavaSymphony جهت ایجاد سیستم توزیع شده استفاده میشود . این ابزار یکی از کاراترین میان افزار های طراحی شده جهت ساخت سیستم های توزیع شده است که برنامه نویس را از پرداختن به بسیاری از جزئیات برنامه نویسی بی نیاز می کند. در بخش۲ به معرفی JavaSymphony پرداخته, امکانات و توانایی هایی که این ابزار جهت ساخت سیستم های توزیع شده و موازی در اختیار برنامه نویس قرار می دهد را معرفی کرده, نحوه استفاده از JavaSymphony برای برنامه نویسی و ساخت سیستم های توزیع شده به زبان جاوا, خصوصیات کلاس ها و توابع مختلف این ابزار و ویژگی های آنها بیان می شود. در بخش۳ امکانات پیشرفته تر JavaSymphony که در نسخه های بعدی آن به منظور افزایش کارایی برنامه های ساخته شده توسط این ابزار به آن اضافه شده (مانند تکنیک های همگام سازی پروسه ها, ایجاد اشیا چند نخی, بسط معماری مجازی, تبدیل پویا اشیا و… ) را بررسی خواهیم کرد. در بخش ۴ نحوه نصب, راه اندازی و استفاده از JavaSymphony درکامپیوتر های مختلف شبکه برای ایجاد یک زیر ساخت ارتباطی و تعریف معماری فیزیکی سیستم توزیع شده را بررسی خواهیم کرد.۲٫ مفاهیم اصلی JavaSymphony اغلب سیستمهای توزیع شده یا موازی که به وسیله جاوا پیاده سازی می شوند نیازمند پرداختن برنامه نویس به کارهای جزئی بسیار و خسته کننده هستندکه احتمالا منجر به اشتباه برنامه نویس نیز می شوند. JavaSymphony یک ابزار برنامه نویسی جهت پیاده سازی سیستم های توزیع شده و موازی است که دامنه وسیعی از سیستم های همگن از سیستم هایی با خوشه های کوچک تا سیستم های محاسباتی وسیع را پشتیبانی می کند. این ابزار تماما به زبان جاوا نوشته شده وبا تمام ماشینهای مجازی جاوا (JVM) سازگاری دارد. می توان گفت در مقایسه با دیگر ابزارهای موجود، JavaSymphony امکانات بهتر و قابل انعطاف تری را برای مکان یابی اشیاء و بارگذاری متعادل در اختیار برنامه نویس قرار می دهد. JavaSymphony در واقع یک کتابخانه از کلاس های جاوا است که به برنامه نویس امکان کنترل Locality موازی سازی و بارگذاری متعادل را در سطح بالایی می دهد, و برنامه نویس را از پرداختن به مسائل جزئی مانند ایجاد و استفاده از Remot-Proxy ها, برنامه نویسی نخ ها, برنامه نویسی سوکت ها و پردازش خطا ها بی نیاز می کند. به کمک این ابزار یک معماری مجازی، ازگره های محاسباتی (کامپیوتر های شبکه ) تعریف می شود. برنامه نویس می تواند با تعریف معماری مجازی دلخواه خود، سلسله مراتبی ازگره های محاسباتی فیزیکی برای سیستم توزیع شده خود بسازد. اشیاء برنامه می توانند به صورت پویا در هر کدام از مؤلفه های این معماری مجازی مستقرشده یا بین آنها حرکت کنند. مجمو عه ای ازگره های سطح بالا جهت کنترل پارامترهای مختلف نرم افزاری و سخت افزاری سیستم در دسترس است . اشیاء می توانند توسط فراخوانی متدهای یکدیگر به سه روش سنکرون، آسنکرون و یک طرفه با یکدیگر ارتباط برقرار کنند. بارگذاری کلاسهای برنامه به صورت دلخواه در گره های مختلف محاسباتی نیز می تواند موجب کاهش حافظه مورد نیاز در کل سیستم توزیع شده شود. بعلاوه می توان اشیاء را به طور دائم در حافظه های جانبی ذخیره, نگهداری و بازیابی کرد. اغلب پروژهای تحقیقاتی که یک زیر ساخت نرم افزاری برای برنامه های توزیع شده وموازی ارائه می کنند معمولا مانع از کنترل مکان استقرار اشیاء توسط برنامه نویس می شوند. با توجه به اینکه معمولا برنامه نویس اطلاعات بیشتروکامل تری در مورد ساختار سیستم توزیع شده و نحوه توزیع شده گی مطلوب اشیاء بر روی شبکه را دارد از این رو اکثر سیستم های توزیع شده که توزیع اشیاء درگره های محاسباتی و حرکت بین آنها را به صورت اتوماتیک انجام می دهند موجب کاهش کارایی سیستم توزیع شده خواهند شد. زیرا که از اطلاعات مهمی که برنامه نویس در مورد سیستم توزیع شده دارد استفاده نمی کنند و در نتیجه ممکن است ارتباط بین اشیاء توزیع شده در شبکه با یکدیگر زیاد شده و کارایی کل سیستم بسیار پایین بیاید.
Description
I. Documentation for the API programmer 1.) The Network Agent How to find a virtual architecture in a physical architecture? Look at the following physical architecture like created in the Shell: To create an easier to understand tree you have to remember that a node with level 3 can have children with level 2 and with level 3. So a node with level 3 is also a node with level 2 and a node with level 1. The following picture will show the example above: This representation of the tree is better to understand which virtual architectures can be found in the physically. A virtual architecture is a tree structure with working nodes only at the leafs. Look at the following example of a virtual architecture: This virtual architecture can be found in the physical architecture above, but there are more different solutions and without knowing the constraints of the nodes in the physical architecture the following solutions are possible: V1 = N1; V2 = N2; V3 = N3 V1 = N4; V2 = N5; V3 = N2 V1 = N5; V2 = N1; V3 = N4 … there are many solutions but the following solutions are not possible: V1 = N2; V2 = N3; V3 = N5 … The order of the nodes of the physical architecture is not important to find a virtual architecture. Only the structure to be found is important to exist in the physical architecture. The level of the root elements of the two architectures have not to be the same. The level of the physical architecture has to be higher or equal to the level of the virtual architecture. Remember the following virtual architecture can be found in the physical architecture above to: Solutions are: V1 = N2; V2 = N3; V3 = N5 V1 = N3; V2 = N5; V3 = N2 … ۲٫) The JavaSymphony Shell JavaSymphony Shell is part of the JavaSymphony system. JS Shell is a graphical user interface designed to support the creation of a physical architecture consisting of connected JS Network Agents. This physical architecture is used by JS Applications to create virtual architectures and run distributed programs on them. If a JS application demands a virtual architecture, it will be mapped to a physical architecture that fulfils the needs of the application (see documentation for network agents for information how this is done). A physical architecture consists of nodes (Network Agents, NA’s). Nodes can be grouped under a cluster; clusters can be grouped under a site and so on (where clusters and sites are normal nodes that additionally have a cluster manager or a site manager. For being expansible, we decided to use level numbers instead of names for the hierarchy, so a node has level one, a cluster level two, a site level three and so on. The maximum level is nine. The following diagram shows a node of level three (a site) with three nodes of level two (clusters), that also have some nodes of level one under them. Remember that there are still eight network agents in this system (every higher level node has still the functionality of a normal node). Starting the JS Shell You can start the JS Shell by executing the batch file run_shell.bat in the programs main directory. This will start up the GUI and enable you to create a physical architecture. If you have already created a physical architecture and stored it in a file (see “Save Configuration”), you can use the JS Shell program to generate this stored architecture without starting the GUI by appending filename as a program argument: run_shell [filename] This will generate the architecture stored in the file, showing all information and errors as console output. The program will stop after generation. The Main Window The main window is divided into two parts. On the right side there is a list of available NA’s that can be added to a physical architecture on the left side. A NA is defined by the computer name (or IP) on witch the NA is running and the port on which the NA is listening ([computer_name]:[port]). At start-up, the default list stored in a file (serverlist.ini) will be loaded and displayed in the list window as well as the configuration stored in the file config.txt will be displayed as a tree in the left part. Of course you can load and store other lists and configuration files (see “Load Configuration”, “Load NA-List”). The List The list displays all NA’s that are currently available (marked with a green tick) as well as some other computers, where no NA is currently running on the specified port (marked with a red cross). NA’s, that are not marked could not be reached yet, they will be marked in a few seconds. You can add NA’s to the list, remove NA’s from the list and load and store lists of NA’s (see “Load NA-List). You can add an NA to the physical architecture on the left side by dragging and dropping it on the desired position in the architecture tree. The Tree The Tree window allows you to design a physical architecture consisting of NA’s. You can drag and drop NA’s in the tree around as well as remove them from the tree by dragging them to the list window. You can also load and store configurations to a file. If the design of your physical architecture is finished, you can create the physical architecture my selecting “Make Configuration” from the menu. Each NA in the tree will be contacted and the physical architecture will be created. The tree in the picture above displays two independent virtual architectures, one with root NA “agnes.par.univie.ac.at” and one with “daphne.par.univie.ac.at”. The node named “Systemroots” is just a dummy tree node and not a real NA. The first one is a NA of level three (agnes) consisting of two NA’s of level two (amanda, claire). The first one (amanda) consists of two NA’s of level one (becky, brooke), the second consists of three NA’s (darlene, dolly, edwin). The root of the second system is a NA of level five (daphne) consisting of one NA of level four (cybill) and another one of level 2 (lisa), and so on.