SpringCloud 第一代与第二代的区别 | 学习笔记

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 快速学习 SpringCloud 第一代与第二代的区别

开发者学堂课程【精通 Spring Cloud AlibabaSpringCloud 第一代与第二代的区别学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/634/detail/10061


SpringCloud 第一代与第二代的区别


内容简介

一、为什么我们要使用 SpringCloud

二、SpringCloud 第一代与第二代的区别

三、SpringCloudalibaba 与 SpringCloud 有哪些区别?

四、SpringCloud 技术总结

五、今后学习


一、为什么我们要使用 SpringCloud

SpringCLoud 并不是 rpc 远程调用框架,而是一套全家桶的微服务解决框架,理念就是解决我们在微服务架构中遇到的任何问题。

服务治理:eureka

分布式配置 config

客户端调用工具 rest/feign 客户 rpc 远程调用

说明:阿里巴巴、腾讯、百度.

注意:大家如果去一些比较大型互联网公司中,整个公司内部实现rpc通讯的框架、服务助治理都是内部自己研发

公司有一定但是不是特别有钱,中小性。

Rpc 远程调用框架有那些?,

Httpclient、dubbofeigngrpc、基于 netty,手写r pc


二、SpringCloud 第一代与第二代的区别

由图可以了解,SpringCloud 第二代即 SpringCloud2.x 版本加上国内优秀的微服务框架组件整合在一起。所以第一代不必深入学习。

1.第一代

SpringCloud.第一代实际上都是用的Netflix开源的组件整合微服务解决方案。

最开始 SpringCloud 的第一代版本时,它的每个分布式组件都不是自己研发,而是在 GitHub 上找 Netflix 公司(制作视频网站),该公司研发了许多开源的微服务框架。

SpringCloud 就将所有的组件核心进行了整合。

但并不是 SpringCloud 写出的,因为 SpringCloud 目的是为了解决程序员在微服务架构中遇到的问题,因而其中的EurekaHystrixRibbonFeign Zuul 网关其实都并非 SpringCloud 写的,而使用的都是 Netflix 公司的。

Spring Cloud 第一代:

Spring Cloud Config 分布式配置中心

Spring Cloud Netflix 核心组件.

Eureka:服务治理

Hystrix:服务保护框架

Ribbon:客户端负载均衡器

Feign:基于 ribbon hystrix 的声明式服务调用组件。

Zuul:网关组件,提供智能路由、访问过滤等功能。

2.第二代

SpringCloud 第二代实际就是自己研发和 SpringCloudAalibaba 国内的优秀的微服务解决框架实现整合。

而闭源其实并不是真正的原因,其中最大的变化在网关上就有体现,在第一代中使用的是 zuul 网关,而第二代使用的则是自己研发的 Spring Cloud Gateway 网关。

在官网表述中可以得知 Gateway 网关性能远远好于 zuul 网关,同时客户端负载均衡器也从 Ribbon 换成Loadbalancer。服务保护框架也使用了 SpringCloud 自己孵化的 r4j。

Spring Cloud Alibaba Sentinel 服务保护框架也十分重要,能够替代我们之前学习的服务饱和框架。同时阿里迭代的框架相比原来也是更胜一筹。

阿里的 SpringCloud Alibaba Seata 分布式事务解决框架也能够很好的解决程序员在工作中遇到的许多分布式事务问题。

SpringCloud 第二代(自己研发)和优秀的组件组合:

Spring Cloud Gateway 网关

Spring Cloud Loadbalancer 客户端负载均衡器

Spring Cloud r4j(Resilience4J)服务保护

Spring Cloud Alibaba Nacos 服务注册

Spring Cloud Alibaba Nacos 分布式配置中心

Spring Cloud Alibaba Sentinel 服务保护

(可以替代我们所学过的所有保护式框架)

SpringCloud Alibaba Seata 分布式事务解决框架

(用于解决我们在微服务器中遇到的所有分布式问题)

Alibaba Cloud 0SS 阿里云存储

Alibaba Cloud SchedulerX分 布式任务调度平台

Alibaba Cloud SMS 分布式短信系统


三、SpringCloudalibabaSpringCloud有哪些区别?

1.区别

SpringCloudalibaba 就是为了推广阿里云的产品对我们目前的 SpringCloud2.x 版本实现扩展功能。

Nacos 服务注册与发现、分布式配置中心就等同于 SpringCloud 第一代中的 Eureka Spring Cloud Config

Rocketmq 买阿里云的 ons

同时在之后遇到的分布式云存储问题,Spring Cloud 0SS 也支持阿里的 oss

阿里的 SpringCloud 还含有 Alibaba Cloud SchedulerX 分布式任务调度平台框架但稍逊。但如 Alibaba Cloud SMS分布式短信系统其实都是为阿里做推广。

SpringCloudalibaba 就是为了推广阿里云的产品对我们目前的 SpringCloud2.x 版本实现扩展功能。

因而在使用 SpringCloudAlibaba 其中消息中间件选型应和 Rocket 联动一起使用,但单机版本中搭建 Rocket 联动性能并不理想,所以要配套购买阿里云的 ons。而阿里云的 ons 其实就是性能更加强大的 Rocketmq 联动。

2. SpringCloudalibaba

在官网中展示的功能,可以发现 SpringCloudalibaba 就是为了对我们目前的 SpringCloud2.x 版本实现扩展功能,其中含有许多组件,优势在于能够将组合的组件与 SpringCloud rpc 远程调度整合在一起。


四、SpringCloud 技术总结

微服务架构演变过程传统单体架构→分布式架构→SOA 面向服务架构→微服务架构模式,


五、今后学习

在之后的学习主要使用 SpringCloud 第二代,同时会实现真正的前后端分离,在第六章,会学习到前端 vue 技术、后端接口和分布式设施。

1.前段技术图例

1.png

2.后端接口图例

1.png

3.分布式设施

1.png

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
21天前
|
负载均衡 网络协议 Java
浅谈Springboot与Springcloud的区别
浅谈Springboot与Springcloud的区别
27 1
|
25天前
|
负载均衡 Java API
【Spring Cloud生态】Spring Cloud Gateway基本配置
【Spring Cloud生态】Spring Cloud Gateway基本配置
31 0
|
3月前
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
3月前
|
Java Spring
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
【Azure Spring Cloud】Spring Cloud Azure 4.0 调用Key Vault遇见认证错误 AADSTS90002: Tenant not found.
|
3月前
|
Java Spring 容器
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
|
3月前
|
存储 Java Spring
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
【Azure Spring Cloud】Azure Spring Cloud服务,如何获取应用程序日志文件呢?
|
3月前
|
SQL Java 数据库连接
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
【Azure Spring Cloud】Azure Spring Cloud connect to SQL using MSI
|
3月前
|
Java 开发工具 Spring
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
【Azure Spring Cloud】使用azure-spring-boot-starter-storage来上传文件报错: java.net.UnknownHostException: xxxxxxxx.blob.core.windows.net: Name or service not known
|
3月前
|
NoSQL Java Redis
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
【Azure Spring Cloud】Java Spring Cloud 应用部署到Azure上后,发现大量的 java.lang.NullPointerException: null at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:426) at ... 异常
|
3月前
|
Java Spring
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)