SpringCloudAlibaba

文章目录

  • 一、SpringCloudAlibaba是什么?
  • 二、核心组件
    • [1 Nacos](#1 Nacos)
      • [1.1 Nacos介绍](#1.1 Nacos介绍)
      • [1.2 什么是Nacos?](#1.2 什么是Nacos?)
      • [1.3 为何使用Nacos?](#1.3 为何使用Nacos?)
    • 2.Sentinel
      • [2.1 什么是Sentinel](#2.1 什么是Sentinel)
      • [2.2 Sentinel好处](#2.2 Sentinel好处)
    • [3 GateWay](#3 GateWay)
      • [3.1 网关介绍](#3.1 网关介绍)
      • [3.2 GateWay](#3.2 GateWay)
      • [3.3 基本概念:](#3.3 基本概念:)
    • [4 Seata](#4 Seata)
      • [4.1 分布式事务](#4.1 分布式事务)
      • [4.2 分布式事务理论](#4.2 分布式事务理论)

一、SpringCloudAlibaba是什么?

Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。

依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

二、核心组件

1 Nacos

1.1 Nacos介绍

Nacos(Naming Configuration Service) 是一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序

服务发现是微服务架构中的关键组件之一。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

1.2 什么是Nacos?

  1. Nacos = 注册中心+配置中心组合

1.3 为何使用Nacos?

采用微服务以后,软件微服务组件各自独立,但最终还要组合为一个整体作为一个软件系统服务于最终客户,这时软件组件之间也需要彼此通讯,彼此调用方法。微服务架构内部发起通讯调用方法的一方成为"服务消费者 ",提供远程方法调用的服务器称为"服务提供者 ",往往为了提高系统性能,会提供多个服务器作为服务提供者 ,此时服务消费者 找到服务提供者 的过程,就类似于用户在找房间的过程。为了帮助服务消费者 快速的发现服务提供者 ,在微服务框架中都会引入注册中心。注册中心 类似于酒店的前台,提供在软件服务的注册和发现功能,服务提供者 会先在注册中心进行注册 ,声明可以对外提供服务,而服务消费者 只需要在注册中心就可以快速发现 找到可以使用的服务,快速使用服务。注册中心实现了服务提供和服务消费的快速撮合功能。

2.Sentinel

2.1 什么是Sentinel

分布式系统的流量防卫兵 :随着微服务的普及,服务调用的稳定性变得越来越重要。Sentinel以"流量"为切入点,在流量控制、断路、负载保护等多个领域开展工作,保障服务可靠性。

2.2 Sentinel好处

​ 分布式系统面临的问题:复杂的体系结构中的应用程序有数十个依赖关系,每个依赖关系在某些时候将不可避免的失败,比如如下的例子中,当我们调用A、E、F、J、K这几个服务的时候如果其中一个服务出现问题会造成什么问题?其实就会出现整体系统效率全部下降,而且严重就会出现服务雪崩 的问题!

服务雪崩:

​ 多个微服务之间调用的时候,假设A调用B和C,B和C又调用其他的微服务,这就是所谓的扇出 。如果扇出的某个链路上某个微服务调用的响应时间过程或者不可用,微服务A的调用就用占用越来越多的系统资源,从而引起系统崩溃,这也就是服务雪崩 。其实就是服务的高可用 遭到了破坏。

​ 要解决这种问题的出现我们就需要用到服务降级,而Sentinel就可以保证在一个依赖出现问题的情况下,不会导致整体服务失败,避免级联故障,提高分布式系统的弹性。
Sentinel的熔断降级通过断路器实现:

​ 断路器:它本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似于熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方法无法出的异常,这样就保证了服务调用方的不会被长时间、不必要的占用,从而避免了故障在分布式系统中蔓延(类似于病毒传染),从而避免了故障在系统中蔓延,乃至崩溃。

3 GateWay

3.1 网关介绍

在微服务架构中,一个系统会被拆分为很多个微服务。那么作为客户端要如何去调用这么多的微服务呢?如果没有网关的存在,我们只能在客户端记录每个微服务的地址,然后分别去调用,这样的话会产生很多问题。

为了解决这些问题所以引入了网关的概念:所谓的API网关,就是指系统的统一入口,提供内部服务的路由中转,为客户端提供统一服务,一些与业务本身功能无关的公共逻辑可以在这里实现,诸如认证、鉴权、监控、路由转发等。

3.2 GateWay

Spring Cloud Gateway 基于Spring Boot 2.x、Spring WebFlux和Project Reactor,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。它的目标是替代Netflix Zuul,其不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控和限流。
特点:

  1. 性能强劲:是Zuul的1.6倍
  2. 功能强大:内置了很多实用的功能,例如转发、监控、限流等
  3. 设计优雅,容易扩展

3.3 基本概念:

路由(Route) 是 gateway 中最基本的组件之一,表示一个具体的路由信息载体。主要定义了下面的几个信息:

  • id:路由标识、区别于其他route
  • uri:路由指向的目的地uri,即客户端请求最终被转发到的微服务
  • order:用于多个route之间的排序,数值越小排序越靠前,匹配优先级越高
  • predicate:断言的作用是进行条件判断,只有断言都返回真,才会真正的执行路由
  • filter:过滤器用于修改请求和响应信息

4 Seata

4.1 分布式事务

分布式事务指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统 的不同节点之上,且属于不同的应用,分布式事务需要保证这些操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性
基础概念:事务ACID

  • A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失 败的情况。
  • C(Consistency):一致性,在事务执行前后,数据库的一致性约束没有被破坏。比如:张三向李四转100元, 转账前和转账后的数据是正确状态这叫一致性,如果出现张三转出100元,李四账户没有增加100元这就出现了数 据错误,就没有达到一致性。
  • I(Isolation):隔离性,数据库中的事务一般都是并发的,隔离性是指并发的两个事务的执行互不干扰,一个事 务不能看到其他事务运行过程的中间状态。通过配置事务隔离级别可以避脏读、重复读等问题。
  • D(Durability):持久性,事务完成之后,该事务对数据的更改会被持久化到数据库,且不会被回滚。

4.2 分布式事务理论

随着互联化的蔓延,各种项目都逐渐向分布式服务做转换。如今微服务已经普遍存在,本地事务已经无法满足分布式的要求,由此分布式事务问题诞生。 分布式事务被称为世界性的难题,目前分布式事务存在两大理论依据:CAP定律 BASE理论。

CAP定律

这个定理的内容是指的是在一个分布式系统中、Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

  • 一致性(C)

    在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

  • 可用性(A)

    在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)

  • 分区容错性(P)

    以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择

BASE理论

BASE是Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。

  • 基本可用:保证核心服务是可以使用的,至于其他的服务可以适当的降低响应时间,甚至是服务降级
  • 软状态:存在中间状态,不影响整体系统使用,数据同步存在延时
  • 最终一致性:再过了流量高峰期以后,经过一段时间的同步,保持各服务数据的一致
相关推荐
sunnyday04261 天前
Spring Cloud Alibaba Sentinel 流量控制与熔断降级实战指南
spring boot·sentinel·springcloud
悟空码字4 天前
Spring Cloud 集成 Nacos,全面的配置中心与服务发现解决方案
java·nacos·springcloud·编程技术·后端开发
坐不住的爱码10 天前
Bootstrap和application.yml
springcloud
悟空码字11 天前
Spring Cloud Gateway实战,从零搭建API网关,构建高性能微服务统一入口
java·gateway·springcloud·编程技术·后端开发
没有bug.的程序员12 天前
Service Mesh 与 Spring Cloud 共存方案:双体系治理、平滑迁移与风险控制实战指南
云原生·springcloud·流量治理·混合架构·servicemesh·微服务迁移·技术演进
奥升新能源平台15 天前
奥升充电平台安全稳定体系构建
运维·安全·开源·springcloud
qq_1659016915 天前
spring-cloud读取Nacos上的配置
java·spring cloud·springcloud
无心水15 天前
【分布式利器:腾讯TSF】2、腾讯微服务框架TSF实战指南:Spring Boot零侵入接入与容器化部署全流程
java·spring boot·分布式·微服务·springcloud·分布式利器·腾讯tsf
麦兜*17 天前
【Spring Boot 3 + Spring AI】 实战:十分钟集成 OpenAI API 构建智能应用
java·人工智能·spring boot·spring·ai编程·springcloud
Mr.wangh1 个月前
SpringCloudConfig(配置中心)
大数据·elasticsearch·搜索引擎·springcloud·config