天天看點

自動化測試平台化[v1.0.0][微服務化演進]

微服務是将功能分割成一個一個可以自治管理的子產品,子產品通過REST API或RPC對外提供服務,它隔離了功能子產品,極大地解耦了子產品之間的資料,并且可以通過負載均衡增加單個服務的處理能力,同時也提高了整個系統的擴充能力

Monolith單體架構

早期的軟體運作于單體系統中,功能少且單一,所有代碼在一個項目中,功能上沒有明确的邊界,子產品間函數互相調用,功能子產品之間通過代碼級别的引用建立依賴關系,子產品功能發生變化就不得不考慮依賴關系的影響,随着功能越來越多,整個系統越來越臃腫,最終發展到難以維護的地步,并且性能無法輕松的擴充,總結起來就是擴充能力差、邏輯耦合嚴重、系統更新非常麻煩

分布式架構和SOA

微服務

  • 微服務将團隊分割成一個一個小的團隊,每個團隊負責自己的微服務開發,便于管理,執行力高
  • 服務是高可用的,一個服務可以發起多個程序提供同樣的服務,通過負載均衡算法決定調用哪個程序的服務
  • 非常高的橫向擴充能力,一個服務遇到瓶頸,可以通過啟動更多的服務程序來提高并發處理能力
  • 灰階釋出,微服務架構下的缺陷修複,不再需要統一的版本控制,如果一個問題可以很簡單的修複,并且這個服務在系統中運作了100個程序,那麼可以先給10個程序做更新,然後看看實際運作過程中是否有問題也就是測試結果而定是否要更新其他程序,即便有問題也隻是影響了10%的流量,可以回退版本繼續修複

微服務難題

  • 過于自治的服務導緻聯調成本巨大,特别是對于接口的定義頻繁變動的團隊而言,溝通成本也巨大
  • 資料一緻性問題,服務被拆成了小塊,有些操作就要有事務的概念,因為服務不允許存在狀态,當一個事務包含多個微服務的調用的時候就要解決資料的競争問題,也就是資料一緻性問題
  • 運維難度變大,随着服務越來越多,運維難度也逐漸加大,對CICD的成熟程度是個考驗

繼續閱讀