Spring Cloud 教程(一) | 认识Spring Cloud

server/2024/9/24 13:03:34/

Spring Cloud Alibaba教程(一) | 认识Spring Cloud Alibaba

  • 前言
  • 一、SpringBoot和SpringCloud区别
  • 二、SpringCloud 第一代(Spring Cloud + Netflix)
  • 三、SpringCloud 第二代(Spring Cloud + Alibaba)

前言

springBoot = Spring + X, 就是对于Spring和其他技术的融合 进行了简化开发,所以x可以代表任何技术,比如 mybtis, mybatisPlus, redis… 对于集成这些常用框架,springBoot本身就预设了一些常用技术的集成方案,对于没有预设的,也可以通过自动化配置功能,快捷融入进来。

springCloud = 多个SpringBoot的融合,通过多个SpringBoot模块,完成一套微服务体系的搭建,并使其具备了服务发现与注册,服务治理,服务网关,服务监控,服务间调用等等一系列功能的集合,方便开发者们很容易的搭建一套微服务框架,只需把更多的精力投入到业务层的开发当中。

SpringCloud本身不是新的框架,他是一系列框架的有机组合,利用SpringBoot 的开发便利性巧妙地简化了分布式系统基础设施的开发。并非所有的组件都是Spring提供,Netflix扮演了重要角色。

一、SpringBoot和SpringCloud区别

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

Spring Cloud Netflix 和 Spring Cloud Alibaba 都是 Spring Cloud 生态系统中的重要组成部分,它们各自提供了一套微服务开发所需的规范和标准,并集成了相应的组件来实现这些功能。以下是它们与 Spring Cloud 关系的详细解析:

二、SpringCloud 第一代(Spring Cloud + Netflix)

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

SpringCloud 就将所有的组件核心进行了整合。
但并不是 SpringCloud 写出的,因为 SpringCloud 目的是为了解决程序员在微服务架构中遇到的问题,因而其中的Eureka、Hystrix、Ribbon、Feign 和 Zuul 网关其实都并非 SpringCloud 写的,而使用的都是 Netflix 公司的。

需要注意的是,自2018年12月12日起,Netflix 公司宣布停止对其内部开源组件的维护,转而推荐社区自行维护。
这意味着 Spring Cloud Netflix 中的部分组件将不再得到官方更新和支持。

Spring Cloud 第一代构成:

组件名称来源具体作用
config配置中心Spring Cloud分布式配置中心
Eureka服务注册与发现Netflix允许服务通过REST API向Eureka注册自身信息
允许客户端通过Eureka发现已注册的服务
Eureka Server作为服务注册中心,维护服务清单,并监测服务健康状态
提供服务治理功能,如服务注册、发现、健康检查等
Ribbon客户端负载均衡Netflix提供客户端的软件负载均衡算法和服务调用
Feign声明式HTTP客户端Netflix基于 ribbon 和 hystrix 的声明式服务调用组件。
简化HTTP客户端的编写,使得HTTP请求如同调用本地方法一样
通过@FeignClient注解定义服务接口,Feign会自动生成代理类,并处理HTTP请求和响应
支持多种HTTP客户端实现,如JDK原生的URLConnection、Apache HttpClient等
Hystrix熔断器(服务保护框架)Netflix
提供熔断机制,当服务调用失败率达到一定阈值时,自动熔断,避免级联失败
ZuulAPI网关Netflix提供统一的访问入口,为微服务架构提供路由和过滤功能网关组件

三、SpringCloud 第二代(Spring Cloud + Alibaba)

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

具体的体现如下:
网关方面:
第一代 是 zuul,而第二代时 使用的则是Spring Cloud 自己研发的 Gateway 网关。
在官网表述中可以得知 Gateway 网关性能远远好于 zuul 网关,

远程调用方面
第一代 是 Feign,而第二代时 Spring Cloud 团队在Feign的基础上进一步开发的一款框架。它在保留Feign原有功能的基础上,增加了对Spring MVC注解的支持。

客户端负载均衡器
第一代 是 Ribbon,而第二代时 使用的则是Spring Cloud 自己研发的 Loadbalancer

服务保护框架
第一代 是 Hystrix,而第二代时 Spring Cloud 自己研发的 r4j(Resilience4J),后续 Alibaba 研发 Sentinel 比较好用,所有就使用了Sentinel 。

核心组件

组件名称来源具体作用
Gateway云梯网关Spring Cloud提供统一的访问入口,为微服务架构提供路由和过滤功能网关组件
OpenFeign远程调用Spring Cloud
Loadbalancer客户端负载均衡器Spring Cloud提供客户端的软件负载均衡算法和服务调用
Nacos注册中心、配置中心Alibaba提供动态服务注册与发现的能力,支持服务的自动注册、发现、健康检查等,是微服务架构中服务治理的基础。
Sentinel流量控制、熔断降级(服务保护框架)Alibaba作为流量控制、熔断降级的组件,Sentinel能够在系统面临高并发或下游服务故障时,自动进行流量控制、熔断降级等操作,保护系统不被压垮。
RocketMQ消息中间件Alibaba提供高性能、高可靠的分布式消息服务,支持发布/订阅模式和点对点模式,适用于解耦服务间通信、异步处理、数据流处理等场景。
Seata分布式事务Alibaba解决微服务架构下的分布式事务问题,提供全局事务的一致性管理,确保跨多个服务的业务操作数据一致性。

另外还有一些高级功能(存在收费)
Alibaba Cloud 0SS 阿里云存储
Alibaba Cloud SchedulerX分 布式任务调度平台
Alibaba Cloud SMS 分布式短信系统

关于远程服务调用这一块:
OpenFeign和Dubbo,两者都支持远程服务调用,使得服务消费者可以方便地调用服务提供者的接口。

1. 协议支持方面:

  • Dubbo提供了多种协议支持,包括Dubbo协议、HTTP协议、Hessian协议、Thrift协议等,这使得Dubbo在协议选择上更加灵活。
  • OpenFeign则主要支持HTTP协议,更适用于基于RESTful风格的微服务架构。

2. 实现方式方面:

  • Dubbo是一种RPC(远程过程调用)框架,它提供了高性能、高可靠性的远程服务调用方案,并且支持多种负载均衡策略和容错策略。
  • OpenFeign则是一种声明式的REST客户端,它通过注解方式定义REST API接口,并自动生成实现该接口的客户端代码,从而简化了RESTful服务的调用过程。

3. 应用场景:

  • Dubbo更适合于传统的RPC调用场景,特别是在复杂的分布式系统中,Dubbo的高性能、高可扩展性和丰富的服务治理功能能够发挥重要作用。
  • OpenFeign则更适合于轻量级的微服务架构,特别是在Spring Cloud体系中,OpenFeign能够很好地与Spring Cloud的其他组件集成,提供简洁、高效的HTTP客户端功能。

现如今 目前市面上最新的 Spring Cloud 架构 都是用的 Spring Cloud Alibaba 这一套

参考文章
【1】SpringCloud 第一代与第二代的区别 | 学习笔记
【2】Spring Cloud Alibaba-全面详解(学习总结—从入门到深化)
【3】SpringCloud【微服务架构进化论、微服务的拆分规范和原则、为什么选择Spring Cloud、什么是服务治理 】(一)-全面详解(学习总结—从入门到深化)


http://www.ppmy.cn/server/121359.html

相关文章

Appium独立测试自动化初始化脚本

1、查看环境初始化参数 确保appium已经开起来了,设置ip ,并点击启动 打开夜神模拟器,点击工具--设置 最下面的版本说明,双击进去 版本号这里再去单击。 直到进入到开发者模式。 可能我们不是开发者模式打开的状态,所以软件访问模…

验收测试:从需求到交付的全程把控!

在软件开发过程中,验收测试是一个至关重要的环节。它不仅是对软件质量的把关,也是对整个项目周期的全程把控。从需求分析到最终的软件交付,验收测试都需要严格进行,以确保软件能够符合预期的质量和性能要求。 一、需求分析阶段 在…

express的Router,配置 post 请求方法

在Express中,使用Router对象配置POST请求方法与在主应用上配置POST请求方法非常相似。你首先需要从express模块中引入Router,然后创建一个Router实例。接下来,你可以在这个Router实例上使用.post()方法来定义POST请求的路由处理器。 下面是一…

对c语言中的指针进行深入全面的解析

1.普通的指针: 实际上指针就是存放地址的变量,eg: int a10; int *p&a; 拆分一下int *中的*说明p是一个指针,int是它所指向的类型; 2.字符串指针和字符串数组 char*str1"abcd"; 先看这一个,这个就是一个字符串…

数模方法论-蒙特卡洛法

一、基本概念 蒙特卡洛法是一种基于随机抽样的数值计算方法,主要用于估计复杂系统的数值解。其基本原理是通过生成大量随机样本,来模拟系统的行为或求解特定的数学问题,比如积分、概率和优化等。 在应用上,蒙特卡洛法可以用于金融…

Mac 上哪个剪切板增强工具比较好用? 好用剪切板工具推荐

在日常文字编辑中,我们经常需要重复使用复制的内容。然而,新内容一旦复制,旧内容就会被覆盖。因此,选择一款易用高效的剪贴板工具成为了许多人的需求。本文整理了一些适用于 macOS 系统的优秀剪贴板增强工具,欢迎大家下…

【ShuQiHere】 探索数据挖掘的世界:从概念到应用

🌐 【ShuQiHere】 数据挖掘(Data Mining, DM) 是一种从大型数据集中提取有用信息的技术,无论是在商业分析、金融预测,还是医学研究中,数据挖掘都扮演着至关重要的角色。本文将带您深入了解数据挖掘的核心概…

可编辑PPT | 能源企业数字化框架、数字化运营及数字化平台建设方案

项目背景及需求理解 首先提出了全球能源互联网的概念,强调了清洁能源和电能替代的重要性,并介绍了德国工业4.0战略以及泛在电力物联网的创新。文档探讨了信息化与工业化的深度融合,以及云计算、大数据、物联网和移动应用等新技术在能源行业的…