什么是SpringCloud
Spring Cloud就是微服务系统架构的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。在平时我们构建微服务的过程中需要做如服务发现注册、配置中心、负载均衡、断路器、数据监控等操作, 而Spring Cloud 为我们提供了一套简易的编程模型,使我们能在 Spring Boot 的基础上轻松地实现微服务项目的构建。
-
SpringCloud 是一个服务治理平台,提供了一些服务框架,包含了:服务注册与发现,配置中心,消息中心,负载均衡,数据监控等等
-
SpringCloud 是一个微服务框架,相比Dubbo等RPC框架,SPringCloud提供了全套的分布式系统解决方案
-
SpringCloud对微服务基础框架Netflix的多个开源组件进行了封装,同时又实现了和云端平台以及Springboot框架的集成
-
SpringCloud是一个基于Springboot实现的云应用开发工具,它以开发中的配置管理,服务发现,断路器,智能路由,微代理,控制总线,全局锁,决策竞选,分布式会话和集群状态管理等操作提供了一种简单的开发方式
-
SpringCloud为开发者提供了快速构建分布式系统的工具,开发者可以快速的启动服务或构建应用,同时能够快速和云平台资源进行对接.微服务是可以独立部署,水平扩展,独立访问(或者有独立的数据库)的服务单元,SpringCloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多。
-
SpringCloud集成了各种微服务功能组件,并基于SpringBoot实现了这些组件的自动装配,从而提供了良好的开箱即用体验。
其中常见的组件包括:
SpringCloud底层是依赖于SpringBoot的,并且有版本的兼容关系:
查看网址:Spring Cloud
单体架构、分布式架构、微服务
单体架构
将业务的所有功能集中在一个项目中开发,打成一个包部署。
优点:
-
架构简单
-
部署成本低
缺点:
-
耦合度高,维护困难,升级困难
分布式架构
根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。
优点:
-
降低服务耦合
-
有利于服务升级和拓展
缺点:
-
服务调用关系错综复杂
分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:
-
服务拆分的粒度如何界定?
-
服务之间如何调用?
-
服务的调用关系如何管理?
微服务:
给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。
特性:
-
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
-
自治:团队独立、技术独立、数据独立,独立部署和交付
-
面向服务:服务提供统一标准的接口,与语言和技术无关
-
隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题
小结:
-
单体架构:简单方便,高度耦合,扩展性差,适合小型项目。
-
分布式架构:松耦合,扩展性好,但架构复杂,难度大,适合大型互联网项目,例如:京东、淘宝
-
微服务:一种良好的分布式架构方案
-
优点:拆分粒度更小、服务更独立、耦合度更低
-
缺点:架构非常复杂,运维、监控、部署难度提高
-
springCloud是微服务架构的一站式解决方案,集成了各种微服务功能组件。
SpringCloud的基础功能
1.服务注册与发现:Eureka
2.客户端负载均衡: Ribbon
3.服务熔断与降级: Hystrix
4.声明式服务调用:Feign
5.API网关服务:Spring Cloud Zuul
6.分布式服务跟踪:Spring Cloud Sleuth&Zipkin
7.分布式配置中心:Spring Cloud Config
SpringCloud两个版本
第一代 SpringCloud Netflix
Netflix组件提供的开发工具包,包括Eureka,Hystrix,Ribbon,Zuul,Archaius等
-
Netflix Eureka: 一个基于Rest服务的服务治理组件,包括服务注册中心,服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务端的故障转移
-
Netflix Hystrix: 容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力
-
Netflix Ribbon: 客户端的负载均衡的服务调用组件
-
Netflix Feign: 基于Ribbon和Hystrix的声明式服务调用组件
-
Netflix Zuul: 微服务网关,提供动态路由,访问过滤等服务
-
Netflix Archaius: 配置管理API,包含一系列配置管理API,提供动态类型化属性,线程安全配置操作,轮询框架,回调机制等功能.、
第二代 Spring Cloud Alibaba
Spring Cloud Alibaba是Spring Cloud下的一个子项目,Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案,它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用Spring Cloud开发应用程序,使用Spring Cloud Alibaba,您只需要添加一些注解和少量配置即可将Spring Cloud应用程序连接到Alibaba的分布式解决方案,并使用Alibaba中间件构建分布式应用程序系统。Spring Cloud Alibaba 是阿里巴巴开源中间件跟 Spring Cloud 体系的融合:
Nacos: 阿里巴巴开源产品,一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台
Sentinel: 面向分布式服务架构的轻量级流量控制产品,把流量作为切入点,从流量控制,熔断降级,系统负载保护等多个维度保护服务的稳定性.
RocketMQ: 一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的,高可靠的消息发布与订阅服务.
Dubbo: Apache Dubbo是一款高性能java RPC框架
Seata: 阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
Alibaba Cloud ACM:一款在分布式架构环境中对应用配置进行集中管理和推送的应用配置中心产品
Alibaba Cloud OSS: 阿里云对象存储服务(Object Storeage Service,简称 OSS),是阿里云提供的海量,安全,低成本,高可靠的云存储服务。你可以在任何应用,任何时间,任何地点存储和访问任意类型的数据
Alibaba Cloud SchedulerX : 阿里巴巴中间件团队开发的一款分布式任务调度产品,提供秒级,精准,高可靠,高可用的定时(基于Cron表达式)任务调度服务。
Alibaba Cloud SMS: 覆盖全球的短信服务,友好,高效,智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。