研究生: |
劉晏辰 Yen-Chen Liu |
---|---|
論文名稱: |
無單一脆弱點之微服務容錯架構之設計與實作 On Design and Implementation a Fault-Tolerant Microservice Architecture without Single Point of Failure |
指導教授: |
查士朝
Shi-Cho Cha |
口試委員: |
羅乃維
Nai-Wei Lo 鄭欣明 Shin-Ming Cheng |
學位類別: |
碩士 Master |
系所名稱: |
管理學院 - 資訊管理系 Department of Information Management |
論文出版年: | 2019 |
畢業學年度: | 107 |
語文別: | 中文 |
論文頁數: | 66 |
中文關鍵詞: | 微服務 、高可用性 、單一脆弱點 、多通道傳輸 |
外文關鍵詞: | microservices, high availability, single point of failure, multi-channel transmission |
相關次數: | 點閱:231 下載:5 |
分享至: |
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報 |
因為雲端運算的興起,越來越多單位願意而且能夠採用微服務架構去發展其系統,而能將運算資源做最有效的配置。然而,過去的微服務架構多半著重於資源運用的最佳化,並未考慮到元件發生錯誤的影響。如果一項服務是由許多微服務組成,在處理該服務的要求時,在其中一個微服務節點當機的情況下,若該服務沒有備援,就需要等待服務重啟。如果我們讓每一個微服務節點都有一個(含)以上的備援節點時,且將要求同時發送至各節點執行;如此一來即使有節點發生故障,仍可以使用其他節點運算的結果,而不需要等待系統重啟。
有鑒於此,本研究提出一套無單一脆弱點的微服務容錯架構,針對服務的每個微服務節點,該架構能夠佈署複數的微服務節點,而能夠在單一節點發生錯誤時,另外的節點仍能夠持續提供服務,而使得服務不會中斷。相較於既有微服務技術與研究,本研究是第一個針對服務節點失誤後重啟的延遲,而使用無單一脆弱點的微服務架構,來減少延遲。此外本研究基於網路服務的情境,實作雛型系統,依實驗結果相較於傳統的微服務架構,本研究所提出的架構,在節點可能出錯的情況下,有著更好的執行效率。因此,本研究所提出的架構,可望提升採用微服務架構之系統的穩定度。
Due to the advances of cloud computing, more and more companies are willing and able to adopt microservice architecture to develop their systems. In a microservice architecture, a service is composed of a set of microservices. Therefore, a system can allocate resources to different kinds of microservice for better resources utilization. However, current microservice architecture schemes do not address the recovery time when a service component fails. If a service component crashes, the service needs to start a new instance of the component and resend the request to the new instance. In this case, if a service has more than one microservice components to execute a task simultaneously, when one microservice component fails, the service can use the result of the other component.
In light of this, this study proposes a fault-tolerant microservice architecture without single point of failure. The architecture can deploy multiple instances of a service component to deal with a service request. While the architecture dispatches a request to multiple instances of a service component simultaneously, a service can keep alive even though a service component instance is crashed. To the best of our knowledge, this study is the first work discussing how to establish a microservice architecture service without single point of failure. This study also implements a prototype system and perform experiments based on the system. The experimental results show that the proposed framework is more efficient than a traditional microservice service when a service component fails. Therefore, the architecture proposed in this study can hopefully improve the stability of systems using microservice architecture.
[1] T. Mauro, "Adopting Microservices at Netflix: Lessons for Architectural Design," February 2015. [Online]. Available: https://www.nginx.com/blog/microservices-at-netflix-architectural-best-practices/. [Accessed May 2019].
[2] A. Karmel, R. Chandramouli and M. Iorga, "NIST Definition of Microservices, Application Containers and System Virtual Machines," National Institute of Standards and Technology, February 2016. [Online]. Available: https://csrc.nist.gov/publications/detail/sp/800-180/draft. [Accessed May 2019].
[3] M. Fowler and J. Lewis, "Microservices," 2014. [Online]. Available: https://martinfowler.com/articles/microservices.html. [Accessed May 2019].
[4] E. Reinhold, "Rewriting Uber Engineering: The Opportunities Microservices Provide," [Online]. Available: https://eng.uber.com/building-tincup/. [Accessed May 2019].
[5] A. O. T. CURVE, "What eBay looks like under the hood," [Online]. Available: https://www.infoworld.com/article/3041064/what-ebay-looks-like-under-the-hood.html. [Accessed May 2019].
[6] J. Polites, "Cloud Functions serverless platform is generally available," August 2018. [Online]. Available: https://cloud.google.com/blog/products/gcp/cloud-functions-serverless-platform-is-generally-available. [Accessed June 2019].
[7] Amazon, "AWS Step Functions Use Cases," [Online]. Available: https://aws.amazon.com/tw/step-functions/use-cases/. [Accessed June 2019].
[8] Microsoft, "Azure Functions," [Online]. Available: https://azure.microsoft.com/zh-tw/services/functions/. [Accessed June 2019].
[9] ISO, "Information technology -- Advanced Message Queuing Protocol (AMQP) v1.0 specification," ISO/IEC 19464:2014, [Online]. Available: https://www.iso.org/standard/64955.html. [Accessed May 2019].
[10] J. O'Hara, "Toward a commodity enterprise middleware," Queue, pp. 48-55, 2007.
[11] W. Felter, A. Ferreira, R. Rajamony and J. Rubio, "An updated performance comparison of virtual machines and Linux containers," ISPASS 2015 - IEEE International Symposium on Performance Analysis of Systems and Software, pp. 171-172, 2015.
[12] RabbitMQ, "Reliability Guide," [Online]. Available: https://www.rabbitmq.com/reliability.html. [Accessed May 2019].
[13] RabbitMQ, "Which protocols does RabbitMQ support?," [Online]. Available: https://www.rabbitmq.com/protocols.html. [Accessed May 2019].
[14] RabbitMQ, "AMQP 0-9-1 Model Explained," [Online]. Available: https://www.rabbitmq.com/tutorials/amqp-concepts.html. [Accessed May 2019].
[15] C. Anderson, "Docker," IEEE Software, pp. 102-c3, 2015.
[16] Docker, "Limit a container's resources," [Online]. Available: https://docs.docker.com/config/containers/resource_constraints/. [Accessed June 2019].
[17] Apache, "Apache ZooKeeper," [Online]. Available: https://zookeeper.apache.org/. [Accessed June 2019].
[18] T. Point, "Zookeeper - Fundamentals," [Online]. Available: https://www.tutorialspoint.com/zookeeper/zookeeper_fundamentals.htm. [Accessed May 2019].
[19] L. B. Goel and R. Majumdar, "Handling mutual exclusion in a distributed application through Zookeeper," 2015 International Conference on Advances in Computer Engineering and Applications, pp. 457-460, 2015.
[20] X. J. Hong, H. S. Yang and Y. H. Kim, "Performance Analysis of RESTful API and RabbitMQ for Microservice Web Application," 2018 International Conference on Information and Communication Technology Convergence (ICTC), pp. 257-259, 2018.
[21] O. Zimmermann, "Microservices tenets: Agile approach to service development and deployment," Computer Science - Research and Development 32, pp. 301-310, July 2017.