【Microservice】Microservice Common Sense

 微服務是一種應用程序架構風格,它將應用程序劃分爲組件,其中每個組件都是一個完整但微型的應用程序,專注於根據單一責任原則生成單個業務任務。從GUI到數據庫或從服務API到數據庫,以便不同的GUI和客戶端應用程序可以重用相同的業務任務功能。每個微服務都有明確定義的接口和依賴關係(例如,對於其他微服務和外部資源),以便微服務可以相當獨立地運行。

        微服務的宗旨:使得開發更高效。通過最大限度地減少人與人之間的溝通和協調它(少一些會議多一些開發等),以及減少變更範圍和風險來加速交付。

       微服務架構的目標是將app組件彼此完全decouple/分離,以便可以維護、擴展等。微服務架構如下:

===========SOA VS Microservices】================

·     SOA/service-oriented architecture : Focus on reuse, technical integration issues, technical APIs

·     Microservices: Focus on functionaldecomposition, business capabilities, business APIs

翻譯爲:

·     SOA:專注於重用,技術集成問題,技術API

·     微服務:專注於功能分解,業務功能,業務API

 

=====Key tenets of a microservices architecture====

1)   大型整體結構分爲許多小型服務

·      每個服務都在自己的進程中運行

·      適用的雲規則是每個容器一服務

2)服務針對單個功能進行了優化

·      每項服務只有一個業務功能

·      單一責任原則:微服務應該只有一個改變的理由

3) 通過RESTAPI和消息代理進行通信

·      避免通過DB通信引入緊密耦合

4) 每個服務定義CI/CD(持續集成和持續部署)

·      服務以不同的速度發展

·      設置架構原則以指導系統進化發展

5) 每個服務定義HA(高可用性)和羣集決策

·      一種規模或擴展策略並不適合所有微服務

·      並非所有服務都需要擴展,其他微服務需要自動擴展到大數

===========【Monolithic VS Microservices】===========

/

Monolithic

Microservice

架構

以單個邏輯可執行文件構建

以一套小型服務構建

模塊化

基於語言功能

基於業務能力

敏捷度

更改涉及構建和部署整個應用程序的新版本

更改可以獨立應用於每個服務

擴展

當有一部分是瓶頸時,需要整個應用程序進行擴展。

每個服務在需要時獨立擴展

實現

通常全部由一種編程語言開發實現

每種服務都可以用不同的編程語言開發實現

可維護性

大型代碼庫對新開發人員是一種intimidating/威脅

較小的代碼庫更易於管理

部署

複雜部署,需要維護窗口和計劃停機時間。

簡單部署,因爲每個服務都可以單獨部署,停機時間最短。

       微服務最大的要求是操作複雜性,因爲有更多的移動部件需要監控和管理,一個大型的業務需求有可能需要上千個應用程序,這就需要管理和監控上千個應用程序運行情況,這對企業來說是個巨大的挑戰。微服務存在的隱患:

·     微服務重視服務之間的重用獨立性,重用會產生依賴關係就會存在團隊之間的交互因此無法獨立工作。

·     獨立運行的部分越多,分佈式系統就會越成爲問題(網絡延遲、斷開連接、容錯、序列化);那麼找到bugEnd2End測試難度就會增加。

============= Microservice Advantages ==============

·     獨立開發,並對其他服務存在有限的、顯式的依賴

·     可以由一個所有團隊成員都理解整個代碼庫的小團隊開發

·     根據本團隊時間表開發,以便獨立於其他服務提供新版本

·     獨立擴展和失敗,可以隔離任何問題,不影響整個app

·     每種服務都可以用不同的語言開發實現

·     管理自己的數據以選擇最佳技術和架構

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章