關於SpringCloud、SpringBoot 希望這是說得最詳細的

幾年前,沒幾個jar衝突一下都不叫搭框架 —— java面試必修

什麼是Spring Boot

用我的話來理解,Spring Boot就是整合了框架的框架,它讓一切依賴都變得有序簡單,你不用操心A.jar是什麼版本,又依賴哪些版本的jar,它默認配置了很多框架的使用方式,就像 maven整合了所有的jar包,Spring Boot整合了所有的框架,第三方庫的功能你拿着就能用。
Spring Boot的核心思想就是約定大於配置,一切由內定的約束來自動完成。採用 Spring Boot可以大大的簡化你的開發模式,節省大部分照搬照抄的成本,通過少量的代碼就能創建一個獨立的,它都有對應的組件支持。

它是由 Pivotal團隊提供的全新框架,其設計目的是用來簡化新 Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。

什麼是Spring Cloud

Spring Cloud是一套分佈式服務治理的框架,既然它是一套服務治理的框架,那麼它本身不會提供具體功能性的操作,更專注於服務之間的通訊、熔斷、監控等。因此就需要很多的組件來支持一套功能。
微服務是可以獨立部署、水平擴展、獨立訪問(或者有獨立的數據庫)的服務單元, Spring Cloud就是這些微服務的大管家,採用了微服務這種架構之後,項目的數量會非常多, Spring Cloud做爲大管家就需要提供各種方案來維護整個生態。

SpringColoud的小弟們

小弟們可是非常多,就像梁山108好漢那樣

默默無聞服務

融合在每個微服務中、依賴其它組件併爲其提供服務。

  • Ribbon,客戶端負載均衡,特性有區域親和、重試機制。

  • Hystrix,客戶端容錯保護,特性有服務降級、服務熔斷、請求緩存、請求合併、依賴隔離。

  • Feign,聲明式服務調用,本質上就是Ribbon+Hystrix

  • Stream,消息驅動,有Sink、Source、Processor三種通道,特性有訂閱發佈、消費組、消息分區。

  • Bus,消息總線,配合Config倉庫修改的一種Stream實現,

  • Sleuth,分佈式服務追蹤,需要搞清楚TraceID和SpanID以及抽樣,如何與ELK整合。
利刃獨挑大樑

獨自啓動不需要依賴其它組件,單槍匹馬都能幹。

  • Eureka,服務註冊中心,特性有失效剔除、服務保護。

  • Dashboard,Hystrix儀表盤,監控集羣模式和單點模式,其中集羣模式需要收集器Turbine配合。

  • Zuul,API服務網關,功能有路由分發和過濾。

  • Config,分佈式配置中心,支持本地倉庫、SVN、Git、Jar包內配置等模式,
各司其職

每個組件都不是平白無故的產生的,是爲了解決某一特定的問題而存在。

  • Eureka和Ribbon,是最基礎的組件,一個註冊服務,一個消費服務。

  • Hystrix爲了優化Ribbon、防止整個微服務架構因爲某個服務節點的問題導致崩潰,是個保險絲的作用。

  • Dashboard給Hystrix統計和展示用的,而且監控服務節點的整體壓力和健康情況。

  • Turbine是集羣收集器,服務於Dashboard的。

  • Feign是方便我們程序員些更優美的代碼的。

  • Zuul是加在整個微服務最前沿的防火牆和代理器,隱藏微服務結點IP端口信息,加強安全保護的。

  • Config是爲了解決所有微服務各自維護各自的配置,設置一個同意的配置中心,方便修改配置的。

  • Bus是因爲config修改完配置後各個結點都要refresh才能生效實在太麻煩,所以交給bus來通知服務節點刷新配置的。

  • Stream是爲了簡化研發人員對MQ使用的複雜度,弱化MQ的差異性,達到程序和MQ鬆耦合。

  • Sleuth是因爲單次請求在微服務節點中跳轉無法追溯,解決任務鏈日誌追蹤問題的。

特殊成員Zipkin,之所以特殊是因爲從jar包和包名來看它不屬於Spring Cloud的一員,但是它與Spring Cloud Sleuth的抽樣日誌結合的天衣無縫。乍一看它與Hystrix的Dashboard作用有重疊的部分,但是他們的側重點完全不同。Dashboard側重的是單個服務的統計和是否可用,Zipkin側重的監控環節時長。簡言之,Dashboard側重故障診斷,Ziokin側重性能優化。

與SpringCloud區別

通俗的說,SpringBoot是構建單個服務的快速架構,比如它是全家桶中的1個漢堡,SpringCloud是關注全局的微服務協調整理治理框架,類似於組成多個服務的全家桶,桶裏面不光有漢堡,還有薯條,還有番茄醬,那現在我要給漢堡加點番茄醬,它就更好吃了,意思就是SpringBoot可以配合全家桶中的這些工具組成一個強大的微服務體系,有點類似於Collection和Collections。

  1. Spring boot是Spring的一套快速配置腳手架,可以基於Spring Boot快速開發單個微服務;Spring Cloud是一個基於Spring Boot實現的雲應用開發工具
  2. Spring Boot專注於快速、方便集成的單個個體,Spring Cloud是關注全局的服務治理框架;
  3. Spring boot使用了默認大於配置的理念,很多集成方案已經幫你選擇好了,能不配置就不配置,Spring Cloud很大的一部分是基於Spring Boot來實現。
  4. Spring Boot可以離開Spring Cloud獨立使用開發項目,但是Spring Cloud離不開Spring Boot,屬於依賴的關係。

作者有話說:喜歡的話就請移步Java面試必修網,請自備水,更多幹、幹、乾貨等着你

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章