簡易檢索 / 詳目顯示

研究生: 劉晏辰
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.

    摘要 I ABSTRACT II 致謝 III 目錄 IV 圖目錄 VI 表目錄 VIII 第一章 緒論 1 1.1 研究背景與動機 1 1.2 研究目的與貢獻 2 1.3 章節介紹 3 第二章 背景知識與文獻討論 5 2.1 微服務架構 5 2.2 高階訊息佇列協定 8 2.2.1 RABBITMQ 9 2.3 容器化技術 13 2.4 分散式協調服務 15 第三章 需求定義 17 3.1 需求目標 17 3.2 元件介紹 19 3.2.1 分散式協調服務 19 3.2.2 入口閘道 20 3.2.3 監控程式 20 3.2.4 訊息仲介 20 3.2.5 控管閘道 21 第四章 服務設計 22 4.1 分散式協調服務 22 4.2 入口閘道 24 4.3 控管閘道 25 4.4 監控程式 28 4.5 基於容器技術的微服務節點 31 4.6 訊息仲介 33 第五章 雛形系統實作 39 5.1 ZOOKEEPER架構整合實作 39 5.2 節點部署方式 41 5.3 完整架構流程 42 第六章 實驗與結果 44 第七章 結論與未來方向 51 參考文獻 52

    [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.

    QR CODE