常见面试题19

简介: BASE理论提出“基本可用、软状态、最终一致性”,是分布式系统中对CAP定理的实践妥协。相比强一致的刚性事务(ACID),它属于柔性事务,强调高可用与最终一致,适用于Seata等分布式事务方案中的AT、TCC、SAGA模式,而非传统2PC的强一致性。

BASE理论

既然分布式系统要遵循CAP定理,那么问题来了,我到底是该牺牲一致性还是可用性呢?如果牺牲了一致性,出现数据不一致该怎么处理?

人们在总结系统设计经验时,最终得到了一些心得:

  • Basically Available 基本可用:分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
  • Soft State软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。
  • Eventually Consistent最终一致性:虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

以上就是BASE理论。

二阶段提交

在分布式系统中,二阶段提交(Two-Phase Commit,简称 2PC)是一种经典的协议,用于保证多个参与方在分布式事务中的一致性。

2PC 协议由两个阶段组成:

  1. 准备阶段(Prepare Phase)
  1. 协调者(通常是事务管理器)向所有参与方发送准备请求,并等待它们的响应。参与方执行本地事务,并将事务的执行结果和准备状态返回给协调者。
  1. 提交阶段(Commit Phase)
  1. 如果所有参与方的准备请求都成功,并且没有发生错误,协调者则发送提交请求给所有参与方。参与方接收到提交请求后,将正式提交事务,并释放相关资源。

如果在任何一个参与方的准备阶段出现错误、超时或者拒绝提交的情况,协调者将发送回滚请求给所有参与方,要求它们撤销之前的操作并回滚事务。

SEATA模式

Seata 是一个开源的分布式事务解决方案,它提供了多种模式来支持不同场景下的分布式事务处理。主要的 Seata 分布式事务模式包括 AT 模式(TCC 模式)、TCC 模式、SAGA 模式和XA 模式。

  1. AT 模式(TCC 模式)
  1. AT 模式是 Seata 最基础的分布式事务模式,也称为 TCC(Try-Confirm-Cancel)模式。在 AT 模式中,事务分为三个阶段:尝试(Try)、确认(Confirm)和取消(Cancel)。应用程序需要实现这三个阶段的方法来保证事务的一致性。
  1. TCC 模式
  1. TCC 模式和 AT 模式类似,也是基于 Try-Confirm-Cancel 的思想,但相比于 AT 模式更加灵活,允许业务逻辑更细粒度地控制事务的各个阶段。
  1. SAGA 模式
  1. SAGA 模式是一种基于状态的分布式事务模式,在每个微服务内部处理自身的事务,并通过事件机制跨服务通信,从而实现全局事务的一致性。
  1. XA 模式
  1. XA 模式是传统的两阶段提交协议,通过 XA 接口来协调多个数据库事务。Seata 通过支持 XA 模式来实现分布式事务的一致性。

Seata是强一致性事务吗

一般使用的是SEATA的AT模式;而AT模式是每个分支事务独立提交事务;所以是非强一致性事务。

柔性事务与刚性事务的区别

柔性事务满足BASE理论(基本可用,最终一致)

Basically Available基本可用

Soft-state 软状态/柔性事务

Eventual Consistency 最终一致性

刚性事务满足ACID理论

Atomic(原子性):要么都成功,要么都失败

Consistent(一致性):数据应该不被破坏

Isolate(隔离性):用户间操作不相混淆

Durable(持久性):永久保存

目录
相关文章
|
1月前
|
人工智能 API 数据安全/隐私保护
近期非常风靡非常逼真的AI视频内容由sora生成的视频是怎么回事?-优雅草卓伊凡
近期非常风靡非常逼真的AI视频内容由sora生成的视频是怎么回事?-优雅草卓伊凡
388 12
近期非常风靡非常逼真的AI视频内容由sora生成的视频是怎么回事?-优雅草卓伊凡
|
1月前
|
人工智能 物联网 调度
边缘大型AI模型:协作部署与物联网应用——论文阅读
论文《边缘大型AI模型:协作部署与物联网应用》系统探讨了将大模型(LAM)部署于边缘网络以赋能物联网的前沿框架。针对传统云端部署高延迟、隐私差的问题,提出“边缘LAM”新范式,通过联邦微调、专家混合与思维链推理等技术,实现低延迟、高隐私的分布式智能。
553 6
边缘大型AI模型:协作部署与物联网应用——论文阅读
|
2月前
|
SQL 存储 分布式计算
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
本文旨在帮助非专业数据研发但是有高频ODPS使用需求的同学们(如数分、算法、产品等)能够快速上手ODPS查询优化,实现高性能查数看数,避免日常工作中因SQL任务卡壳、失败等情况造成的工作产出delay甚至集群资源稳定性问题。
927 36
【万字长文,建议收藏】《高性能ODPS SQL章法》——用古人智慧驾驭大数据战场
|
1月前
|
人工智能 搜索推荐 UED
一个牛逼的国产AI自动化工具,开源了 !
AiPy是国产开源AI工具,结合大语言模型与Python,支持本地部署。用户只需用自然语言描述需求,即可自动生成并执行代码,轻松实现数据分析、清洗、可视化等任务,零基础也能玩转编程,被誉为程序员的智能助手。
|
1月前
|
弹性计算 网络协议 Linux
阿里云服务器ECS创建流程(新手详细图文教程)
本文图解阿里云ECS自定义购买全流程,涵盖付费模式、地域选择、实例规格、镜像、存储、网络、安全组及登录设置等关键步骤,助您快速掌握云服务器配置要点,适合专业用户参考操作。
128 7
|
1月前
|
人工智能 安全 中间件
构建企业级 AI 应用:为什么我们需要 AI 中间件?
阿里云发布AI中间件,推出AgentScope-Java、AI MQ、Higress网关、Nacos注册中心及可观测体系,全面开源核心技术,构建分布式多Agent架构基座,助力企业级AI应用规模化落地,推动AI原生应用进入新范式。
322 26
|
1月前
|
负载均衡 算法 Java
【SpringCloud(2)】微服务注册中心:Eureka、Zookeeper;CAP分析;服务注册与服务发现;单机/集群部署Eureka;连接注册中心
1. 什么是服务治理? SpringCloud封装了Netfix开发的Eureka模块来实现服务治理 在传统pc的远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册
186 1
|
2月前
|
消息中间件 存储 Java
常见面试题02
本内容介绍MQ的应用场景、交换机模式、消息不丢失机制、延迟消息处理及消息挤压解决方案,涵盖RabbitMQ的确认机制、持久化、消费者配置及实际项目应用。
100 1
|
2月前
|
存储 SQL 关系型数据库
常见面试题11
MySQL索引主要使用B+tree结构,具有层级少、检索快、支持范围查询等优点。InnoDB中聚簇索引将数据存于叶子节点,主键为默认索引;二级索引则存储主键值,需回表查询完整数据。创建索引需遵循最左前缀、避免类型转换、函数操作等原则,并通过explain分析执行计划,防止索引失效,提升查询效率。
57 0
|
1月前
|
XML SQL Java
常见面试题15
Spring Boot配置优先级:命令行参数 > 系统属性 > application.properties > .yml > .yaml;自动配置基于@Import与条件注解,SpringBoot3使用xxx.imports替代spring.factories。自定义starter需分离starter与autoconfigure模块。MyBatis支持XML或注解映射结果集,参数传递可用@Param或直接传对象/Map。
106 4