目录
一.SpringCloud是什么
SpringCloud是一系列框架的有序集合,包含服务注册与发现,配置中心,消息总线,负载均衡,断路器,数据监控等功能
SpringCloud其实是一套规范,用于构建微服务架构的一套规范,而不是一个可拿来即用的框架(所谓规范就是应该由哪些功能组件,然后组件之间应该怎么配合,共同完成什么事情)。在这个规范下Netflix公司开发了一些组件,Spring公司开发了一些框架/组件,包括第三方阿里巴巴开发出了一套框架/组件集合SpringCloud Alibaba,这才是SpringCloud的实现。
二.SpringCloud解决什么问题
SpringCloud规范及实现意图要解决的问题其实就是微服务架构实施过程中存在的一些问题,如微服务架构中的服务发现与注册问题,网络问题(如熔断场景),统一认证安全鉴权问题,负载均衡问题,链路追踪问题等。
三.SpringCloud架构
综上所述,SpringCloud是一个微服务相关规范,这个规范意图为搭建微服务架构提供一站式服务,采用组件化机制定义一系列组件,各类组件针对微服务中的特定问题进行处理,共同构成SpringCloud微服务技术栈.
3.1 SpringCloud核心组件
SpringCloud生态圈中的组件,按发展可以分为第一代SpringCloud组件和第二代SpringCloud组件
第⼀代 Spring Cloud(Netflix,SCN) | 第⼆代 Spring Cloud(主要就是 Spring Cloud Alibaba,SCA) | |
注册中心 | Netflix Eureka | Alibaba Nacos |
客户端负载均衡 | Netflix Ribbon | Alibaba Dubbo LB、SpringCloud Loadbalancer |
熔断器 | Netflix Hystrix | Alibaba Sentinel |
网关 | Netflix Zuul: 性能一般,未来将退出SpringCloud生态圈 | 官方 SpringCloud Gateway |
配置中心 | 官方SpringCloud Config | Alibaba Nacos、携程Apollo |
服务调用 | Netflix Feign | Alibaba Dubbo RPC |
消息驱动 | 官方 SpringCloud Stream | |
链路追踪 | 官方 SpringCloud Sleuth/Zipkin | |
Alibaba seata 分布式事务方案 |
3.2 SpringCloud体系结构(组件协同工作机制)
- 注册中心负责服务的注册与发现,将各服务连接起来
- API网关负责转发所有的外来请求
- 断路器负责监控服务之间的调用情况,连续多次失败进行熔断保护
- 配置中心提供统一的配置信息管理服务,可以实时的通知各个服务获取最新的配置信息
四.SpringCloud与Dubbo对比
Dubbo是Alibaba开源的一个高性能RPC服务框架,基于RPC调用,与目前使用率较高的SpringCloud Netflix来说,它是基于HTTP的,所以效率上没有Dubbo高,但是Dubbo体系的组件不全,不能够提供一站式解决方案,如服务注册于发现需要借助Zookeeper等实现,而SpringCloud Netflix则提供了一站式服务化解决方案
五.SpringCloud与SpringBoot的关系
SpringCloud只是利用了SpringBoot的特点,让我们能快速的实现微服务组件开发,否则不适用SpringBoot的话,我们在使用SpringCloud时,每个组件的相关jar包都需要我们自己导入配置以及需要开发人员考虑兼容性等情况。所以SpringBoot是我们快速把SpringCloud微服务技术应用起来的一种方式