帳號:guest(18.119.142.21)          離開系統
字體大小: 字級放大   字級縮小   預設字形  

詳目顯示

以作者查詢圖書館館藏以作者查詢臺灣博碩士論文系統以作者查詢全國書目勘誤回報
作者:許元駿
作者(英文):YUAN-CHUN HSU
論文名稱:以瀏覽器作為使用RMI通訊架構的分散式計算平台之研究
論文名稱(英文):A Study on Using Web Browsers as Distributed Programming with RMI Infrastructures
指導教授:雍忠
指導教授(英文):Chung Yung
口試委員:楊武
羅壽之
原友蘭
口試委員(英文):Wuu Yang
Shou-Chih Lo
YU-LAN YUAN
學位類別:碩士
校院名稱:國立東華大學
系所名稱:資訊工程學系
學號:610321228
出版年(民國):107
畢業學年度:106
語文別:中文
論文頁數:99
關鍵詞:分散式程式設計RMIJavaScript瀏覽器擴充應用程式
關鍵詞(英文):Distributed ProgrammingRMIJavaScriptBrowser-based applications
相關次數:
  • 推薦推薦:0
  • 點閱點閱:23
  • 評分評分:系統版面圖檔系統版面圖檔系統版面圖檔系統版面圖檔系統版面圖檔
  • 下載下載:2
  • 收藏收藏:0
在這篇論文中,我們針對以瀏覽器作為使用RMI通訊架構的分散式計算平台進行研究。我們設計了一個JavaScript版的RMI雛形模型,其目的是使得以瀏覽器為執行平台的JavaScript分散式程式能有更高的執行效率。
現今有不少團隊計畫讓瀏覽器擁有接近本地端程式一樣的執行效能如Google在Chrome瀏覽器的NaCl/PNaCl計畫、Mozilla在Firefox瀏覽器上的asm.js等,當瀏覽器的JavaScript執行效能提升了,我們便想到了讓不同裝置上JavaScript程式之間連線的模型或是分散式運算的程式模型,接著發現在瀏覽器為執行平台實作分散式計算的研究並不多,由此引發我們研究以瀏覽器為執行平台的分散式通訊架構的動機。
一般分散式系統的通訊架構分為四種 [3],分別是: 遠端程式呼叫( Remote procedure call )、遠端物件調用( Remote object invocation )、以訊息為導向的通訊( Message-oriented communication ),以資訊流為導向的通訊( Stream-oriented communication )。其中我們選擇研究遠端物件調用的JAVA-RMI為基礎, JAVA-RMI通訊架構有可攜性、跨平台、使用者不需接觸到底層通訊等等好處。很適合我們實作在以瀏覽器為基礎的分散式計算平台上,所以本論文進行了JavaScript版的RMI雛型模型的設計與實作,稱為JS-RMI。
JS-RMI是一個在以瀏覽器為計算平台的環境執行分散式程式的雛型模型,這個模型的設計符合ECMAScript 6之JavaScript engine的開發環境基礎上,以Google Chrome瀏覽器為執行環境,並建構在Chrome Packaged App之上。JS-RMI參照了JAVA-RMI標準的通訊機制,讓JavaScript的程式能夠以遠端物件調用的方式分散式執行。JS-RMI的設計希望讓使用者執行分散式程式時無需觸碰到底層的連線機制、處理資料等工作,就可以擁有像其他現有遠端物件調用方法的使用體驗。JS-RMI的架構分成伺服端與客戶端,其中伺服端程式裡包含註冊程式為後端的監聽程式。使用者執行的分散式程式分散在數個伺服端執行,伺服端程式執行完成後分別傳送數據回客戶端,再由客戶端處理執行結果的數據。
在實作出JS-RMI後,我們先以分散式merge sort程式進行個案研究。在此個案中,我們發現以瀏覽器作為分散式程式的執行平台時,雖然程式的計算效能不如Java Virtual Machine執行Bytecode程式,但是分散式的通訊效能卻較JVM為高。
最後,我們以NASA的 NAS Grid Benchmark進行大型實驗,實驗目的有兩個方面: 一、我們驗證所設計的JS-RMI雛型模型確實可以應用於開發大型分散式軟體,二、我們要對以JS-RMI所開發的分散式軟體之執行效能進行實測,實測的結果,以瀏覽器作為使用RMI通訊架構的分散式計算平台確實可行,而執行效能略低於JVM,但仍在可以接受的範圍。
關鍵字:分散式程式設計、RMI、JavaScript、瀏覽器擴充應用程式。
In this thesis, we focus on using web browsers as a distributed programming environment with RMI infrastructures. We design a JavaScript version of the RMI prototype model to make browser-based distributed computing environments more efficient when executing JavaScript distributed programs.
Today, there are a number of team projects that allow browsers to have similar execution performance as native programs such as Google's NaCl/PNaCl project on Chrome, Mozilla's asm.js project on Firefox, etc. As the performance improves, a communication model is needed to connect the JavaScript programs on different devices. We find that there are not many studies on using the browsers as the computing environment for distributed programs. This motivates us to study the communication infrastructures on browser-based distributed computing environments.
The communication architecture of a general distributed system is divided into four types [3]: remote procedure call, remote object invocation, message-oriented communication, and stream-oriented communication. Among them, we choose to study one of the remote object invocation methods, JAVA-RMI. The JAVA-RMI communication infrastructure has the advantages of portability, cross-platform, and that users do not need to contact the underlying communications. It is very suitable for us to implement on the browser-based distributed computing environments. We design and implement the JavaScript version of the RMI prototype model, called JS-RMI.
JS-RMI is a prototype model designed for executing distributed programs in a browser-based computing environment. This model is designed to conform with the ECMAScript 6 standard JavaScript engine development environment. The Google Chrome browser is used as the execution environment with the Chrome Packaged App. JS-RMI refers to the communication infrastructures of the standard JAVA-RMI, allowing JavaScript programs to be distributedly executed with the remote object invocation model. The architecture of JS-RMI is divided into a server and a client, and the server includes a register whose registry program waits for invocations. The distributed program execution is distributed on several servers. After the execution of the server program is completed, the data is returned to the client, and then the client processes the data of the execution result.
After implementation of JS-RMI, we conduct a case study with a distributed merge sort program. In this case study, we found that when the distributed program is executed on the browser-based environment, although the computation performance is not as good as bytecode on Java Virtual Machine(JVM), the communication performance is better than the JVM.
Finally, we use NASA's NAS Grid Benchmarks for large-scale experiments. The purpose of the experiments is twofold: First, we verify that the JS-RMI prototype model can be applied to develop large-scale distributed software systems. Second, we would like to measure the performance of the distributed programs developed with JS-RMI. The experiment result show that the execution performance of the browser-based distributed computing environment using the RMI communication infrastructure is lower than that of JVM, but still acceptable.
Keywords: Distributed Programming、RMI、JavaScript、Browser-based applications
Chapter 1 引言與動機 1
1.1 研究動機 1
1.2 章節概要 4
Chapter 2 背景與文獻探討 5
2.1 分散式系統的通訊機制 5
2.2 JAVA-RMI 模型 7
2.3 RMI Interfaces 介紹 8
2.3.1 Client Interfaces 介紹 9
2.3.2 Server Interfaces 介紹 10
2.3.3 Registry Interfaces 介紹 11
2.4 以瀏覽器為程式的執行環境 12
2.4.1 基於瀏覽器的執行環境 12
2.4.2 以Google Chrome為程式執行環境 13
2.4.3 JavaScript引擎 14
Chapter 3 JS-RMI雛型模型設計與實作 17
3.1 JS-RMI雛型架構 17
3.2 JS-RMI雛型通訊模型 19
3.3 JS-RMI雛型Client說明 21
3.4 JS-RMI雛型Server說明 22
3.5 JS-RMI雛型Registry說明 23
Chapter 4 案例研究: 合併排序演算法系統 25
4.1 實驗環境 25
4.2 實作合併排序法 27
4.3 一個客戶端對一個伺服端 32
4.4 一個客戶端對兩個伺服端 34
4.5 一個客戶端對四個伺服端 36
4.6 結果分析 38
Chapter 5 大型實驗 39
5.1 FT - Dscrete 3D Fast Fourier Transform 40
5.2 BT - Block Tri-diagonal Solver 48
5.3 MG - Multi-Grid on a Sequence of Meshes 56
5.4 SP - Scalar Penta-diagonal Solver 63
5.5 LU - Lower-Upper Gauss-Seidel Solver 70
5.6 IS - Integer Sort, Random Memory Access 77
5.7 CG - Conjugate Gradient, Irregular Memory Access and Communication 84
5.8 Performance Analysis of I/O-intensive Experiments 91
Chapter 6 結論 96
[1] B. Yee, D. Sehr, G. Dardyk, B. Chen, R. Muth, T. Ormandy, S. Okasaka, N. Narula, and N. Fullagar. Native client: A sandbox for portable, untrusted x86 native code. Security and Privacy, 2009 30th IEEE Symposium on.
[2] Alan Donovan, Robert Muth, Brad Chen, David Sehr. PNaCl: Portable Native Client Executables. white paper, February 2010.
[3] George Coulouris, Jean Dollimore, Tim Kindberg and Gordon Blair, Distributed Systems Concepts and Design(5th Edition). Addison-Wesley, May 2011.
[4] Andrew S. Tanenbaum and Maarten van Steen, Distributed Systems: Principles and Paradigms(2nd Edition). Prentice-Hall, 2006.
[5] M. Golub and D. Jakobović. An Overview of Distributed Programming Techniques, MIPRO, pp. 215-225, June 2005.
[6] Java Remote method invocation Documentation. Retrieved October 31, 2017, from http://docs. oracle.com/javase/7/docs/technotes/guides/rmi/.
[7] Wollrath, A., Riggs, R., & Waldo, J. (1996). A Distributed Object Model for the Java^ T^ M System. Computing Systems, 9, 265-290.
[8] R. Cushing, G. H. H. Putra, S. Koulouzis, A. Belloum, M. Bubak and C. de Laat, Distributed Computing on an Ensemble of Browsers, in IEEE Internet Computing, vol. 17, no. 5, pp. 54-61, Sept.-Oct. 2013.
[9] F. Boldrin, C. Taddia, G. Mazzini, Distributed computing through web browser, in: 2007 IEEE 66th Vehicular Technology Conference, pp. 2020–2024, 2007.
[10] David Herman, Luke Wagner, Alon Zakai. (2014, August 18). asm.js Working Draft — 18 August 2014. Retrieved May 9, 2018, from http://asmjs.org/spec/latest/.
[11] World Wide Web Consortium. WebAssembly. Retrieved May 9, 2018, from https://webassembly.org/.
[12] Axel Rauschmayer. (2015, July). Web Assembly: a binary format for the web. Retrieved May 9, 2018, from http://2ality.com/2015/06/web-assembly.html.
[13] Ecma International. (2015, June), The ECMAScript 2015 Language Specification. Retrieved May 9, 2018, from http://www.ecma-international.org/ecma-262/6.0/.
[14] V8 JavaScript Engine. (2016, August). Firing up the Ignition Interpreter. Retrieved May 9, 2018, from https://v8project.blogspot.com/2016/08/firing-up-ignition-interpreter.html.
[15] Create Your First App - Google Chrome - Chrome: developer. Retrieved June 1, 2016, from https://developer.chrome.com/apps/about_apps.
[16] Matjaz B. Juric, Bostjan Kezmah, Marjan Hericko, Ivan Rozman, and Ivan Vezocnik. Java rmi, rmi tunneling and web services comparison and performance analysis. SIGPLAN Not., 39(5):58–65, May 2004.
[17] Winson Y. S. Li, Shangru Wu, W. K. Chan and T. H. Tse. 2012. JSCloud: Toward Remote Execution of JavaScript Code on Handheld Devices. Quality Software (QSIC), 12th International Conference on.
[18] C. Demarey, G. Harbonnier, R. Rouvoy, P. Merle. Benchmarking the round-trip latency of various java-based middleware platforms, Stud. Inform. Univ, 4:7–24, 2005.
[19] Veldema, Ronald, and van Nieuwpoort (R.). Efficient remote method invocation. Vrije Universiteit Amsterdam, 1998.
[20] W. R. Cook, J. Barfield, Web services versus distributed objects: A case study of performance and interface design, in: 2006 IEEE International Conference on Web Services (ICWS’06), pp. 419–426, 2006.
[21] R. Wijngaart and M. Frumkin. Nas grid benchmarks version 1.0. Technical Report NAS-02-005, NASA Ames Research Center, Moffett Field, CA, July 2002.
[22] Anurag Acharya, Mustafa Uysal, Robert Bennett, Assaf Mendelson, Michael Beynon, Jeff Hollingsworth, Joel Saltz, and Alan Sussman. Tuning the performance of I/O-intensive parallel applications. IOPADS '96. ACM, New York, NY, USA, pp. 15-27, 1996.
[23] Brent Boyer , Robust Java benchmarking, Part 2: Statistics and solutions. Retrieved August 1, 2018, from https://www.ibm.com/developerworks/java/library/j-benchmark2/j-benchmark2-pdf.pdf.
[24] Baggs, Rhoda & Delgado, Heriberto & Bakhtiani, Pratick. (2016). Performance Analysis of I/O-Intensive & CPU-Intensive Benchmarks on Windows 7, 8.1 & Ubuntu 14.04 LTS.
(此全文未開放授權)
01.pdf
 
 
 
 
第一頁 上一頁 下一頁 最後一頁 top
* *