1. 程式人生 > 實用技巧 >SpringCloud(一)SpringCloud的簡單概述以及與Dubbo對比

SpringCloud(一)SpringCloud的簡單概述以及與Dubbo對比

SpringCloud概述


一、回顧微服務

什麼是微服務?微服務(Microservice Architecture)是近幾年流行的一種架構思想,目前而言,對於微服務,業界沒有一個統一的標準的定義。

通常而言,微服務架構是一種架構模式,或者說是一種架構風格,它提倡將單一的應用程式劃分為一組小的服務,每個服務執行在其獨立的自己的程序內,服務之間相互協調相互配置,為使用者提供最終價值。服務之間採用輕量級的通訊機制互相溝通,每個服務都圍繞著具體的業務進行構建,並且能夠被獨立的部署到生產環境中。

微服務架構的四個核心問題:

  • 服務很多,客戶端該如何訪問? —— API 閘道器、zuul元件
  • 這麼多服務?服務之間如何通訊? —— HTTP、RPC
  • 這麼多服務?如何治理? —— 註冊和發現,zookeeper
  • 服務掛了怎麼辦? —— 熔斷機制

二、SpringCloud 入門概述

2.1 什麼是SpringCloud

官網:https://spring.io/projects/spring-cloud#learn

在這裡插入圖片描述

Spring Cloud 是一套完整的微服務解決方案,基於 Spring Boot 框架,準確的說,它不是一個框架,而是一個大的容器,它將市面上較好的微服務框架整合進來,從而簡化了開發者的程式碼量。

Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務發現、服務閘道器、服務路由、鏈路追蹤

等。

Spring Cloud 是一個由眾多獨立子專案組成的大型綜合專案,每個子專案有不同的發行節奏,都維護著自己的釋出版本號。Spring Cloud通過一個資源清單BOM(Bill of Materials)來管理每個版本的子專案清單。為避免與子專案的釋出號混淆,所以沒有采用版本號的方式,而是通過命名的方式。(命名方式採用倫敦地鐵站的名稱,同時根據字母表的順序來對應版本時間順序)

Spring Cloud 並不重複造輪子,而是將市面上開發得比較好的模組整合進去,進行封裝,從而減少了各模組的開發成本。換句話說:Spring Cloud 提供了構建分散式系統所需的“全家桶”。

2.2 Spring Cloud 優缺點

其主要優點有:

  1. 集大成者,Spring Cloud 包含了微服務架構的方方面面。
  2. 約定優於配置,基於註解,沒有配置檔案。
  3. 輕量級元件,Spring Cloud 整合的元件大多比較輕量級,且都是各自領域的佼佼者。
  4. 開發簡便,Spring Cloud 對各個元件進行了大量的封裝,從而簡化了開發。
  5. 開發靈活,Spring Cloud 的元件都是解耦的,開發人員可以靈活按需選擇元件。

接下來,我們看下它的缺點:

  1. 專案結構複雜,每一個元件或者每一個服務都需要建立一個專案。
  2. 部署門檻高,專案部署需要配合 Docker 等容器技術進行叢集部署,而要想深入瞭解 Docker,學習成本高。

Spring Cloud 的優勢是顯而易見的。因此對於想研究微服務架構的學者來說,學習 Spring Cloud 是一個不錯的選擇。

2.3 SpringCloud 和 SpringBoot
  • SpringBoot 專注於快速方便的開發單個個體微服務
  • SpringCloud 是關注全域性的微服務協調調整治理框架,它將 SpringBoot 開發的一個個單體微服務整合並管理起來,併為各個微服務之間提供:配置管理、服務發現、斷路器、路由、微代理、事件匯流排、決策精選、分散式會話等等整合服務。
  • SpringBoot 可以離開 SpringCloud 獨立使用開發專案,但是 SpringCloud 離不開 SpringBoot,屬於依賴關係。

總結:SpringBoot 專注於快速、方便的開發單個個體微服務;SpringCloud 是關注全域性的微服務協調調整治理框架

2.4 Dubbo和SpringCloud
DubboSpring Cloud
服務註冊中心ZookeeperSpring Cloud Netfilx Eureka
服務呼叫方式RPCREST API
服務監控Dubbo-monitorSpringBoot Admin
斷路器不完善Spring Cloud Netfilx Hystrix
服務閘道器Spring Cloud Netfilx Zuul
分散式配置Spring Cloud Config
服務跟蹤Spring Cloud Sleuth
訊息匯流排Spring Cloud Bus
資料流Spring Cloud Stream
批量任務Spring Cloud Task

最大區別:SpringCloud 拋棄了Dubbo的RPC通訊,採用的是基於HTTP的REST方式。

嚴格來講,兩種方式各有優劣。雖然一定程度上說,後者犧牲了服務呼叫的效能,但也避免了原生RPC帶來的問題,而且REST比RPC更加靈活,服務提供方和呼叫方法的依賴只依靠一紙契約,不存在程式碼級別的強依賴,這在強調快速演化的微服務環境下顯得更加合適。

2.5 重要文件(中文)
  • Spring Cloud Netflix:https://www.springcloud.cc/spring-cloud-netflix.html

  • SpringCloud:https://www.springcloud.cc/spring-cloud-dalston.html