一.什么是微服務?
分布式服務組成的系統,主要是為了項目的解耦,將功能分解到離散的各個服務當中,傳統的(例如:SSM,SSH )不靈活,構建時間長,任何小修改都要重構整個項目,一個小項目可能導致整個項目掛掉,所以就有了微服務,我們可以把整個系統根據業務拆分成多個子系統,每個子系統可以部署多個應用,多個應用使用負載均衡。
二.微服務架構需要的功能或使用場景
1.把整個項目根據業務拆分成多個子項目。
2.每個子項目可以部署多個應用,多個應用之間可以進行負載均衡。
3.需要一個服務注冊中心(eureka) 所有的服務都在注冊中心注冊,負載均衡(Ribbon) 也是通過在注冊中心注冊的服務來使用一定的策略來實現。
4.所有的客戶端都通過同一個網關(ZUUl) 地址訪問后台的服務,通過路由配置,網關來判斷一個URL請求有哪個服務處理。請求轉發到服務上的時候也使用負載均衡。
5.服務之間有時候也需要相互訪問,例如有一個用戶模塊,其他服務在處理一些業務的時候,要獲取用戶服務的用戶數據
6.需要一個斷路器,及時處理服務調用時的超時和錯誤,防止由於其中一個服務的問題而導致整個系統的癱瘓。
7.還需要一個監控功能,監控每個服務調用花費的時間
目前主流的微服務框架:Dubbo、 SpringCloud、thrift、Hessian等
二.微服務架構的優點
1.易於開發和維護,一個微服務只關注一個業務,業務清晰,代碼量少
2.單個微服務代碼量少,啟動快
3.局部修改容易部署
4.技術不受限制
三.微服務面臨的挑戰
1.運維要求高
2.使用分布式系統,系統容錯,網絡延遲,分布式事務等巨大的挑戰
3.接口調用成本高,微服務之間通過接口通信,如果修改一個微服務的API,可能所有使用該接口的微服務都需要調整
4.很多服務可能會使用相同的功能,導致代碼重復
微服務整體架構圖
四.springcloud介紹
1.springcloud是基於springboot 開發的微服務框架,是目前比較完整的微服務解決方案框架,它的內容包括:服務注冊(eureka),服務調用(feign) ,負載均衡(Ribbon) ,斷路器(Hystrix)等
springcloud包含多個子項目:
springcloud config:分布式配置中心
springcloud netfix:核心組建
ureka:服務注冊中心
Ribbon:客戶端負載均衡
Feign: 服務調用組建
Hystrix:服務保護框架(熔斷器)
Zuul: 網關組建,提供智能路由,訪問過濾等功能