微服務,spring boot,spring cloud

什麼是微服務spring

  將複雜的業務系統根據業務拆分紅多個子系統協同完成主體業務。數據結構

微服務的九大特性(根據Martin Fowler 在 Microservices 中的概括)負載均衡

  服務組件化(靈活拆裝,低耦合)框架

  按業務組織團隊(分工驅動團隊的技術知識儲備)微服務

  作產品的態度,團隊對整個生命週期負責,業務進行拆分後,每一個模塊的的業務小而精,更容易作縱向擴展,把小功能作精組件化

  智能端點和啞管道,組件間從原先的方法調用的交互方式變爲基於粗粒度的通訊協議(Http的RESTful API,HSF,RabbitMQ)性能

  去中心化管理,不須要再爲整個項目(諸多子業務的組合)定義統一的標準,意味着每一個子模塊要解決一些模塊特有的問題能夠靈活的引進一些技術,能夠避免單體項目在總體的標準和框架限制下,一些技術沒法引入,致使短板被放大,團隊花大量的時間解決一些簡單的問題(重複造輪子)測試

  去中心化管理數據,數據結構更優,性能提高空間更大。設計

  基礎設施自動化,自動化測試、自動化部署日誌

  容錯設計,微服務的項目分部和部署比單體服務更加的複雜(總體項目協同角度看),須要更強的容錯機制,否則一個服務的問題蔓延(錯誤自動回覆,日誌分析、監控(很是重要),斷路器)。

  演進式設計,微服務的設計成本比較高,對團隊來講要服務處更大的代價,不成熟的團隊能夠先以單體系統進行開發部署和實施,在後續業務擴展的過程當中,再慢慢將一些模塊進行抽離,圍繞着住業務進行微服務改造。

微服務帶來的問題

  事務,最終一致性(從新發起調用,日誌分析,結果分析)

  容錯,日誌分析、監控

微服務解決方案

  spring cloud

  註冊中心 Eureka Server

    服務管理,一個雙層map管理註冊過來的服務 Mao<ServerName,Map<InstanceName,Instance>>.

      註冊功能

      註銷功能

      按時剔除無意跳的服務

      剔除無效服務功能(一些服務雖然有心跳,但沒法提供正常服務,經過調用spring boot整合的health監控端點實現)

        獲取服務列表功能

      刷新心跳接口

  註冊客戶端 Eureka Client

    服務治理的客戶端,集成到每一個業務系統中,將業務系統提供的服務註冊到註冊中心。

      調用註冊接口進行註冊,維護心跳(定時任務)

      調用註銷接口進行註銷(服務正常關閉或重啓)

      獲取服務列表(定時任務)

 

  負載均衡 Ribbon

    對獲取到的服務列表進行輪詢選擇(或者配置其餘負載均衡方式)

  spring http 

    發起調用

相關文章
相關標籤/搜索