1、什么是Spring Cloudgit
官方的说法就是Spring Cloud 给开发者提供一套按照必定套路快速开发分布式系统的工具。
具体点就是Spring Boot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操做提供了一种简单的开发方式。web
说明:Spring Cloud基于Spring Boot,经过提供一堆库,能够在添加到类路径时加强应用程序的行为。也就是说只能集成到Spring Boot项目。redis
2、Spring Cloud的组成算法
Spring Cloud包含了多个子项目,以下所述(项目还在不断增长,只列举核心部分):spring
Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可使用它实现应用配置的外部化存储,并支持客户端配置信息刷新、加密/加密配置内容等。apache
Spring Cloud Netflix:核心组件(相对于国内的Duboo),对多个NetflixOSS开源套件进行整理。安全
Spring Cloud Bus:事件、消息总线 (消息总线)springboot
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插件
3、版本说明和选择
由于Spring Cloud不一样其余独立项目,它拥有不少子项目的大项目。因此它是的版本是:版本名+版本号 (如Angel.SR6)。
版本名:是伦敦的地铁名
版本号:SR(Service Releases)是固定的,大概意思是稳定版本。后面会有一个递增的数字。
因此Brixton.SR5就是Brixton的第5个Release版本。
4、版本的区别(包含的子项目不一样)
5、版本的选择
经过上面的表,不难看出,最初的Angel版本相对来讲拥有的子项目较少,Brixton、Camden则拥有更全的子项目,所提供跟多的组件支持。Brixton发布的子项目更稳定,Camden则更具前瞻性。
6、基于ZooKeeper例子搭建的思路
一、Spring Cloud是基于Spring Boot的项目,因此在项目新建时也必须引入Spring Boot的Parent节点。
二、通常咱们会经过https://spring.io/docs/reference来查询Spring Boot ZooKeeper来查看快速集成的例子,其实这个方式有点不正确,参照官网可能会集成不成功。
三、那么换回思路,Spring Boot ZooKeeper自己是Spring Cloud的一个子项目,因此先集成Spring Cloud的先,入口就再也不是https://spring.io/docs/reference下进行搜索,而是经过官网入口:https://spring.io/projects,找到Spring Cloud的项目,点进去。
四、集成好以后,再来看官方文档中Spring Cloud的ZooKeeper集成的例子,此时通常能集成成功,文档入口:http://cloud.spring.io/spring-cloud-static/Camden.SR7/#_spring_cloud_zookeeper
五、错误的作法是看这篇官方文章:http://cloud.spring.io/spring-cloud-static/spring-cloud-zookeeper/1.1.1.RELEASE/,而后参照这个依赖进行引入:http://cloud.spring.io/spring-cloud-zookeeper/,会出现各类的错误。不要参考这步去集成。
六、版本的选择通常是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(以上内容大部分转自此篇文章)