Spring→SpringBoot→SpringCloud
Spring
是一个轻量级的Java
开发框架,它能使用基本的JavaBean
代替EJB
。
SpringBoot
是由Pivotal团队提供的全新框架,用来简化新Spring
应用的初始搭建和开发过程。开发人员无需定义样板化配置。
SpringCloud
是一系列框架的有序集合,它把好的东西集合到一起,这就是所谓的集大成者。同时它利用SpringBoot
的开发便利性巧妙的简化了分布式系统基础设施的开发。
Pivotal公司官网:https://pivotal.io/
什么是SpringCloud
SpringCloud
是一个微服务框架,相比Dubbo
等RPC框架, SpringCloud
提供的全套的分布式系统解决方案。
SpringCloud相关组件
上面说到SpringCloud是一系列框架的集合,这一系列框架包括什么呢?
Spring Cloud Eureka:一个基于rest服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务器的故障转移。
Spring Cloud Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。
Spring Cloud Ribbon:客户端负载均衡的服务调用组件。提供云端负载均衡,有多种负载均衡策略可供选择,可配合服务发现和断路器使用。
Spring Cloud Feign:基于Ribbon
和Hystrix
的声明式服务调用组件。Feign是一种声明式、模板化的HTTP客户端。
Spring Cloud Zuul:云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。
Spring Cloud Turbine:Turbine是聚合服务器发送事件流数据的一个工具,用来监控集群下hystrix
的metrics情况。
Spring Cloud Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
Spring Cloud Config: 配置管理工具包,让你可以把配置放到远程服务器,几种化管理集群配置,目前支持本地存储,Git
以及Subversion
。
Spring Cloud Bus:消息总线(一种通信工具,可以在机器之间互相传输消息、文件等。消息总线扮演着一种消息路由的角色,拥有一套完备的路由机制来决定消息传输方向。发送段只需要向消息总线发出消息而不用管消息被如何转发)
通过轻量消息代理连接各个分布的节点。管理和传播所有分布式项目中的消息,本质是利用了MQ的广播机制在分布式的系统中传播消息,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config
联合实现热部署。
目前常用的有Kafka
和RabbitMQ
。
RabbitMQ官网地址:http://www.rabbitmq.com/
Kafka官网地址:http://kafka.apache.org/
Spring Cloud Consul:由HashiCorp
公司开发,是一个服务发现与配置工具,与Docker
容器可以无缝集成。
hashicorp官网地址:https://www.hashicorp.com/
Consul官网地址:https://www.consul.io/
Spring Cloud Zookeeper:操作Zookeeper
的工具包,用于使用zookeeper
方式的服务发现和配置管理。
Zookeeper官网地址:https://zookeeper.apache.org/
Spring Cloud Security:基于spring security
的安全工具包,为你的应用程序添加安全控制。
Spring Cloud Stream:数据流操作开发包,封装了与Redis
,RabbitMQ
、Kafka
等发送接收消息。
Spring Cloud Sleuth:日志收集工具包,封装了Dapper
和log-based
追踪以及Zipkin
和HTrace
操作,为SpringCloud应用实现了一种分布式追踪解决方案。
Spring Cloud Data Flow:大数据操作工具,作为Spring XD
的替代产品,它是一个混合计算模型,结合了流数据与批量数据的处理方式。是构建数据集成和实时数据处理流水线的工具包。
Spring Cloud Task:提供云端计划任务管理、任务调度。
Spring Cloud Connectors:便于云端应用程序在各种PaaS平台连接到后端,如:数据库和消息代理服务。
Spring Cloud Cluster:提供Leadership选举,如:Zookeeper
, Redis
, Hazelcast
, Consul
等常见状态模式的抽象和实现。
Hazelcast
是由Hazelcast
公司开发和维护的开源产品,可以为基于jvm环境运行的各种应用提供分布式集群和分布式缓存服务。
Hazelcast官网地址:https://hazelcast.com/
Spring Cloud for Cloud Foundry:将您的应用程序与Pivotal Cloudfoundry
集成。 提供服务发现实现,并且还可以轻松实现SSO和OAuth2保护的资源,还可以创建Cloudfoundry
服务代理。CloudFoundry
是VMware推出的开源PaaS云平台。
CloudFoundry官网地址:https://www.cloudfoundry.org/
Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。
附上两张图:
SpringCloud的版本
从下Angel到上Finchley可以看出,版本的第一个字母是按照A-Z顺序编排的。
官方说明是这些版本号的单词来自于英国伦敦的地铁站站名。
Spring Cloud版本演进情况如下:
Spring Cloud与Spring Boot版本匹配关系
从上面可以看出,SpringCloud版本不是向下兼容的,最新版的SpringCloud版本不能兼容旧版的SpringBoot,所以在使用的时候记得看清楚版本