淺析Spring boot與Spring cloud 之間的關係

有些童鞋剛接觸這塊 ,理解不是很深刻會經常問道這樣類似的問題,下面我就簡單講解一下Spring boot與Spring cloud 之間的關係!

淺析Spring boot與Spring cloud 之間的關係

Spring boot 是 Spring 的一套快速配置腳手架,可以基於spring boot 快速開發單個微服務,Spring Boot,看名字就知道是Spring的引導,就是用於啓動Spring的,使得Spring的學習和使用變得快速無痛。不僅適合替換原有的工程結構,更適合微服務開發。

Spring Cloud基於Spring Boot,爲微服務體系開發中的架構問題,提供了一整套的解決方案——服務註冊與發現,服務消費,服務保護與熔斷,網關,分佈式調用追蹤,分佈式配置管理等。

Spring Cloud是一個基於Spring Boot實現的雲應用開發工具;Spring boot專注於快速、方便集成的單個個體,Spring Cloud是關注全局的服務治理框架;spring boot使用了默認大於配置的理念,很多集成方案已經幫你選擇好了,能不配置就不配置,Spring Cloud很大的一部分是基於Spring boot來實現。

學過Spring的都知道,Spring開發有非常頭疼的三點:

以啓動一個帶Hibernate的Spring MVC爲例。
1. 依賴太多了,而且要注意版本兼容。這個應用,要添加10-20個依賴,Spring相關的包10多個,然後是Hibernate包,Spring與Hibernate整合包,日誌包,json包一堆,而且要注意版本兼容性。

2. 配置太多了,要配置註解驅動,要配置數據庫連接池,要配置Hibernate,要配置事務管理器,要配置Spring MVC的資源映射,要在web.xml中配置啓動Spring和Spring MVC等

3.部署和運行麻煩。要部署到tomcat裏面。不能直接用java命令運行。

太多重複和大家都一樣的配置了。

Spring Boot的哲學就是約定大於配置。既然很多東西都是一樣的,爲什麼還要去配置。

1. 通過starter和依賴管理解決依賴問題。
2. 通過自動配置,解決配置複雜問題。
3. 通過內嵌web容器,由應用啓動tomcat,而不是tomcat啓動應用,來解決部署運行問題。

Spring Cloud體系就比較複雜了。基本可以理解爲通過Spring Boot的三大魔法,將各種組件整合在一起,非常簡單易用。

淺析Spring boot與Spring cloud 之間的關係

你可以把spring boot的官方的包分爲兩類,一種是爲了搭建一個服務用的,比如hibernate jpa,比如 message。另外一種含有cloud關鍵字的,是爲了各個spring boot之前管理和使用的包。

因爲當把集羣、CI等方法集中進來一起考慮的時候,這件事情就複雜了。

多個小有服務整合成的大服務,要有一個消息總線來用於互相通知和調用,要有一個服務發現程序來管理某個小服務上線可用,同時在服務離線時也要能處理,各個小服務要儘量各自獨立,還要考慮服務的依賴性,集羣的負載均衡,配置文件的分離。

再把CI和Docker拿進來一起考慮的話,更亂。

但我認爲這樣完成的一個服務是更具有可插拔性,更容易維護的。而且遵循了上面的cloud方案的話,在服務的健壯性上面也很強。

寫到這裏對於新接觸的我認爲可以先從單獨的spring boot程序開始入門,當要添加一個新功能時,考慮拆分成另外服務。兩個程序間可以通過 jmx或是 其它消息中間件或是rest通訊。最後實現了一個各自獨立的功能集羣。

總結一句:Spring boot可以離開Spring Cloud獨立使用開發項目,但是Spring Cloud離不開Spring boot,屬於依賴的關係。

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