Spring Cloud 教程(一) | 认识Spring Cloud
Spring Cloud Alibaba教程(一) | 认识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 关系的详细解析:
二、Spring Cloud Netflix
Netflix 是收费视频网站公司的名字,全球十大视频网站之一。
Spring Cloud Netflix 是 Spring Cloud 生态系统中的一个子项目,它基于 Netflix 开源的一系列组件构建而成,为开发者提供了一套完整的解决方案,用于构建可伸缩、高可用、可靠的分布式系统。
Netflix 公司最初开发了这些组件用于自己的业务,后来逐渐开源并集成到 Spring Cloud 中。
- 主要功能与组件:Spring Cloud Netflix 包含了多个关键组件,如 Eureka(服务注册与发现)、Ribbon(客户端负载均衡)、Feign(声明式HTTP客户端)、Hystrix(熔断器)和 Zuul(API网关)等。这些组件共同协作,实现了服务治理、负载均衡、熔断保护、智能路由等功能。
- 当前状态:需要注意的是,自2018年12月12日起,Netflix 公司宣布停止对其内部开源组件的维护,转而推荐社区自行维护。
这意味着 Spring Cloud Netflix 中的部分组件将不再得到官方更新和支持。尽管如此,由于其在微服务领域的广泛应用和成熟性,Spring Cloud Netflix 仍然是一个重要的选项,但开发者可能需要考虑未来维护和更新的问题。
五大核心组件
组件 | 名称 | 具体作用 |
---|---|---|
Eureka | 服务注册与发现 | 允许服务通过REST API向Eureka注册自身信息 允许客户端通过Eureka发现已注册的服务 Eureka Server作为服务注册中心,维护服务清单,并监测服务健康状态 提供服务治理功能,如服务注册、发现、健康检查等 |
Ribbon | 客户端负载均衡 | 提供客户端的软件负载均衡算法和服务调用 自动从Eureka Server获取服务列表,并根据配置的负载均衡策略(如轮询、随机等)进行服务调用 支持多种配置项,如连接超时、重试等 |
Feign | 声明式HTTP客户端 | 简化HTTP客户端的编写,使得HTTP请求如同调用本地方法一样 通过@FeignClient注解定义服务接口,Feign会自动生成代理类,并处理HTTP请求和响应 支持多种HTTP客户端实现,如JDK原生的URLConnection、Apache HttpClient等 |
Hystrix | 熔断器 | 提供线程和信号量隔离,减少服务间资源竞争 提供优雅降级机制,当服务调用失败时,可以回退到备用逻辑 提供熔断机制,当服务调用失败率达到一定阈值时,自动熔断,避免级联失败 监控服务调用情况,提供实时数据,帮助快速定位问题 |
Zuul | API网关 | 提供统一的访问入口,为微服务架构提供路由和过滤功能 支持动态路由,可以根据请求的不同路径转发到不同的后端服务 提供负载均衡、校验过滤、服务容错、服务聚合等功能 可以通过加载动态过滤机制,实现验证与安全保障、审查与监控等功能 |
三、Spring Cloud Alibaba
Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与 Spring Cloud 体系的融合。它旨在为中国开发者提供更加贴近国内技术生态和需求的微服务解决方案。
- 主要功能与组件:Spring Cloud Alibaba 包含了多个关键组件,如 Nacos(服务注册与发现、配置中心)、Sentinel(流量控制、熔断降级)、RocketMQ(消息队列)、Dubbo(RPC框架)和 Seata(分布式事务解决方案)等。
这些组件共同为开发者提供了全面的微服务开发支持,覆盖了服务治理、流量控制、消息驱动、分布式事务等多个方面。 - 优势与特点:Spring Cloud Alibaba 使用的是更活跃且持续维护的组件,并针对云原生场景做了优化,更适合当前微服务架构的发展趋势。此外,它还集成了阿里巴巴云的商业化组件,如阿里云对象存储服务(OSS)、分布式任务调度产品(SchedulerX)等,为开发者提供了更多的选择和便利。
核心组件
组件 | 名称 | 具体作用 |
---|---|---|
Nacos | 服务注册与发现 | 提供动态服务注册与发现的能力,支持服务的自动注册、发现、健康检查等,是微服务架构中服务治理的基础。 |
Sentinel | 流量控制、熔断降级 | 作为流量控制、熔断降级的组件,Sentinel能够在系统面临高并发或下游服务故障时,自动进行流量控制、熔断降级等操作,保护系统不被压垮。 |
RocketMQ | 消息中间件 | 提供高性能、高可靠的分布式消息服务,支持发布/订阅模式和点对点模式,适用于解耦服务间通信、异步处理、数据流处理等场景。 |
Seata | 分布式事务 | 解决微服务架构下的分布式事务问题,提供全局事务的一致性管理,确保跨多个服务的业务操作数据一致性。 |
三、Spring Cloud Netflix和Spring Cloud Alibaba 的平替关系
以下是一个表格,显示了Spring Cloud Netflix和Spring Cloud Alibaba之间存在的核心组件平替关系:
Spring Cloud Netflix 组件 | Spring Cloud Alibaba 组件 | 平替关系说明 |
---|---|---|
Eureka | Nacos | Nacos提供了与Eureka类似的服务注册与发现功能,同时增加了配置管理的功能,可以作为Eureka的替代品。 |
Hystrix | Sentinel | Sentinel提供了与Hystrix类似的熔断降级和流量控制功能,是Hystrix的替代品。Sentinel在性能和功能上都有所提升,并且更适应云原生场景。 |
请注意,由于Spring Cloud的不断发展,一些组件的替代品可能也在不断变化。在实际使用中,建议查阅最新的Spring Cloud和Spring Cloud Alibaba文档以获取最准确的信息。
四、Spring Cloud Alibaba 微服务套餐(现阶段)
组件名称 | 组件中文名称 | 来源 | 主要功能 |
---|---|---|---|
Nacos | 注册中心、配置中心 | Spring Cloud Alibaba | 服务注册与发现、配置中心 |
Ribbon | 负载均衡 | Spring Cloud | 客户端负载均衡器,从服务注册中心获取服务地址列表,并根据配置的策略进行负载均衡 |
Feign | 服务调用 (使用Spring Cloud OpenFeign) | Spring Cloud OpenFeign | 声明式Web服务客户端,简化了HTTP API的调用,集成了Ribbon和Hystrix,支持服务发现和客户端负载均衡 |
Sentinel | 流量控制、熔断降级 | Spring Cloud Alibaba | 流量控制、熔断降级、系统负载保护 |
Gateway | 服务网关 | Spring Cloud | API网关,提供路由和过滤功能,支持动态路由、负载均衡等 |
Seata | 分布式事务 | 阿里云开源 | 分布式事务解决方案,提供全局事务一致性管理 |
RocketMQ | 消息队列 | 阿里云开源 | 分布式消息中间件,提供低延时的、高可靠的消息发布与订阅服务 |
说明:
关于远程服务调用这一块:
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客户端功能。
参考文章
【1】Spring Cloud Alibaba-全面详解(学习总结—从入门到深化)
【2】SpringCloud【微服务架构进化论、微服务的拆分规范和原则、为什么选择Spring Cloud、什么是服务治理 】(一)-全面详解(学习总结—从入门到深化)
原文地址:https://blog.csdn.net/qq_20236937/article/details/142461962
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!