淺談 SpringCloud 和SpringBoot 的區別

今天,小喵來和小夥伴們聊聊 SpringBoot 和 SpringCloud 兩個框架.前端

一 . SpringBoot web

   1.簡介面試

        Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員再也不須要定義樣板化的配置。經過這種方式,Spring Boot致力於在蓬勃發展的快速應用開發領域(rapid application development)成爲領導者。spring

          SpringBoot是由Pivotal團隊在2013年開始研發、2014年4月發佈第一個版本的全新開源的輕量級框架。它基於Spring4.0設計,不只繼承了Spring框架原有的優秀特性,並且還經過簡化配置來進一步簡化了Spring應用的整個搭建和開發過程。另外SpringBoot經過集成大量的框架使得依賴包的版本衝突,以及引用的不穩定性等問題獲得了很好的解決。數據庫

         Spring框架是Java平臺上的一種開源應用框架,提供具備控制反轉特性的容器。儘管Spring框架自身對編程模型沒有限制,但其在Java應用中的頻繁使用讓它備受青睞,以致於後來讓它做爲EJB(EnterpriseJavaBeans)模型的補充,甚至是替補。Spring框架爲開發提供了一系列的解決方案,好比利用控制反轉的核心特性,並經過依賴注入實現控制反轉來實現管理對象生命週期容器化,利用面向切面編程進行聲明式的事務管理,整合多種持久化技術管理數據訪問,提供大量優秀的Web框架方便開發等等。Spring框架具備控制反轉(IOC)特性,IOC旨在方便項目維護和測試,它提供了一種經過Java的反射機制對Java對象進行統一的配置和管理的方法。Spring框架利用容器管理對象的生命週期,容器能夠經過掃描XML文件或類上特定Java註解來配置對象,開發者能夠經過依賴查找或依賴注入來得到對象。Spring框架具備面向切面編程(AOP)框架,SpringAOP框架基於代理模式,同時運行時可配置;AOP框架主要針對模塊之間的交叉關注點進行模塊化。Spring框架的AOP框架僅提供基本的AOP特性,雖沒法與AspectJ框架相比,但經過與AspectJ的集成,也能夠知足基本需求。Spring框架下的事務管理、遠程訪問等功能都可以經過使用SpringAOP技術實現。Spring的事務管理框架爲Java平臺帶來了一種抽象機制,使本地和全局事務以及嵌套事務可以與保存點一塊兒工做,而且幾乎能夠在Java平臺的任何環境中工做。Spring集成多種事務模板,系統能夠經過事務模板、XML或Java註解進行事務配置,而且事務框架集成了消息傳遞和緩存等功能。Spring的數據訪問框架解決了開發人員在應用程序中使用數據庫時遇到的常見困難。它不只對Java:JDBC、iBATS/MyBATIs、Hibernate、Java數據對象(JDO)、ApacheOJB和ApacheCayne等全部流行的數據訪問框架中提供支持,同時還能夠與Spring的事務管理一塊兒使用,爲數據訪問提供了靈活的抽象。Spring框架最初是沒有打算構建一個本身的WebMVC框架,其開發人員在開發過程當中認爲現有的StrutsWeb框架的呈現層和請求處理層之間以及請求處理層和模型之間的分離不夠,因而建立了SpringMVC。編程

  2.特色api

        SpringBoot所具有的特徵有:
            (1)能夠建立獨立的 Spring應用程序,而且基於其Maven或Gradle插件,能夠建立可執行的JARs和WARs;
            (2)內嵌Tomcat或Jetty等Servlet容器;
            (3)提供自動配置的「starter」項目對象模型(POMS)以簡化 Maven配置;
            (4)儘量自動配置Spring容器;
            (5)提供準備好的特性,如指標、健康檢查和外部化配置;
            (6)絕對沒有代碼生成,不須要XML配置。
 
  3.重要策略
            
        SpringBoot框架中還有兩個很是重要的策略: 開箱即用約定優於配置。開箱即用,Outofbox,是指在開發過程當中,經過在MAVEN項目的pom文件中添加相關依賴包,而後使用對應註解來代替繁瑣的XML配置文件以管理對象的生命週期。這個特色使得開發人員擺脫了複雜的配置工做以及依賴的管理工做,更加專一於業務邏輯。約定優於配置,Convention over configuration,是一種由SpringBoot自己來配置目標結構,由開發者在結構中添加信息的軟件設計範式。這一特色雖下降了部分靈活性,增長了BUG定位的複雜性,但減小了開發人員須要作出決定的數量,同時減小了大量的XML配置,而且能夠將代碼編譯、測試和打包等工做自動化。
        SpringBoot應用系統開發模板的基本架構設計從前端到後臺進行說明:前端常使用模板引擎,主要有 FreeMarker和Thymeleaf,它們都是用 Java語言編寫的,渲染模板並輸出相應文本,使得界面的設計與應用的邏輯分離,同時前端開發還會使用到Bootstrap、AngularJS、J Query等;在瀏覽器的數據傳輸格式上採用 Json,非xml,同時提供 RESTfulAPISpringMVC框架用於數據到達服務器後處理請求;到數據訪問層主要有Hibernate、 MyBatis、JPA等持久層框架;數據庫經常使用 MySQL;開發工具推薦IntelliJIDEA。
 
      4. 核心原理
            SpringBoot的核心原理是基於SpringMVC無配置文件徹底註解化 + 內置Tomcat實現SpringBoot框架,使用Main函數啓動.
二 . SpringCloud

       1.簡介瀏覽器

         Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,均可以用Spring Boot的開發風格作到一鍵啓動和部署。Spring Cloud並無重複製造輪子,它只是將各家公司開發的比較成熟、經得起實際考驗的服務框架組合起來,經過Spring Boot風格進行再封裝屏蔽掉了複雜的配置和實現原理,最終給開發者留出了一套簡單易懂、易部署和易維護的分佈式系統開發工具包。緩存

SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,爲各個微服務之間提供,配置管理、服務發現、斷路器、路由、等集成服務tomcat

SpringBoot不依賴於SpringCloud,SpringCloud依賴於SpringBoot,屬於依賴關係

        2.特色  

            優勢:

                1)  服務拆分粒度更細,有利於資源重複利用,有利於提升開發效率

                2) 能夠更精準的制定優化服務方案,提升系統的可維護性

                3) 微服務架構採用去中心化思想,服務之間採用Restful等輕量級通信,比ESB更輕量

                4) 適於互聯網時代,產品迭代週期更短

            缺點:

                1) 微服務過多,治理成本高,不利於維護系統

                2) 分佈式系統開發的成本高(容錯,分佈式事務等)對團隊挑戰大

總的來講優勢大過於缺點,目前看來SpringCloud是一套很是完善的分佈式框架,目前不少企業開始用微服務

       3. 經常使用組件

           SpringCloud 主要涉及的組件包括 :

                1) Eureka : 服務註冊中心,用於管理服務(服務的註冊、發現)

                2)Ribbon : 負載均衡,用於搭建集羣環境.(同一個功能配置多個tomcat,負載均衡會選擇多個tomcat其中一個)

               3)Hystrix : 熔斷器,與正主斷了聯繫,使用備選方案.可以防止服務的雪崩效應.

               4)Feign :  服務調用/遠程調用 , 服務與服務之間進行調用,相似於HttpClient

                5)Zuul : 服務網關,用於統一程序入口,方便進行管理,提供路由轉發、請求過濾等功能 

       4.核心原理

        

        想了解更多關於SpringCloud的詳細信息的話能夠訪問如下內容

               <<超詳細的SpringCloud底層原理>>

三 .  區別

   SpringBoot 和 SpringCloud 有如下區別 :  

   1) SpringBoot專一於快速方便的開發單個個體微服務。

    2) SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合而且管理起來,爲各個服務之間提供,配置管理、服務發現、斷路器、路由、微代理、事件總線、全局鎖、精選決策、分佈式會話等集成服務。

    3) SpringBoot能夠離開SpringCloud獨立開發項目,可是SpringCloud離不開SpringBoot,屬於依賴關係。

    4) SpringBoot專一於快速、方便的開發單個微服務個體,SpringCloud關注全局的服務治理框架。

 

這就是小喵今天所要分享的知識,

結尾再附上一個小小的面試題 :

        什麼是SpringBoot ? 什麼是SpringCloud ?二者之間有什麼區別?            

            1) springboot是一個快速開發框架,專一於快速方便的開發單個個體的微服務,

                    爲何是快速開發框架: 它是一個服務於spring框架的框架,它簡化了配置文件,能夠快速構建web應用,內置tomcat,無需打包部署,直接運行。

                        核心原理:是基於SpringMVC無配置文件徹底註解化+內置tomcat實現SpringBoot框架,使用Main函數啓動.

           2) SpringCloud是關注全局的微服務協調整理治理框架,它將SpringBoot開發的一個個單體微服務整合並管理起來,爲各個微服務之間提供,配置管理、服務發現、斷路器、路由、等集成服務

           3)  SpringBoot不依賴於SpringCloud,SpringCloud依賴於SpringBoot,屬於依賴關係

你Get到了嗎?

(^_^)~喵~!!

相關文章
相關標籤/搜索