Spring Cloud簡介/版本選擇/ZooKeeper例子搭建簡單說明


一、什么是Spring Cloud

官方的說法就是Spring Cloud 給開發者提供一套按照一定套路快速開發分布式系統的工具。 
具體點就是Spring Boot實現的微服務架構開發工具。它為微服務架構中涉及的配置管理、服務治理、斷路器、智能路由、微代理、控制總線、全局鎖、決策競選、分布式會話和集群狀態管理等操作提供了一種簡單的開發方式。

說明:Spring Cloud基於Spring Boot,通過提供一堆庫,可以在添加到類路徑時增強應用程序的行為。也就是說只能集成到Spring Boot項目。

二、Spring Cloud的組成

Spring Cloud包含了多個子項目,如下所述(項目還在不斷增加,只列舉核心部分):

Spring Cloud Config:配置管理工具,支持使用Git存儲配置內容,可以使用它實現應用配置的外部化存儲,並支持客戶端配置信息刷新、加密/加密配置內容等。

Spring Cloud Netflix:核心組件(相對於國內的Duboo),對多個NetflixOSS開源套件進行整理。

  • Eureka服務治理組件,包含服務注冊中心,服務注冊與發現機制的實現。(服務治理,服務注冊/發現)
  • Hystrix容錯管理逐漸,實現斷路器模式,幫助服務以來中出現的延遲和為故障提供強大的容錯能力。(熔斷、斷路器,容錯)
  • Ribbon客戶端負載均衡的服務調用組件(客戶端負載)
  • Feigin給予Ribbon和Hystrix的聲明式服務調用組件 (聲明式服務調用)
  • Zuul網關組件,提供智能路由,訪問過濾功能
  • Archaius外部化配置組件

Spring Cloud Bus:事件、消息總線 (消息總線)

Spring Cloud Cluster:針對ZooKeeper、Redis、Hazelcast、Consul的選舉算法和通用狀態模式的實現

Spring Cloud Cloudfoundry:與Pivatal Cloudfoundry的整合支持

Spring Cloud Consul:服務發現與配置管理工具

Spring Cloud Stream:通過Redis、Rabbit或者卡夫卡實現消費微服務,可以通過簡單的聲明式模型發送和接收消息

Spring Cloud AWS:用於簡化整合Amazon Web Service的組件

Srping Cloud Security:安全工具包,提供在Zuul代理中的OAuth2客戶端請求的中繼器

Spring Cloud Sleuth:Spring Cloud營運的分布式跟蹤實現,可以完美整合Zipkin

Spring Cloud ZooKeeper:給予ZooKeeper的服務發現與配置管理組件

Spring Cloud Starers:Spring Cloud的基本組件,它基於Spring Boot風格項目的基礎依賴模塊

Spring Cloud CLI:用於在Groovy中快速創建Spring Cloud應用的Spring Boot CLI插件

三、版本說明和選擇

因為Spring Cloud不同其他獨立項目,它擁有很多子項目的大項目。所以它是的版本是:版本名+版本號 (如Angel.SR6)。

版本名:是倫敦的地鐵名 

版本號:SR(Service Releases)是固定的,大概意思是穩定版本。后面會有一個遞增的數字。 

所以Brixton.SR5就是Brixton的第5個Release版本。

四、版本的區別(包含的子項目不同)

五、版本的選擇

通過上面的表,不難看出,最初的Angel版本相對來說擁有的子項目較少,Brixton、Camden則擁有更全的子項目,所提供跟多的組件支持。Brixton發布的子項目更穩定,Camden則更具前瞻性。 

六、基於ZooKeeper例子搭建的思路

1、Spring Cloud是基於Spring Boot的項目,所以在項目新建時也必須引入Spring Boot的Parent節點。

2、一般我們會通過https://spring.io/docs/reference來查詢Spring Boot ZooKeeper來查看快速集成的例子,其實這個方式有點不正確,參照官網可能會集成不成功。

3、那么換回思路,Spring Boot ZooKeeper本身是Spring Cloud的一個子項目,所以先集成Spring Cloud的先,入口就不再是https://spring.io/docs/reference下進行搜索,而是通過官網入口:https://spring.io/projects,找到Spring Cloud的項目,點進去。

4、集成好之后,再來看官方文檔中Spring Cloud的ZooKeeper集成的例子,此時一般能集成成功,文檔入口:http://cloud.spring.io/spring-cloud-static/Camden.SR7/#_spring_cloud_zookeeper

5、錯誤的做法是看這篇官方文章:http://cloud.spring.io/spring-cloud-static/spring-cloud-zookeeper/1.1.1.RELEASE/,然后參照這個依賴進行引入:http://cloud.spring.io/spring-cloud-zookeeper/,會出現各種的錯誤。不要參考這步去集成。

6、版本的選擇一般是Camden.SR7。

完成的集成例子應該是這樣:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.jsoft.testspringboot</groupId>
    <artifactId>testzookeeper1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>testzookeeper1</name>
    <url>http://maven.apache.org</url>

    <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.5.RELEASE</version> </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencyManagement>
        <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Camden.SR7</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> </dependency>
    </dependencies>
</project>

說明:

綠色部分的為默認總的父類依賴,必須要引入;

藍色部分的為Spring Boot比如要引入的依賴Parent節點;

紅色部分是通過http://cloud.spring.io/spring-cloud-static/Camden.SR7/#_spring_cloud_zookeeper文檔得知要引入這兩個依賴的。 

 

參考:

http://projects.spring.io/spring-cloud/(官方說明)

http://blog.csdn.net/csdn2193714269/article/details/72853098(以上內容大部分轉自此篇文章)


免責聲明!

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



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