回覆列表
-
1 # Java架構進階阿南
-
2 # JavaException
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,屬於依賴的關係。
-
3 # 碼農看看
是不是現在Spring Boot一個專案就是一個Web服務?如果業務上比較獨立的化,就這樣保持,可以整合Spring Cloud的註冊中心、配置中心、分散式跟蹤等內容,不需要做什麼改造,就能比較好的把SPring Boot應用管理起來了。其他深入的應用,還要具體看業務需要而定。
-
4 # java和小熊
從單體架構向微服務架構過度,都是因為業務越來越複雜。為了考慮程式可擴充套件,可維護,滿足高併發,高效能等要求,就需要將一個大的單體應用,拆分成多個小的微服務。每個小的微服務,都可以是一個springboot的單體應用。再由springcloud實現各微服務的通訊,整合註冊中心,路由閘道器,rpc呼叫等。
有些童鞋剛接觸這塊 ,理解不是很深刻會經常問道這樣類似的問題,下面我就簡單講解一下如何從單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的官方的包分為兩類,一種是為了搭建一個服務用的,比如hibernate jpa,比如 message。另外一種含有cloud關鍵字的,是為了各個spring boot之前管理和使用的包。
因為當把叢集、CI等方法集中進來一起考慮的時候,這件事情就複雜了。
多個小有服務整合成的大服務,要有一個訊息匯流排來用於互相通知和呼叫,要有一個服務發現程式來管理某個小服務上線可用,同時在服務離線時也要能處理,各個小服務要儘量各自獨立,還要考慮服務的依賴性,叢集的負載均衡,配置檔案的分離。
再把CI和Docker拿進來一起考慮的話,更亂。
但我認為這樣完成的一個服務是更具有可插拔性,更容易維護的。而且遵循了上面的cloud方案的話,在服務的健壯性上面也很強。
寫到這裡對於新接觸的我認為可以先從單獨的spring boot程式開始入門,當要新增一個新功能時,考慮拆分成另外服務。兩個程式間可以透過 jmx或是 其它訊息中介軟體或是rest通訊。最後實現了一個各自獨立的功能叢集