Spring Cloud Alibaba题目

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 五道关于Spring Cloud Alibaba的题目,希望能帮助初学者。

Spring Cloud  Alibaba

1. Spring Cloud Alibaba的五大组件

  1. Sentinel: 把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
  2. Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
  3. RocketMQ:一款开源的分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息发布与订阅服务.
  4. Dubbo: Apache DubboTm 是 款高性能 Java RPC 框架。
  5. Seata: 阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。
    其他组件扩展
  6. Alibaba Cloud 0SS:阿里云对象存储服务 (Object Storage Service,简称 0SS),是里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
  7. Alibaba Cloud Schedulerx:阿里中间件团队开发的一款分布式任务调度产品,提供秘级、精准、高可靠、高用的定时(基于 Cron表达式)任务调度服务。
  8. Alibaba Cloud SMS: 覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道.

2. Seata有哪几种模式,分别有什么优缺点

Seata只有四种模式: XA、AT(默认)、TCC、Seaga

  1. XA: 强一致性,基于数据库隔离,无代码侵入,在一阶段不提交事务
  2. AT:默认模式,基于全局锁离,无代码侵入,一阶段提交事务,在提交事务前,会记录undolog日志,性合XA模工好,二阶段TC通知回滚,则根据undolog回滚,通知提交,则删除undolog日志
  3. TCC:性能最好,不需要依赖关系型数据库,但代码入侵读高。Try:冻结可用数据,Confirm:确认提交数据,删除冻数据 Canel:恢复数据,将冻结数据恢复
  4. Seaga: 用于长事务,例如A项目调另外一个公司的项目接口。优缺点:
  1. XA:强一致性,无代码侵入、但一阶段事务不提交、会锁住资源,导致性能低。需要依赖数据库的事务特性
  2. AT:默认,弱一致性,无代码侵入,一阶段事务直接提交,失败则根据undolog日志回滚,隔离性引入全局锁,但并发几率低,所以性能会比XA好。
  3. TCC:无需依赖关系型数据库,基于资源预留隔离。try、confim、canel需要人工手写,而且需要考虑空悬挂、空回滚、幂等性判断较为复杂、性能最好,但成本太高。
  4. Seaga:适用于长事务类型,无太多应用场景
  5. 下图为AT模式
  6. image.png

**3. 负载均衡策略

负载均衡分两种: 一种是服务端负载均衡,一种是客户端负载均衡

服务端负载均衡: 通常所说的负载均衡指服务器负载均衡,是有服务器来决定调用哪个节点;

通过硬件或软件实现负载均衡均会 维护一个服务端清单,利用心跳检测等手段进行清单维护,保证清单中都是可以正常访问的服务节点 。当用户发送请求时,会先到达负载均衡器 (也相当于服务), 负载均衡器根据负载均衡算法(轮训、随机、加权轮训)从可用的服务端列表中取出一台服务端的地址,接着进行转发,降低系统的压力。

客户端负载均衡:实际上是指服务器调用者,在SpringCloud中调用者本身继承负载均衡,由调用者决定调用哪个节点的服务;

Ribbon 维护了一个服务列表,如果服务实例注销或死掉,Ribbon 能够自行将其剔除。 Ribbon 提供了客户端负载均衡的功能,Ribbon 利用从注册中心中读取到的服务信息列表(存储在本地即客户端中),在调用某个服务时,根据负载均衡算法直接请求到具体的微服务实例,常用的负载均衡算法有: 轮循、随机、加权轮循、加权随机、地址哈希等方法 。

拓展知识:

两者的区别:两者主要区分点在于服务清单的存放位置: 在客户端负载均衡中,客户端会存储一份服务端清单,它是通过从注册中心进行抓取得到的,同时也需要对此进行维护。而在服务端负载均衡中,服务端自己会维护一份服务端清单。

4.Nacos在服务器中突然挂掉怎么办

1.缩短默认的健康检查时间

通过Nacos提供的心跳周期配置,再结合自身的业务场景,我们就可以选择最适合的心跳检测机制,尽最大可能避免对业务的影响。

这个方案看起来心跳周期越短越好,但这样会对Nacos服务端造成一定的压力。如果服务器允许,还是可以尽量缩短的。

2.Nacos的保护阈(yu)值

本质上,保护阈值是⼀个⽐例值(当前服务健康实例数/当前服务总实例数)。

⼀般流程下,服务消费者要从Nacos获取可⽤实例有健康/不健康状态之分。Nacos在返回实例时,只会返回健康实例。

但在⾼并发、⼤流量场景会存在⼀定的问题。比如,服务A有100个实例,98个实例都处于不健康状态,如果Nacos只返回这两个健康实例的话。流量洪峰的到来可能会直接打垮这两个服务,进一步产生雪崩效应。

保护阈值存在的意义在于当服务A健康实例数/总实例数 < 保护阈值时,说明健康的实例不多了,保护阈值会被触发(状态true)。

Nacos会把该服务所有的实例信息(健康的+不健康的)全部提供给消费者,消费者可能访问到不健康的实例,请求失败,但这样也⽐造成雪崩要好。牺牲了⼀些请求,保证了整个系统的可⽤。

3.SpringCloud的请求重试

即便上面我们对心跳周期进行了调整,但在某一实例发生故障时,还会有短暂的时间出现Nacos服务没来得及将异常实例剔除的情况。此时,如果消费端请求该实例,依然会出现请求失败。

为了构建更为健壮的应用系统,我们希望当请求失败的时候能够有一定策略的重试机制,而不是直接返回失败。这个时候就需要开发人来实现重试机制。

在微服务架构中,通常我们会基于Ribbon或Spring Cloud  LoadBalancer来进行负载均衡处理。除了像Ribbon、Feign框架自身已经支持的请求重试和请求转移功能。Spring  Cloud也提供了标准的loadbalancer相关配置。

4.如果单节点Nacos挂了,不会导致整个系统不可用,而是会先使用本地缓存的数据,等Nacos恢复后再重新拉去最新的数据

Nacos源码种通过putService()方法将服务缓存到内存,service.init()建立心跳机制,通过consistencyService.listen实现数据 致性监听

总结: Nacos客户端通过Open API的形式发送服务注册请求,Nacos服务端收到请求后,做以下二件事: 构建一个Service对象保存到ConcurrentHashMap集合中,使用定时任务对当前服务下的所有实例建立心跳检测机制,基于数据一致性协议服务数据进行同步

Sentinel 的主要功能

1.流量控制

sentinel可以根据需要把随机的请求调整成合适的形式

2.熔断降级

检测到调用链路中某个资源出现不稳定的表现 (如: 请求响应时间长或者异常比例升高),则对这人资源的调用进行限制,让请求快速失败,避免影响到其它的资源导致级联故障sentient对熔断提供了两种方案:1: 通过并发线程数进行限制2: 通过响应时间对资源进行降级。通过响应时间来快速降级不稳定的资源,当依赖的资源出现响应故障后,所有对该资源的访问都会被直接拒绝,直到符合指定的时间窗口之后才会重新回复

与hystrix:相同点: 原则是一致的,当一个资源出现问题时快速让其失败,不波及到其他服区别:hystrix采用的是线程池的隔离方式,优点是做到了资源之间的隔离,缺点是增加了线程切换成本sentinel 采用的是通过并发线程的数量和响应时间来对资源做限制

3.系统负载保护

当系统负载较高的时候,还持续进行访问,可能导致系统崩溃,无法响应,在集群环境下,会把本应当前机器成灾的流量转发到其他的机器上去,如果其他机器也处于一个边缘状态,sentinel会提供对应的保护机制,让系统的入口流量和系统的负载达到一个平衡,保证系统在能力范围内处理最多的请求


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3天前
|
人工智能 安全 Java
AI 时代:从 Spring Cloud Alibaba 到 Spring AI Alibaba
本次分享由阿里云智能集团云原生微服务技术负责人李艳林主讲,主题为“AI时代:从Spring Cloud Alibaba到Spring AI Alibaba”。内容涵盖应用架构演进、AI agent框架发展趋势及Spring AI Alibaba的重磅发布。分享介绍了AI原生架构与传统架构的融合,强调了API优先、事件驱动和AI运维的重要性。同时,详细解析了Spring AI Alibaba的三层抽象设计,包括模型支持、工作流智能体编排及生产可用性构建能力,确保安全合规、高效部署与可观测性。最后,结合实际案例展示了如何利用私域数据优化AI应用,提升业务价值。
|
27天前
|
SpringCloudAlibaba 负载均衡 Dubbo
【SpringCloud Alibaba系列】Dubbo高级特性篇
本章我们介绍Dubbo的常用高级特性,包括序列化、地址缓存、超时与重试机制、多版本、负载均衡。集群容错、服务降级等。
【SpringCloud Alibaba系列】Dubbo高级特性篇
|
4天前
|
人工智能 Java API
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
本次分享的主题是阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手,由阿里云两位工程师分享。
阿里云工程师跟通义灵码结伴编程, 用Spring AI Alibaba来开发 AI 答疑助手
|
27天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
27天前
|
SpringCloudAlibaba JavaScript Dubbo
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
本文介绍了 Dubbo-Admin 的安装和使用步骤。Dubbo-Admin 是一个前后端分离的项目,前端基于 Vue,后端基于 Spring Boot。安装前需确保开发环境(Windows 10)已安装 JDK、Maven 和 Node.js,并在 Linux CentOS 7 上部署 Zookeeper 作为注册中心。
【SpringCloud Alibaba系列】Dubbo dubbo-admin安装教程篇
|
27天前
|
SpringCloudAlibaba Dubbo Java
【SpringCloud Alibaba系列】Dubbo基础入门篇
Dubbo是一款高性能、轻量级的开源Java RPC框架,提供面向接口代理的高性能RPC调用、智能负载均衡、服务自动注册和发现、运行期流量调度、可视化服务治理和运维等功能。
【SpringCloud Alibaba系列】Dubbo基础入门篇
|
27天前
|
人工智能 前端开发 Java
Spring AI Alibaba + 通义千问,开发AI应用如此简单!!!
本文介绍了如何使用Spring AI Alibaba开发一个简单的AI对话应用。通过引入`spring-ai-alibaba-starter`依赖和配置API密钥,结合Spring Boot项目,只需几行代码即可实现与AI模型的交互。具体步骤包括创建Spring Boot项目、编写Controller处理对话请求以及前端页面展示对话内容。此外,文章还介绍了如何通过添加对话记忆功能,使AI能够理解上下文并进行连贯对话。最后,总结了Spring AI为Java开发者带来的便利,简化了AI应用的开发流程。
335 0
|
14天前
|
人工智能 自然语言处理 Java
Spring Cloud Alibaba AI 入门与实践
本文将介绍 Spring Cloud Alibaba AI 的基本概念、主要特性和功能,并演示如何完成一个在线聊天和在线画图的 AI 应用。
191 7
|
1月前
|
Java Nacos Sentinel
Spring Cloud Alibaba:一站式微服务解决方案
Spring Cloud Alibaba(简称SCA) 是一个基于 Spring Cloud 构建的开源微服务框架,专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。
300 13
Spring Cloud Alibaba:一站式微服务解决方案
|
2月前
|
存储 人工智能 Java
Spring AI Alibaba 配置管理,用 Nacos 就够了
本文通过一些实操案例展示了 Spring AI Alibaba + Nacos 在解决 AI 应用中一系列复杂配置管理挑战的方案,从动态 Prompt 模板的灵活调整、模型参数的即时优化,到敏感信息的安全加密存储。Spring AI Alibaba 简化了对接阿里云通义大模型的流程,内置 Nacos 集成也为开发者提供了无缝衔接云端配置托管的捷径,整体上极大提升了 AI 应用开发的灵活性和响应速度。
345 14

热门文章

最新文章