玩轉springcloud(一):什么是Springcloud ,有什么優缺點? 學習順序是什么?


一、首先看官方解釋:

Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智能路由,微代理,控制總線)。分布式系統的協調導致了樣板模式, 使用Spring Cloud開發人員可以快速地支持實現這些模式的服務和應用程序。他們將在任何分布式環境中運行良好,包括開發人員自己的筆記本電腦,裸機數據中心,以及Cloud Foundry等托管平台。

 其中有着很多的特性:  

Spring Cloud專注於提供良好的開箱即用經驗的典型用例和可擴展性機制覆蓋。

    • 分布式/版本化配置

    • 服務注冊和發現

    • 路由

    • service - to - service調用

    • 負載均衡

    • 斷路器

    • 分布式消息傳遞 

Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分布式系統的開發,比如服務發現、服務網關、服務路由、鏈路追蹤等。Spring Cloud 並不重復造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從而減少了各模塊的開發成本。換句話說:Spring Cloud 提供了構建分布式系統所需的“全家桶”。

二、Spring Cloud的項目的位置

Sping Cloud 是 Spring的一個頂級項目,Spring 的頂級項目列表如下

    •  Spring IO platform:用於系統部署,是可集成的,構建現代化應用的版本平台,具體來說當你使用maven dependency引入spring jar包時它就在工作了。
    •  Spring Boot:旨在簡化創建產品級的 Spring 應用和服務,簡化了配置文件,使用嵌入式web服務器,含有諸多開箱即用微服務功能,可以和spring cloud聯合部署。
    •  Spring Framework:即通常所說的spring 框架,是一個開源的Java/Java EE全功能棧應用程序框架,其它spring項目如spring boot也依賴於此框架。
    •  Spring Cloud:微服務工具包,為開發者提供了在分布式系統的配置管理、服務發現、斷路器、智能路由、微代理、控制總線等開發工具包。
    •  Spring XD:是一種運行時環境(服務器軟件,非開發框架),組合spring技術,如spring batch、spring boot、spring data,采集大數據並處理。
    •  Spring Data:是一個數據訪問及操作的工具包,封裝了很多種數據及數據庫的訪問相關技術,包括:jdbc、Redis、MongoDB、Neo4j等。
    •  Spring Batch:批處理框架,或說是批量任務執行管理器,功能包括任務調度、日志記錄/跟蹤等。
    •  Spring Security:是一個能夠為基於Spring的企業應用系統提供聲明式的安全訪問控制解決方案的安全框架。
    •  Spring Integration:面向企業應用集成(EAI/ESB)的編程框架,支持的通信方式包括HTTP、FTP、TCP/UDP、JMS、RabbitMQ、Email等。
    •  Spring Social:一組工具包,一組連接社交服務API,如Twitter、Facebook、LinkedIn、GitHub等,有幾十個。
    •  Spring AMQP:消息隊列操作的工具包,主要是封裝了RabbitMQ的操作。
    •  Spring HATEOAS:是一個用於支持實現超文本驅動的 REST Web 服務的開發庫。
    •  Spring Mobile:是Spring MVC的擴展,用來簡化手機上的Web應用開發。
    •  Spring for Android:是Spring框架的一個擴展,其主要目的在乎簡化Android本地應用的開發,提供RestTemplate來訪問Rest服務。
    •  Spring Web Flow:目標是成為管理Web應用頁面流程的最佳方案,將頁面跳轉流程單獨管理,並可配置。
    •  Spring LDAP:是一個用於操作LDAP的Java工具包,基於Spring的JdbcTemplate模式,簡化LDAP訪問。
    •  Spring Session:session管理的開發工具包,讓你可以把session保存到redis等,進行集群化session管理。
    •  Spring Web Services:是基於Spring的Web服務框架,提供SOAP服務開發,允許通過多種方式創建Web服務。
    •  Spring Shell:提供交互式的Shell可讓你使用簡單的基於Spring的編程模型來開發命令,比如Spring Roo命令。
    •  Spring Roo:是一種Spring開發的輔助工具,使用命令行操作來生成自動化項目,操作非常類似於Rails。
    •  Spring Scala:為Scala語言編程提供的spring框架的封裝(新的編程語言,Java平台的Scala於2003年底/2004年初發布)。
    •  Spring BlazeDS Integration:一個開發RIA工具包,可以集成Adobe Flex、BlazeDS、Spring以及Java技術創建RIA。
    •  Spring Loaded:用於實現java程序和web應用的熱部署的開源工具。
    •  Spring REST Shell:可以調用Rest服務的命令行工具,敲命令行操作Rest服務。

三、Spring Cloud的子項目

 

 

四、Spring Cloud 現狀

目前,國內使用 Spring Cloud 技術的公司並不多見,不是因為 Spring Cloud 不好,主要原因有以下幾點:

    1. Spring Cloud 中文文檔較少,出現問題網上沒有太多的解決方案。
    2. 國內創業型公司技術老大大多是阿里系員工,而阿里系多采用 Dubbo 來構建微服務架構。
    3. 大型公司基本都有自己的分布式解決方案,而中小型公司的架構很多用不上微服務,所以沒有采用 Spring Cloud 的必要性。

但是,微服務架構是一個趨勢,而 Spring Cloud 是微服務解決方案的佼佼者,這也是作者寫本系列課程的意義所在。

五、Spring Cloud 優缺點

優點:

1、服務拆分粒度更細,有利於資源重復利用,有利於提高開發效率

2、可以更精准的制定優化服務方案,提高系統的可維護性

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

4、適於互聯網時代,產品迭代周期更短

缺點:

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

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

總的來說優點大過於缺點,目前看來SpringCloud是一套非常完善的分布式框架,目前很多企業開始用微服務、Spring Cloud 的優勢是顯而易見的。因此對於想研究微服務架構的同學來說,學習 Spring Cloud 是一個不錯的選擇。

六、Spring Cloud 和 Dubbo 對比

Dubbo 只是實現了服務治理,而 Spring Cloud 實現了微服務架構的方方面面,服務治理只是其中的一個方面。下面通過一張圖對其進行比較:

可以看出,Spring Cloud 比較全面,而 Dubbo 由於只實現了服務治理,需要集成其他模塊,需要單獨引入,增加了學習成本和集成成本。

七、Spring Cloud 學習路線

Spring Cloud 基於 Spring Boot,因此在研究 Spring Cloud 之前,首先要學習Spring Boot 的用法,方便后續 Spring Cloud 的學習。

這里暫時先不講解springboot,默認大家都有基礎,后續會間接的增加springboot的系列講解,也不會講解 SpringMVC 的用法,因此需要讀者對 Spring 及 SpringMVC 有過研究。

學習Springcloud大致可以為四個部分:

    • 第一部分初識 Spring Boot,掌握 Spring Boot 基礎知識,為后續入門 Spring Cloud 打好基礎 。

    • 第二部分 Spring Cloud 入門篇,主要介紹 Spring Cloud 常用模塊,包括服務發現、服務注冊、配置中心、鏈路追蹤、異常處理等。

    • 第三部分 Spring Cloud 進階篇,介紹大型分布式系統中事務處理、線程安全等問題,並以一個實例項目手把手教大家搭建完整的微服務系統。

    • 第四部分 Spring Cloud 高級篇,解析 Spring Cloud 源碼,並講解如何部署基於 Spring Cloud 的大型分布式系統。

   

    本文今天先寫到這里,下篇開始進入正題,帶大家進入Springcloud系列學習,如有不足之處,請評論指出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM