SpringCloud- 基本概念

1.1 什么是SpringCloud?

Spring官网:https://spring.io/

维基百科】Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用 Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud是一系列框架的有序集合(Spring Cloud是一个规范)开发服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等。利用Spring Boot的开发便利性简化了微服务架构的开发(自动装配)。

需要注意的是,Spring Cloud是一套用于构建微服务架构的规范,而不是一个可以拿来即用的框架(所谓规范就是应该有哪些功能组件,然后组件之间怎么配合,共同完成什么事情)。在这个规范之下第三方的Netflix搞了一套 ,简称SCN。 Spring Cloud 吸收了Netflix公司的产品基础之上自己也搞了几个组件,阿里巴巴在之前的基础上搞出了一堆微服务组件,Spring Cloud Alibaba(SCA),这些才是Spring Cloud规范的实现。

1.2 SpringCloud和SpringBoot关系

  • SpringBoot: 专注于快速方便的开发单个个体微服务。
  • SpringCloud: 是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供:配置管理,服务发现,断路器,路由,微代理,事件总线,全局锁,决策竞选,分布式会话等等集成服务。
  • SpringBoot可以离开SpringClooud独立使用,开发项目,但是SpringCloud离不开SpringBoot,属于依赖关系SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架。

1.3 Spring Cloud 架构

Spring Cloud是一个微服务相关规范,这个规范意图为搭建微服务架构提供一站式服务,采用组件(框架)化机制定义一系列组件,各类组件针对性的处理微服务中的特定问题,这些组件共同来构成Spring Cloud微服务技术栈

1.3.1 Spring Cloud 核心组件

Spring Cloud 生态圈中的组件,按照发展可以分为第一代 Spring Cloud组件和第二代 SpringCloud组件。

组件 第一代 Spring Cloud(Netflix,SCN) 第二代 Spring Cloud(主要就是SpringCloud Alibaba,SCA)
注册中心 Netflix Eureka 阿里巴巴 Nacos
客户端负载均衡 Netflix Ribbon 阿里巴巴 Dubbo LB、Spring Cloud
Loadbalancer
熔断器 Netflix Hystrix 阿里巴巴 Sentinel
网关 Netflix Zuul:性能一般,未来将退出
Spring Cloud 生态圈
官方 Spring Cloud Gateway
配置中心 官方 Spring Cloud Config 阿里巴巴 Nacos
服务调用 Netflix Feign
消息驱动 官方 Spring Cloud Stream
链路追踪 官方 Spring Cloud Sleuth/Zipkin

1.3.2 Spring Cloud 体系结构

Spring Cloud中的各组件协同工作,才能够支持一个完整的微服务架构。比如

1.4 Dubbo和SpringCloud对比

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,基于RPC调用,对于目前使用率较高的Spring Cloud Netflix来说,它是基于HTTP的,所以效率上没有Dubbo高,但问题在于Dubbo体系的组件不全,不能够提供一站式解决方案,比如服务注册与发现需要借助于Zookeeper等实现,而SpringCloud Netflix则是真正的提供了一站式服务化解决方案,且有Spring大家族背景。

组件 Dubbo Spring Cloud
服务注册中心 Zookeeper Spring Cloud Netfilx Eureka
服务调用方式 RPC REST API
服务监控 Dubbo-monitor Spring Boot Admin
断路器 不完善 Spring Cloud Netflix Hystrix
服务网关 / Spring Cloud Netflix Zuul
分布式配置 / Spring Cloud Config
服务跟踪 / Spring Cloud Sleuth
消息总线 / Spring Cloud Bus
数据流 / Spring Cloud Stream
批量任务 / Spring Cloud Task

最大区别:SpringCloud抛弃了Dubbo的RPC通信,采用的是基于HTTP的REST方式

严格来说,这两种方式各有优劣。虽然从一定程度上来说,后者牺牲了服务调用的性能,但也避免了上面提到的原生RPC带来的问题。而且REST相比RPC更为灵活,服务提供方和调用方的依赖只依靠一纸契约,不存在代码级别的强依赖,这在强调快速演化的微服务环境下,显得更加合适。

解决的问题域不一样Dubbo的定位是一款RPC框架,Spring Cloud的目标是微服务架构下的一站式解决方案

posted @ 2021-05-25 19:33  guardwhy  阅读(116)  评论(0编辑  收藏  举报