簡介
Spring Cloud
是一個基於Spring Boot
實現的雲應用開發工具,它為基於JVM
的雲應用開發中涉及的配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、全域性鎖、決策競選、分散式會話和叢集狀態管理等操作提供了一種簡單的開發方式。
服務化的核心就是將傳統的一站式應用根據業務拆分成一個一個的服務,而微服務在這個基礎上要更徹底地去耦合(不再共享DB
、KV
,去掉重量級ESB
),並且強調DevOps
和快速演化。
DevOps
:要求開發、測試、運維進行一體化的合作,進行更小、更頻繁、更自動化的應用釋出,以及圍繞應用架構來構建基礎設施的架構。這就要求應用充分的內聚,也方便運維和管理。
為什麼要使用,和之間的服務化解決方案相比的優勢(舉例:Nginx
)
最初的服務化解決方案是給提供相同服務提供一個統一的域名,然後服務呼叫者向這個域名傳送HTTP請求,由Nginx
負責請求的分發和跳轉。
- 配置檔案中耦合了服務呼叫的邏輯,這削弱了微服務的完整性
- 服務的資訊分散在各個系統,無法統一管理和維護,服務消費者並不知道有哪些例項在給他們提供服務。
- 無法直觀的看到服務提供者和服務消費者當前的執行狀況和通訊頻率。
- 消費者的失敗重發,負載均衡等都沒有統一策略,這加大了開發每個服務的難度,不利於快速演化。
spring cloud和dubbo比較
微服務功能 | Dubbo | Spring Cloud |
---|---|---|
服務註冊和發現 | Zookeeper | Eureka,Consul |
服務呼叫方式 | RPC | RESTful API |
斷路器 | 有 | Hystrix |
負載均衡 | 有 | Ribbon,Feign(RESTful Web Service客戶端,整合了Ribbon和Hystrix) |
服務路由和過濾 | 有 | 有 |
分散式配置 | 無 | 有 |
分散式鎖 | 無 | 有 |
叢集選主 | 無 | 有 |
分散式訊息 | 無 | 有 |
Spring Cloud
拋棄了Dubbo
的RPC
通訊,採用的是基於HTTP
的REST
方式。嚴格來說,這兩種方式各有優劣。雖然從一定程度上來說,後者犧牲了服務呼叫的效能,但也避免了上面提到的原生RPC
帶來的問題。而且REST
相比RPC
更為靈活,服務提供方和呼叫方的依賴只依靠一紙契約,不存在程式碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更加合適。
結語
在github
上有關於Spring Cloud
完整的部署。
其它相關文章
Spring cloud(1)-簡介以及選擇
Spring cloud(2)-服務發現(Eureka,Consul)
Spring cloud(3)-負載均衡(Feign,Ribbon)
Spring cloud(4)-熔斷(Hystrix)
Spring cloud(5)-路由閘道器(Zuul)
Spring cloud(6)-配置管理及重新整理(Config,Bus)
最後,給個 star 吧~
個人部落格~
簡書~