微服務,spring boot,spring cloud
什麽是微服務
將復雜的業務系統根據業務拆分成多個子系統協同完成主體業務。
微服務的九大特性(根據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
發起調用
微服務,spring boot,spring cloud