一、正面解讀
Spring主要是基於IOC反轉Beans管理Bean類,主要依存於SSH框架(Struts+Spring+Hibernate)這個MVC框架,所以定位很明確,Struts主要負責表示層的顯示,Spring利用它的IOC和AOP來處理控制業務(負責對數據庫的操作),Hibernate主要作用是數據的持久化到數據庫。
SpringMVC是基於Spring的一個MVC框架,用以替代初期的SSH框架;(spring Framework本身沒有Web功能,Spring MVC使用WebApplicationContext類擴展ApplicationContext,使得擁有web功能)。
Spring Boot是基於Spring4的條件注冊的一套快速開發整合包。
三者的發展與聯系:
Spring 最初利用“工廠模式”( DI )和“代理模式”( AOP )解耦應用組件。大家覺得挺好用,於是按照這種模式搞了一個 MVC 框架(一些用 Spring 解耦的組件),用開發 web 應用( SpringMVC )。然后有發現每次開發都要搞很多依賴,寫很多樣板代碼很麻煩,於是搞了一些懶人整合包( starter ),這套就是 Spring Boot 。
升級雲-Spring Cloud:現在是大數據、雲時代,上雲是必然選擇,那么Spring Cloud應運而生,
二、概念解讀
什么是Spring
一個輕量級的控制反轉(IoC)和面向切面(AOP)的容器
什么是SpringMVC
spring與mvc可以更好地解釋什么是springMvc,MVC為現代web項目開發的一種很常見的模式,簡言之C(控制器)將V(視圖、用戶客戶端)與M(模塊,業務)分開構成了MVC ,業內常見的mvc模式的開發框架有Struts1,Struts2等。spring作為專業的開發web項目的開源框架,springMvc為內部的一個模塊環節,同樣采取mvc設計模式。
什么是SpringBoot
Spring boot 是 Spring 的一套快速配置腳手架,可以基於spring boot 快速開發單個微服務,特點:簡單易用,初學者和大牛都可以輕松上手,其中的注解會給使用者提供方便;
Spring boot對第三方技術進行了很好的封裝和整合,提供了大量第三方接口;
可以通過依賴自動配置,不需要XML等配置文件
什么是SpringCloud
spring-colud是一種雲端分布式架構解決方案,基於spring boot,在spring boot做較少的配置,便可成為 spring cloud 中的一個微服務。
三、深入解讀Spring Boot與Spring Boot的概念與關系
什么是Spring Boot
Spring Booti簡化了基於 Spring的應用開發,通過少量的代碼就能創建一個獨立的、產品級別的 Spring應用。 Spring Boot為 Spring平台及第三方庫提供開箱即用的設置,這樣你就可以有條不素地開始。多數 SpringBoot應用只需要很少的 Spring配置。
Spring Boot是由 Pivotal團隊提供的全新框架,其設計目的是用來簡化新 Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。用我的話來理解,就是Spring Boot其實不是什么新的框架,它默認配置了很多框架的使用方式,就像 maven整合了所有的jar包,Spring Boot整合了所有的框架。
Spring Boot的核心思想就是約定大於配置,一切自動完成。采用 Spring Boot可以大大的簡化你的開發模式,所有你想集成的常用框架,它都有對應的組件支持。
什么是Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用 Spring Boot的開發便利性巧妙地簡化了分布式系統基礎設施的開發,如服務發現注冊、配置中心、消息總線線、負載均衠、斷路器、數據監控等,都可以用 Spring Boot的開發風格做到一鍵啟動和部署。 Spring並沒有重復制造輪子,它只是將目前各家公司開發的比較成熟、經得起實際考驗的服務框架組台起來,通過 Spring Boot風格進行再封裝屏蔽掉了復雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分布式系統開發工具包。
微服務是可以獨立部署、水平擴展、獨立訪問(或者有獨立的數據庫)的服務單元, Spring Cloud就是這些微服務的大管家,采用了微服務這種架構之后,項目的數量會非常多, Spring Cloud做為大管家就需要提供各種方案來維護整個生態。
Spring Cloud就是一套分布式服務治理的框架,既然它是一套服務治理的框架,那么它本身不會提供具體功能性的操作,更專注於服務之間的通訊、熔斷、監控等。因此就需要很多的組件來支持一套功能。
Spring Boot和Spring Cloud的關系
Spring Boot是 Spring的一套快速配置腳手架,可以基於 Spring Boot快速開發單個微服務, SpringCloud是一個基於 Spring Boot實現的雲應用開發工具; Spring Boot專注於快速、方便集成的單個微服務個體,Spring Cloud關注全局的服務治理框架; Spring Boot使用了默認大於配置的理念,很多集成方案已經幫你選擇好了,能不配置就不配置, Spring Cloud很大的一部分是基於 Spring Boot來實現,可以不基於 Spring Boot嗎?不可以。 Spring Boot可以離開 Spring Cloud獨立使用開發項目,但是 Spring Cloud離不開 Spring Boot,屬於依賴的關系
Spring-> Spring Boot> Spring Cloud這樣的關系
Spring Cloud架構
我們從整體來看一下 Spring Cloud主要的組件,以及它的訪間流程
1、外部或者內部的非 Spring Cloud目都統一通過API網關(Zuul)來訪可內部服務.
2、網關接收到請求后,從注冊中心( Eureka)獲取可用服務
3、由 Ribbon進行均負載后,分發到后端的具體實例
4、徹服務之間通過 Feign進行通信處理業務
5、 Hystrix負責處理服務超時熔斷
6、 Turbine監控服務間的調用和焠斷相關指標
四、Spring Boot和Spring Cloud的區別
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,屬於依賴的關系。
