什麼是微服務架構
“微服務”一詞源於Martin Fowler的名爲Microservices的博文。簡單地說,微服務是系統架構上的一種設計風格,它的主旨是將一個原本獨立的系統拆分成許多個小型服務,這些小型服務都在各自獨立的進程中運行,服務之間通過RPC/RESTFul API進行通信協作。
微服務九大特徵
- 服務組件化
- 按業務組織團隊
- 做“產品”的態度
- 智能端點與啞管道
- 去中心化治理
- 去中心化管理數據
- 基礎設施自動化
- 容錯設計
- 演進式設計
Spring Cloud 微服務架構原理
微服務化後,微服務間我們通過 http restful api 通信,問題是調用的服務是一個集羣,我們怎麼知道應該請求哪一個服務?這裏引入Eureka 來解決,微服務將自己的相關信息註冊到Eureka Server, 同時又能拿到別的服務的信息,這樣本地客戶端我們再通過ribbon決策出請求哪一個服務,做負載均衡。然後我們再通過 hystrix 做好熔斷,避免個別服務問題導致整個系統雪崩的問題。微服務化後,服務實例變多了,這些實例很多配置都是相同的,這裏我們使用 Spring Cloud Config 來統一做配置,避免配置複雜繁瑣不一致的問題。以前我們通過nginx這類反向代理軟件來做網關路由,這類需要手動的去維護路由規則和可用服務列表,比較麻煩。spring cloud 提供zuul網關來幫我們簡化這部分工作,可用的服務列表直接從eureka裏取,不需要手動維護了。
Spring Cloud 常用組件
- 服務發現——Netflix Eureka
- 客服端負載均衡——Netflix Ribbon
- 斷路器——Netflix Hystrix
- 服務網關——Netflix Zuul
- 分佈式配置——Spring Cloud Config
Spring Cloud vs Dubbo
- Spring Cloud是Dubbo的超集,定位爲一套完整的微服務解決方案,而Dubbo只是專注於RPC和服務治理。
- Dubbo 採用RPC 長鏈接通信,比Spring Cloud 的http restful 性能要好些,對響應時間要求很高的系統Dubbo有優勢
- Dubbo 的註冊中心依賴 zeekeeper,如果 zeekeeper 出問題就不可用了,而Spring Cloud 的Eureka支持高可用集羣
- Spring Cloud 基於 Spring Boot ,易用性強於Dubbo