一、什么是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(以上内容大部分转自此篇文章)

Spring Cloud简介/版本选择/ZooKeeper例子搭建简单说明的更多相关文章

  1. Spring Boot,Spring Cloud,Spring Cloud Alibaba 版本选择说明以及整理归纳

    前言 本文的核心目的: 1.方便自己以后的查找,预览,参考 2.帮助那些不知道如何选择版本的朋友进行指引,而不是一味的跟风网上的版本,照抄. Spring Boot 版本 版本查询: https:// ...

  2. spring cloud alibaba版本选择

    https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明 Spring Cloud Version Spring Cloud Version ...

  3. Spring Cloud与微服务构建:Spring Cloud简介

    Spring Cloud简介 微服务因该具备的功能 微服务可以拆分为"微"和"服务"二字."微"即小的意思,那到底多小才算"微&q ...

  4. Spring Cloud Eureka 注册中心集群搭建,Greenwich 最新版!

    Spring Cloud 的注册中心可以由 Eureka.Consul.Zookeeper.ETCD 等来实现,这里推荐使用 Spring Cloud Eureka 来实现注册中心,它基于 Netfl ...

  5. spring boot 2.0.3+spring cloud (Finchley)2、搭建负载均衡Ribbon (Eureka+Ribbon+RestTemplate)

    Ribbon是Netflix公司开源的一个负载均衡组件,将负载均衡逻辑封装在客户端中,运行在客户端的进程里. 本例子是在搭建好eureka的基础上进行的,可参考spring boot 2.0.3+sp ...

  6. Spring Cloud微服务笔记(二)Spring Cloud 简介

    Spring Cloud 简介 Spring Cloud的设计理念是Integrate Everything,即充分利用现有的开源组件, 在它们之上设计一套统一的规范/接口使它们能够接入Spring ...

  7. Spring Cloud简介

    一.本文介绍 Web应用由最早的单体应用发展成为集群式的部署,再到现在的分布式系统.尤其是这两年分布式相关的技术发展的很快,一方面是以Dubbo为代表的,另一方面则是以Spring Cloud系列为代 ...

  8. Spring Cloud 简介

    SpringCloud 简介 SpringCloud是一个基于SpringBoot实现的微服务架构开发工具.它为微服务架构中涉及的配置管理.服务治理.断路器.智能路由.微代理.控制总线.全局锁.决策竞 ...

  9. Spring Cloud简介 4.1

    什么是Spring Cloud Spring Cloud是在Spring Boot的基础上构建的,用于简化分布式系统构建的工具集.该工具集为微服务架构中所涉及的配置管理.服务发现.智能路由.断路器.微 ...

随机推荐

  1. BFS(两点搜索) UVA 11624 Fire!

    题目传送门 /* BFS:首先对火搜索,求出火蔓延到某点的时间,再对J搜索,如果走到的地方火已经烧到了就不入队,直到走出边界. */ /******************************** ...

  2. Android 仿 新闻阅读器 菜单弹出效果(附源码DEMO)

    这一系列博文都是:(android高仿系列)今日头条 --新闻阅读器 (一) 开发中碰到问题之后实现的,觉得可能有的开发者用的到或则希望独立成一个小功能DEMO,所以就放出来这么一个DEMO. 原本觉 ...

  3. 连接服务器的mysql

    在服务器配置好Mysql 数据库,在客户端连接,报错: 解决方法: 1.在MySQL 数据库中修改user表,将host 中的localhoust 改为 %: 2.配置访问数据库的全选 根据需要配置权 ...

  4. tensorboard在windows系统浏览器显示空白的解决

    一个简单的using_tensorboard.py程序,如下: #using_tensorboard.py import tensorflow as tf a = tf.constant(10,nam ...

  5. 使用libpqxx访问PostgreSQL数据库(mingw编译libpqxx)

    编译前准备    1. 安装mingw 安装mingw(不管是直接安装mingw还是其他如code::blocks附带安装的mingw),输入:gcc -v可显示如下图的版本信息,我的版本是mingw ...

  6. 安卓app测试之Monkey测试

    一.Monkey特点 1.运行时机:一般是产品稳定后 首轮功能测试完成的夜间进行 2.需要知道packageName 3.目的:主要测试产品是否存在崩溃问题和ANR问题. 二.获取包名的两个方法 首先 ...

  7. CAD得到布局名

    js代码如下: var database = mxOcx.GetDatabase(); var sRet = null; //返回数据库中的布局字典 var spLayoutDictionary = ...

  8. java虚拟机(二)--类加载机制和双亲委派模型

    一.类的生命周期 加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(Initialization).使用(Using).卸 ...

  9. ThinkPHP---案例1登录登出和添加部门

    配置文件分3类:系统配置文件,分组配置文件,应用配置文件 ①系统配置文件ThinkPHP/Conf/convention.php: ②分组 / 模块 /平台配置文件Home/Conf/config.p ...

  10. 05网页<div></div>块内容

    网页<div></div>块内容 <header>此处为新 header 标签的内容</header> <navigation>此处为新 n ...