前言:
每个人在开发过程中或多或少的都跟Spring 打过交道,Spring 家族很强大,记得刚开始用Spring 的时候 配置相当繁琐,功能一多的时候,配置文件里面的内容就越来越多,这样维护起来就很痛苦,Spring 的开发者也意识到了这个问题,是不是能够将 这些内置的功能由框架本身提供呢,因而Spring 家族发展出了 SpringCloud SpringBoot ,且这个势头很猛,现在大多数的公司都需要会这俩个框架,那么学习这俩个框架就成了我们需要做的事情。
正文:
1.什么是SpringCloud?
SpringCloud 是一个微服务框架的规范,提供了全套的分布式系统解决方案。
Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现注册,配置中心,消息总线,负载均衡,数据监控,断路器,智能路由,领导选举,分布式会话,集群状态)。
服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控
2.SpringCloud 组件:
1.Spring Cloud Netflix
它是通过包装了Netflix公司的微服务组件实现的,也是Spring Cloud核心组件,包括Eureka,Hystrix,Zuul,Archaius。2.Eureka (提供服务注册与发现功能)
3.Spring Cloud Config (服务配置中心)
将所有的服务的配置文件放到本地仓库或者远程仓库,配置中心负责读取仓库的配置文件,其他服务向配置中心读取配置。Spring Cloud Config使得服务的配置统一管理,并可以在不人为重启服务的情况下进行配置文件的刷新。4.Hystrix (熔断器组件)
它通过控制服务的API接口的熔断来转移故障,防止微服务系统发生雪崩效应。另外Hystrix能够起到服务限流和服务降级的作用。使用Hystrix Dashboard组件监控单个服务的熔断状态,使用Hystrix Turbine组件可以监控多个服务的熔断器的状态。5.Zuul (智能路由网关组件)
能够起到智能路由和请求过滤的作用,内部服务API接口通过Zuul网关统一对外暴露,防止内部服务敏感信息对外暴露。也可以实现安全验证,权限控制。6.Feign (声明式远程调度组件)
7.Ribbon (负载均衡组件)
8.Archaius (配置管理API组件)
一个基于Java的配置管理库,主要用于多配置的动态获取。9.Spring Cloud Bus ( 消息总线组件)
常和Spring Cloud Config配合使用,用于动态刷新服务的配置。10.Spring Cloud Sleuth
服务链路追踪组件,封装了Dapper,Zipkin,Kibina等组件,可以实时监控服务链路调用状况。11.Spring Cloud Data Flow
大数据操作组件,它是Spring XD的替代品,也是一个混合计算模型,可以通过命令行的方式操作数据流12.Spring Cloud Consul
该组件是Spring Cloud对Consul的封装,和Eureka类似,它是一个服务注册和发现组件。13.Spring Cloud Zookeeper
该组件是Spring Cloud对Zookeeper的封装,也是用于服务注册和发现14.Spring Cloud Stream
数据流操作组件,可以封装 Redis,RabbitMQ,Kafka等组件,实现消息的接受和发送。15.Spring Cloud CLI
该组件是对Spring Boot CLI的封装,可以让用户以命令行方式快速搭建和运行容器。16.Spring Cloud Task
该组件基于Spring Tsak,提供任务调度和任务管理的功能
3.SpringCloud的特性:
- 分布式/版本化配置。
- 服务注册和发现。
- 路由。
- 服务和服务之间的调用。
- 负载均衡。
- 断路器。
- 分布式消息传递。
4.为什么要用SpringCloud?
1.Spring Cloud 作为一套微服务治理的框架,解决的第一个问题就是服务与服务之间的解耦。
2.SpringCloud有以下特点:
- 约定优于配置
- 适用于各种环境.开发,部署在PC Server 或各种云环境均可
- 隐藏了组件的复杂性,并提供声明式,无xml的配置方式
- 开箱即用
- 轻量级的组件. Spring Cloud整合的组件大多比较轻量.例如Eureka,Zuul,等等
- 组件丰富,功能齐全. Spring Cloud 为微服务架构提供了非常完整的支持.例如,配置管理,服务发现,断路器,微服务网关等;
- 选型中立,丰富. 例如,Spring Cloud 支持使用Eureka,Zookeeper或Consul实现服务发现.
- 灵活.Spring Cloud的组成部分是解耦的,开发人员可按需灵活挑选技术选型.
-
3. SpringCloud 主要解决了与分布式系统相关的问题,比如 网络问题,延迟开销,带宽问题,安全问题。
还包括:
- 处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进行通信。
- 解决冗余问题 – 冗余问题经常发生在分布式系统中。
- 负载平衡 – 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布。
- 减少性能问题 – 减少因各种操作开销导致的性能问题。
5.参考文章:
4)Spring Cloud(一):Spring Cloud的优势是什么?
5)Spring精华问答 | 什么是Spring Cloud?