論文使用權限 Thesis access permission:自定論文開放時間 user define
開放時間 Available:
校內 Campus: 已公開 available
校外 Off-campus: 已公開 available
論文名稱 Title |
即時推播系統設計與實作 Realtime Push System Design and Implementation |
||
系所名稱 Department |
|||
畢業學年期 Year, semester |
語文別 Language |
||
學位類別 Degree |
頁數 Number of pages |
55 |
|
研究生 Author |
|||
指導教授 Advisor |
|||
召集委員 Convenor |
|||
口試委員 Advisory Committee |
|||
口試日期 Date of Exam |
2016-08-26 |
繳交日期 Date of Submission |
2016-09-06 |
關鍵字 Keywords |
HTML5、WebSocket、Apache Kafka、Node.js、LINE、Facebook Messager、Google Cloud Messaging、推播服務 Apache Kafka, Google Cloud Messaging, LINE, Node.js, WebSocket, HTML5, Facebook Messager, Push service |
||
統計 Statistics |
本論文已被瀏覽 5697 次,被下載 114 次 The thesis/dissertation has been browsed 5697 times, has been downloaded 114 times. |
中文摘要 |
推播服務為網際網路一項重要服務,Google的免費推播服務Google Cloud Messaging就是一項推播服務標準介面,另外,一些社群網路軟體,也提供推播的服務,例如:LINE、Facebook messager、Microsoft Skype。然而上述這些服務,並非適合所有的應用,特別是API (Application Programming Interface)常常不符合需要,或者傳遞訊息的長度或型式(如:只允許文字訊息)。所以開發新的推播服務,是有其需求,本論文就是研究如何設計與建置一個推播服務系統。 本論文採用Apache kafka開放軟體做為訊息儲存系統,考慮以web-programming為基礎的API,以達到跨平台的目的。網頁是基於瀏覽器去讀取,所以平台的差異自然是由瀏覽器去處理,加上HTML5轉apk和ipa的工具,無論是要使用瀏覽器、Android或者iOS的App,都是同樣的程式去執行,充分展現跨平台的優點。因此本論文將以Node.js為主軸,連接Apache Kafka和HTML5,完成一個跨平台的即時推播系統介面。 |
Abstract |
Push service is an important Internet service, which has a big capacity buffering system to keep all messages, push engine to forward messages to their receiver, and API (Application Programming Interface) to provide service interface to users. Google GCM (Google Cloud Messaging) is a well-known free push service. The other social network applications, e.g., LINE, Facebook messager, Microsoft skype, have similar push service. However, not all these service can meet requirements of all applications because of constraints in these services, for example, message length and type (multimedia or text only), API, etc. It may be required to design and implement a customized push service. In this thesis, we develop a push system, which contains a buffering subsystem, push engine and API. With web-based design, it is platform-independent and can run over different operating systems. It guarantees reliability, allows multimedia message, and is real-time. HTML5, Apache Kafka and Node.js are the main tools used in our system. Finally, there are performance comparison illustrated in the experiment report in the thesis. |
目次 Table of Contents |
論文審定書 i 誌謝 ii 摘要 iii Abstract iv 目錄 v 圖次 viii 表次 ix 第一章 緒論 1 1.1. 研究動機與目的 1 1.2. 論文架構 2 第二章 研究背景 3 2.1. Google Cloud Messaging 3 2.2. HTML5 4 2.3. JavaScript 5 2.4. Node.js 6 2.4.1. NPM 7 2.4.2. Kafka-node 7 2.5. WebSocket 7 2.5.1. HTTP/1.1 v.s. WebSocket 7 2.5.2. polling v.s. WebSocket 9 2.6. Apache ZooKeeper 11 2.7. Apache Kafka 12 2.7.1. Kafka簡介 12 2.7.2. Kafka架構 13 2.7.3. Kafka特色 14 2.8. JSON 14 第三章 系統設計及架構 15 3.1. 系統需求 15 3.1.1. Server端需求 15 3.1.2. Client需求 15 3.2. 系統架構 17 第四章 系統實作 18 4.1. Producer端 18 4.1.1. Kafka broker開啟刪除權限 18 4.1.2. 增加傳輸上限 19 4.1.3. 列出當前已存在topic 19 4.1.4. 即時動態建立/刪除topic 21 4.1.5. 刪除topic 22 4.1.6. 建立資料格式 22 4.1.7. Socket.io 24 4.2. Consumer端 25 4.2.1. 自動化增加topic 25 4.2.2. 自動化刪除topic 28 4.2.3. 訂閱/取消訂閱 29 第五章 系統成果展示 31 5.1. API應用呈現 31 5.2. 效能比較 37 第六章 結論與未來展望 38 參考文獻 39 附錄A 42 Kafka環境建置與操作 42 Node.js環境建置 43 |
參考文獻 References |
[1] Y. Alghamdi and P. Seeling, "Activity-based cloud sending: Push services for user device multiplicity," IEEE Consumer Communications and Networking Conference , 2015. [2] R. R. Brooks and C. Vutsinas, "Kafka in the academy: a note on ethics in IA education," IEEE Security & Privacy vol. 4, pp. 50-53, 2006. [3] M. Doyle. (2011). JSON Basics: What You Need to Know. Available: http://www.elated.com/articles/json-basics/ [4] K. Goodhope, J. Koshy, J. Kreps, N. Narkhede, R. Park, J. Rao, et al., "Building LinkedIn's Real-time Activity Data Pipeline.," Data Eng., 2012. [5] S. K. Gudla, J. Bose, S. Sunkara, and S. Verma, "A unified Push Notifications service for mobile devices," IEEE Electronics, Computing and Communication Technologies , 2015. [6] D. Herman, Effective JavaScript: 68 Specific Ways to Harness the Power of JavaScript: Addison-Wesley Professional, 2012. [7] S. Jobs. (2010). Thoughts on Flash. Available: http://www.apple.com/hotnews/thoughts-on-flash/ [8] A. Kafka. Kafka 0.8.2 Documentation. Available: http://kafka.apache.org/082/documentation.html [9] K. Kowal. (2009). CommonJS effort sets JavaScript on path for world domination. Available: http://arstechnica.com/business/2009/12/commonjs- effort-sets-javascript-on-path-for-world-domination/ [10] J. Kreps, N. Narkhede, and J. Rao., "Kafka: A distributed messaging system for log processing.," NetDB, 2011. [11] A. Kumar and S. Johari, "Push notification as a business enhancement technique for e-commerce," IEEE Image Information Processing , 2015. [12] N. Li, Y. Du, and G. Chen, "Survey of Cloud Messaging Push Notification Service," IEEE Information Science and Cloud Computing Companion, 2013. [13] P. Li, Y. Chen, T. Li, R. Wang, and J. Sun, "Implementation of Cloud Messaging System Based on GCM Service," IEEE Computational and Information Sciences, 2013. [14] R. Li and X. Luo, "Inspection of Hidden Dangers Based on Cloud Messaging Push Service," IEEE UIC-ATC-ScalCom, 2015. [15] X. Lu, Z. Yu, and A. Makarenko. (2015). kafka-node Client for Apache Kafka v0.8+. Available: https://www.npmjs.com/package/kafka-node [16] P. Lubbers, F. Greco, and K. Corporation. HTML5 WebSocket: A Quantum Leap in Scalability for the Web. Available: http://www.websocket.org/quantum.html [17] G. C. Messaging. (2016). Set up a GCM Client App on Android Available: https://developers.google.com/cloud-messaging/android/client [18] C. Mike, Node.js in Action: Manning Publications, 2013. [19] T. Norris. (2015). Understanding the Node.js Event Loop. Available: https://nodesource.com/blog/understanding-the-nodejs-event-loop/ [20] G. Wang, J. Koshy, S. Subramanian, K. Paramasivam, M. Zadeh, N. Narkhede, et al., "Building a replicated logging system with Apache Kafka.," PVLDB, 2015. [21] Z. Wang, W. Dai, F. Wang, H. Deng, S. Wei, X. Zhang, et al., "Kafka and Its Using in High-throughput and Reliable Message Distribution," IEEE Intelligent Networks and Intelligent Systems, 2015. [22] F. Yang, E. Tschetter, X. L. e, N. Ray, G. Merlino, and D. Ganguli, "Druid: a real-time analytical data store.," In proceedings of the 2014 ACM SIGMOD international conference on management of data., 2014. [23] Y. S. Yilmaz, B. I. Aydin, and M. Demirbas, "Google cloud messaging (GCM): An evaluation," IEEE Global Communications Conference, 2014. [24] E. Zeydan, U. Yabas, S. u. S?z?er, and a. r. z. Etemo?lu, "Streaming alarm data analytics for mobile service providers," IEEE Network Operations and Management Symposium, 2016. [25] Y. Zhao, K. Kim, and N. Venkatasubramanian, "Dynatops: A dynamic topic- based publish/subscribe architecture.," DEBS, 2013. [26] 郭家寶, Google御用網頁語言Node.js : 一流程式設計師養成精華. 臺北市: 佳魁, 2014. [27] 陳惠貞, HTML 5.CSS 3 JavaScript jQuery Mobile跨裝置網頁設計. 臺北市: 碁峰, 2013. [28] 陳會安, JavaScript+jQuery Mobile+Node.js跨平台網頁設計範例教本. 臺北 市: 碁峰, 2014. [29] 數位新知 and 陳婉凌, HTML5+CSS3+jQuery Mobile輕鬆打造App與行動 網站. 新北市: 博碩, 2014. [30] 錢逢祥, 蔡政崇, and 楊傑文, Node.js[模組參考手冊]. 臺北市: 松崗, 2015. |
電子全文 Fulltext |
本電子全文僅授權使用者為學術研究之目的,進行個人非營利性質之檢索、閱讀、列印。請遵守中華民國著作權法之相關規定,切勿任意重製、散佈、改作、轉貼、播送,以免觸法。 論文使用權限 Thesis access permission:自定論文開放時間 user define 開放時間 Available: 校內 Campus: 已公開 available 校外 Off-campus: 已公開 available |
紙本論文 Printed copies |
紙本論文的公開資訊在102學年度以後相對較為完整。如果需要查詢101學年度以前的紙本論文公開資訊,請聯繫圖資處紙本論文服務櫃台。如有不便之處敬請見諒。 開放時間 available 已公開 available |
QR Code |