کامپیوتر و IT
دانلود مقاله ترجمه شده میان افزار جاوا سمفونی
![دانلود مقاله ترجمه شده میان افزار جاوا سمفونی](https://prodocfile.ir/images/40249665.jpg)
توضیحات فایل:
بخشی از ترجمه فارسی:
مقدمه
ازمیان افزار JavaSymphony جهت ایجاد سیستم توزیع شده استفاده میشود . این ابزار یکی از كاراترین میان افزار های طراحی شده جهت ساخت سیستم های توزیع شده است که برنامه نویس را از پرداختن به بسیاری از جزئیات برنامه نویسی بی نیاز می کند.
در بخش2 به معرفی JavaSymphony پرداخته, امكانات و توانایی هایی كه این ابزار جهت ساخت سیستم های توزیع شده و موازی در اختیار برنامه نویس قرار می دهد را معرفی کرده, نحوه استفاده از JavaSymphony برای برنامه نویسی و ساخت سیستم های توزیع شده به زبان جاوا, خصوصیات كلاس ها و توابع مختلف این ابزار و ویژگی های آنها بیان می شود. در بخش3 امكانات پیشرفته تر JavaSymphony كه در نسخه های بعدی آن به منظور افزایش كارایی برنامه های ساخته شده توسط این ابزار به آن اضافه شده (مانند تكنیك های همگام سازی پروسه ها, ایجاد اشیا چند نخی, بسط معماری مجازی, تبدیل پویا اشیا و… ) را بررسی خواهیم كرد. در بخش 4 نحوه نصب, راه اندازی و استفاده از JavaSymphony دركامپیوتر های مختلف شبكه برای ایجاد یك زیر ساخت ارتباطی و تعریف معماری فیزیكی سیستم توزیع شده را بررسی خواهیم كرد.2. مفاهیم اصلی JavaSymphony
اغلب سیستمهای توزیع شده یا موازی كه به وسیله جاوا پیاده سازی می شوند نیازمند پرداختن برنامه نویس به كارهای جزئی بسیار و خسته كننده هستندكه احتمالا منجر به اشتباه برنامه نویس نیز می شوند. JavaSymphony یك ابزار برنامه نویسی جهت پیاده سازی سیستم های توزیع شده و موازی است كه دامنه وسیعی از سیستم های همگن از سیستم هایی با خوشه های كوچك تا سیستم های محاسباتی وسیع را پشتیبانی می كند. این ابزار تماما به زبان جاوا نوشته شده وبا تمام ماشینهای مجازی جاوا (JVM) سازگاری دارد. می توان گفت در مقایسه با دیگر ابزارهای موجود، JavaSymphony امكانات بهتر و قابل انعطاف تری را برای مكان یابی اشیاء و بارگذاری متعادل در اختیار برنامه نویس قرار می دهد.
JavaSymphony در واقع یك كتابخانه از كلاس های جاوا است كه به برنامه نویس امكان كنترل Locality موازی سازی و بارگذاری متعادل را در سطح بالایی می دهد, و برنامه نویس را از پرداختن به مسائل جزئی مانند ایجاد و استفاده از Remot-Proxy ها, برنامه نویسی نخ ها, برنامه نویسی سوكت ها و پردازش خطا ها بی نیاز می كند. به كمك این ابزار یك معماری مجازی، ازگره های محاسباتی (كامپیوتر های شبكه ) تعریف می شود. برنامه نویس می تواند با تعریف معماری مجازی دلخواه خود، سلسله مراتبی ازگره های محاسباتی فیزیكی برای سیستم توزیع شده خود بسازد. اشیاء برنامه می توانند به صورت پویا در هر كدام از مؤلفه های این معماری مجازی مستقرشده یا بین آنها حركت كنند. مجمو عه ای ازگره های سطح بالا جهت كنترل پارامترهای مختلف نرم افزاری و سخت افزاری سیستم در دسترس است . اشیاء می توانند توسط فراخوانی متدهای یكدیگر به سه روش سنكرون، آسنكرون و یك طرفه با یكدیگر ارتباط برقرار كنند. بارگذاری كلاسهای برنامه به صورت دلخواه در گره های مختلف محاسباتی نیز می تواند موجب كاهش حافظه مورد نیاز در كل سیستم توزیع شده شود. بعلاوه می توان اشیاء را به طور دائم در حافظه های جانبی ذخیره, نگهداری و بازیابی كرد.
اغلب پروژهای تحقیقاتی كه یك زیر ساخت نرم افزاری برای برنامه های توزیع شده وموازی ارائه می كنند معمولا مانع از كنترل مكان استقرار اشیاء توسط برنامه نویس می شوند. با توجه به اینكه معمولا برنامه نویس اطلاعات بیشتروكامل تری در مورد ساختار سیستم توزیع شده و نحوه توزیع شده گی مطلوب اشیاء بر روی شبكه را دارد از این رو اكثر سیستم های توزیع شده كه توزیع اشیاء درگره های محاسباتی و حركت بین آنها را به صورت اتوماتیك انجام می دهند موجب كاهش كارایی سیستم توزیع شده خواهند شد. زیرا كه از اطلاعات مهمی كه برنامه نویس در مورد سیستم توزیع شده دارد استفاده نمی كنند و در نتیجه ممكن است ارتباط بین اشیاء توزیع شده در شبكه با یكدیگر زیاد شده و كارایی كل سیستم بسیار پایین بیاید.
2. 1. ویژگی های Java Symphony
JavaSymphony یكی از ابزارهای ساخت سیستمهای توزیع شده و موازی است كه یك زیر ساخت مناسب جهت ساخت برنامه های توزیع شده و موازی ارائه می كند. همانطوركه گفته شد این ابزار توسط زبان جاوا پیاده سازی شده وبه صورت كتابخانه ای از كلاسهای جاوا (.class) موجوداست كه می توان از این كلاس ها در هر برنامه نوشته شده به زبان جاوا استفاده كرد. برخی از خصوصیات مهم این ابزار عبارتند از:
• امكان تعریف یك معماری مجازی توزیع شده: برنامه نویس می تواند یك معماری مجازی برای سیستم توزیع شده خود تعریف كرده و به این ترتیب سلسله مراتبی از گره های محاسباتی فیزیكی را برای برنامه خود تشكیل دهد. معماری مجازی از مولفه های زیر تشكیل می شود: گره های محاسباتی، خوشه ها كه مجموعه ای ازگره های محاسباتی هستند، سایت هاكه مجموعه ای از خوشه ها هستند و دامنه ها كه مجموعه ای از سایتها هستند. در هنگام تعریف یك معماری مجازی می توان با استفاده از امكانات تعریف شرایط برای گره های محاسباتی، فقط از منابع محاسباتی مناسب یا دلخواه در شبكه، جهت ساخت سیستم توزیع شده استفاده كرد. (بعنوان مثال استفاده از كامپیوترهای بیكار در شبكه) معماری های مجازی چندگانه نیز قابل تعریف هستند كه می توانند مولفه های خود را به اشتراك بگذارند.
• دسترسی به پارامترهای سیستم : JavaSymphony مجموعه ای از API های سطح بالا برای كنترل بسیاری از پارامترهای سیستم ارائه می كند از جمله می توان به پارامترهای CPU Load (میزان كار بارگزاری شده به CPU )، idle Times (درصد بیكاری)، میزان حافظه در دسترس، تعداد پروسه ها و نخهای موجود در سیستم, تاخیر شبكه و پهنای شبكه اشاره كرد. این پارامترها می توانند از سیستم زمان اجرای JavaSymphony یا JRS درخواست شده و برای كنترل استقرار اشیاء در مولفه های مختلف معماری توزیع شده, حركت اشیاء بین مولفه ها و بارگذاری متعادل استفاده شوند.
• استقرار اشیاء در مولفه های محاسباتی بصورت اتوماتیك وكنترل شونده از طرف كاربر: برنامه نویس می تواند ایجاد و استقرار یك شی در یكی از مولفه های معماری مجازی را كنترل كند. استقرار یك شی در یك مولفه می تواند با توجه به مكان اشیا دیگر كه با این شی در ارتباط خواهندبود, صورت گیرد. بعنوان مثال ممكن است مجموعه ای از اشیاء كه با یكدیگر ارتباط زیادی دارند برروی مولفه هایی از معماری مجازی كه نزدیك یكدیگر هستند مستقر شوند. اگر برنامه نویس دقیقا” محل یك شی را جهت اجراء در آن مكان مشخص نكند JRS بصورت اتوماتیك در مورد محل قرارگیری شی در بین گره های محاسباتی فیزیكی تصمیم گیری خواهد كرد.
• حركت اشیاء بین مولفه های محاسباتی بصورت اتوماتیك و قابل كنترل از طرف كاربر:JavaSymphony از حركت اشیاء بین گره های محاسباتی بصورت اتوماتیك و یا تحت كنترل كاربر پشتیبانی می كند.
• فراخوانی سنكرون, آسنكرون و یك طرفه متدها: همانطوركه می دانیم تمامی فراخوانی روالهای دور در جاوا بصورت سنكرون انجام می گیرد. علاوه بر این مكانیزم، JavaSymphony دو روش دیگر برای فراخوانی متدهای دور را در اختیار برنامه نویس قرار می دهد: 1- فراخوانی آسنكرون كه در این روش یك Handle كه برای بررسی آماده بودن نتیجه در آینده استفاده خواهد شد, بعنوان نتیجه فراخوانی روال برگشت داده می شود. 2- فراخوانی یك طرفه : كه دراین روش طرف فراخوانی كننده متد، منتظر دریافت هیچ نتیجه ای از فراخوانی متد نمانده، بلكه متد دو را فراخوانی كرده و بدون اینكه بداند اجرای آن كی به اتمام خواهد رسید كارهای خود را دنبال می كند.
• بارگذاری كلاسهای دور بصورت دلخواه : به كمكJavaSymphony بجای آنكه لازم باشد تمام فایلهای حاوی كلاس های برنامه توزیع شده در تمامی گره های محاسباتی ذخیره شوند، این فایل ها می توانند در زمان نیاز در یك گره به آن گره بارگزاری شده و استفاده شوند. این خصوصیت می تواند باعث كاهش كل حافظه مورد نیاز برنامه توزیع شده شود.
بعلاوه JavaSymphony از اشیاء مانا نیز پشتیبانی می كند. یعنی به برنامه نویس اجازه میدهد اشیاء برنامه را در حافظه های جانبی ذخیره كرده و بازیابی كند. این ابزار نیازی به هیچ گونه تغییردر زبان جاوا یا JVM یا كامپایلر جاوا نداشته و بصورت كتابخانه ای از Class ها پیاده سازی شده و قابل استفاده است. JavaSymphony براساس سیستم های مبتنی برAgent ساخته شده و فعلا در حال ارزیابی است.
2. 2. معماری مجازی توزیع شده گی پویا (Dynamic Virtual Distributed Architectures)
JavaSymphony از مكان یابی, بارگذاری متعادل و حركت اشیاء بین گره های محاسباتی به صورت اتوماتیك پشتیبانی می كند (بدون اینكه برنامه نویس دخالتی داشته باشد) اما تجربه نشان داده كه سیستمهای تمام اتوماتیك فعلی معمولا نمی توانند اطلاعات كافی (به اندازه برنامه نویس) در مورد ساختار سیستم توزیع شده, بدست آورندو در نتیجه كارایی ضعیفی را به دنبال دارند.
از این رو درJavaSymphony یك حالت نیمه اتوماتیك برای پیاده سازی و پیكربندی سیستم توزیع شده ارائه شده است. به این صورت كه بسیاری از كارهای جزیی و خسته كننده و مسائل سطح پایین برای پیاده سازی سیستمهای توزیع شده (مانند ایجاد و استفاده از پروكسی ها ، برنامه نویسی سوكتها و…) توسط JavaSymphony انجام می شود اما تصمیم گیری های مهم و استراتژیك در مورد ساختار سیستم توزیع توسط برنامه نویس صورت می گیرد. برنامه نویس جهت تعریف ساختار سیستم توزیع شده كارهای زیر را انجام می دهد:
• تعریف یك معماری مجازی توزیع شده با مشخص كردن گره های محاسباتی، خوشه ها، سایتها ودامنه ها: این معماری برای اجرای برنامه كاربردی بصورت توزیع شده برروی شبكه استفاده خواهد شد. برنامه نویس میتواند برخی شرایط سیستمی برای گره های محاسباتی تعریف كند تا تنها كامپیوترهایی در شبكه كه حائز آن شرایط هستند (چه نرم افزای و چه سخت افزاری) بعنوان منابع محاسباتی فیزیكی برای معماری تعریف شده, استفاده شوند.
• استقرار داده ها و اشیاء با توجه به ارتباط آنها با داده های دیگربر روی گره ها : بعنوان مثال اشیایی كه ارتباط زیادی با هم دارند ممكن است برروی گره های محاسباتی نزدیك به هم و یا حتی برروی یك گره بارگذاری شوند.
• استقرار اشیاء یا داده ها برروی گره های محاسباتی با توجه به شرایط سیستمی آنها : بعنوان مثال استقرار اشیا در گره هایی با كمترین میزان كاری یا بالاترین حافظه در دسترس.
• بارگذاری كدهای مورد نیاز (كد كلاسها) در گره های محاسباتی هنگام نیاز به آنها: با استفاده از این ویژگی نیازی به ذخیره سازی كد تمام كلاسهای برنامه توزیع شده در تمام گره های محاسباتی نبوده و میتوان كد هر كلاس را هنگام نیاز به آن در یك گره خاص به آن بارگذاری كرد.
JavaSymphony مفهومی بنام Dynamic Virtual distributed architectures (كه از این به بعد معماری مجازی می نامیم) ارائه می كند, كه به برنامه نویس امكان تعریف ساختار شبكه ای از منابع محاسباتی را می دهد. پس از تعریف این ساختار می توان اشیاء مختلف موجود در برنامه را در مولفه های تشكیل دهنده این معماری مستقر كند یا اشیاء موجود درگره های محاسباتی را به گره های دیگر حركت دهد. همچنین می تواند بین تعداد اشیاء بارگذاری شده در گره های مختلف موازنه ایجاد كند ونیز كدهای لازم را هنگام نیاز به آنها درهر یك ازگره ها بارگذاری كند. هر معماری مجازی در حقیقت دامنه ای است كه به سایتها، خوشه ها وگره هایی تقسیم شده است. (شكل 1) در پایین ترین سطح گره هایا گره های محاسباتی قرار دارند كه در حقیقت معادل یك منبع محاسباتی فیزیكی مانند PC یا WorkStation میباشند. گره های مختلف می توانند با یكدیگر تركیب شده و تشكیل یك خوشه را دهند كه در حقیقت معادل یك شبكه محلی از چند PC یا WorkStation است سطح بعدی را سایت ها تشكیل می دهند كه مجموعه ای از خوشه های متصل به هم مثلا به وسیله یك WAN یا LAN میباشند. در بالاترین سطح سایتها می تواننند با یكدیگر تركیب شده و تشكیل یك دامنه (domain) را دهند كه در حقیقت یك شبكه محاسباتی بزرگ و توزیع شده است. توجه داشته با شید كه هرگره متعلق به یك سه تایی یكتای (خوشه- سایت – دامنه) می باشد بطور مشابه هر خوشه یه یك دو تایی یكتای (سایت -دامنه) وهرسایت به یك دامنه خاص تعلق دارد.
شکل 1 . معماری مجازی
معماری مجازی می تواند به صورت پویا ایجاد شده یا تغییر داده شود هرمؤلفه ازیك معماری مجازی( گره ، سایت ، خوشه ، دامنه) توسط مدیری كه قابل رویت برای برنامه نویس نبوده و به عنوان بخشی ازJRS پیاده سازی شده، كنترل می شود.
2. 3. مدل برنامه نویسی Java Symphony
در حالت كلی هربرنامه كاربردی كه از JavaSymphony استفاده می كند باید ابتدا خود رادر سیستم زمان اجرای JavaSymphony یا(JRS) ثبت یا Register كند. پس از آن می تواند معماری مجازی خود را تعریف كند. اشیاء می توانند هم در گره های محاسباتی محلی و هم درگره های دیگر به صورت دور ایجاد شده وبین گره های شبكه حركت كنند. برای ارتباط بین اشیاء موجود در سیستم توزیع شده نیز JavaSymphony از سه مدل فراخوانی متدهای دورپشتیبانی می كند ( سنكرون، آسنكرون و یك طرفه). در نهایت برنامه كاربردی قبل از اتمام, خود را از وضعیت ثبت شده در JRS خارج می كند((unregister این كار باعث آزاد شدن منابع JRS و حافظه تخصیص یافته به برنامه خواهد شد.
بخشی از مقاله انگلیسی:
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 … 2.) 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.
پروداک فایل
تسهیل در دسترسی به فایل مورد نظر در فروشگاه های فایل دارای نماد اعتماد الکترونیکی
جستجو و دریافت سریع هر نوع فایل شامل: دانشگاهی: مقاله، تحقیق، گزارش کارآموزی، بررسی، نظری، مبانی نظری
آموزشی و تدریسی: پاورپوینت، فایل، پروژه، درسنامه، طرح درس روزانه، درس پژوهی، یادگیری، آموزش، معلم، دانشآموزان، سناریوی آموزشی، بکآپ کودک.
فناوری و دیجیتال: دانلود، بکآپ، ppt، اتوکد، قابل ویرایش، حسابداری، سامسونگ دیجیتال، pdf.
روانشناسی و علوم تربیتی: پاورپوینت، طرح درس نویسی
هنری و طراحی: معماری، عکاسی، وکتور، طراحی
سایر: تم تولد، بکآپ تولد، ابتدایی، خرید دانلود رایگان، اصول، کورل، بکآپ آتلیه