每日必会7

简介: CAP理论指出分布式系统中一致性(C)、可用性(A)、分区容错性(P)不可兼得,P必然存在,故只能在A与C间权衡。BASE理论提出基本可用、软状态、最终一致性的解决方案。Seata AT模式通过全局事务ID(XID)协调分支事务注册、执行与提交/回滚,实现分布式事务一致性。MQ防消息丢失需生产者确认、持久化、消费者手动ACK;防重复消费可借助幂等机制;百万消息积压可通过扩容、批量处理、异步削峰解决。

CAP和Base理论了解吗
Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致。
Availability (可用性):用户访问集群中的任意健康节点必须能得到响应,而不是超时或拒绝。
Partition(分区):因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。
Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务
系统间的网络不能100%保证健康,一定会有故障的时候,而服务又必须对外保证服务。因此Partition Tolerance不可避免。
如果此时要保证一致性,就必须等待网络恢复,完成数据同步后,整个集群才对外提供服务,服务处于阻塞状态,不可用。
如果此时要保证可用性,就不能等待网络恢复,那node01、node02与node03之间就会出现数据不一致。
也就是说,在P一定会出现的情况下,A和C之间只能实现一个
BASE理论是对CAP的一种解决思路,包含三个思想:
Basically Available(基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
Soft State(软状态):在一定时间内,允许出现中间状态,比如临时的不一致状态。
Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。
说下Seata的AT模式执行流程吧
其余模式同理,这里不重复,要能说出XA、AT、TCC执行流程

Seata AT模式的执行流程:
分布式事务发起方发送全局事务开始请求(Begin)给Seata Server,Seata Server为该全局事务生成一个全局事务ID(XID)。
分布式事务发起方开始执行本地事务,并在本地事务执行前向Seata发起分支事务注册请求(Branch Register),包括全局事务ID(XID)、分支事务ID(Branch ID)、分支事务参与者(即本地事务的执行者)等信息。
分布式事务发起方执行本地事务,如果本地事务执行成功,则向Seata发起分支事务提交请求(Branch Report);如果本地事务执行失败,则向Seata发起分支事务回滚请求(Branch Report)。
Seata Server接收到分支事务提交或回滚请求后,会根据请求的结果来决定是否进行全局事务的提交或回滚。
如果所有分支事务都提交成功,Seata会向所有参与者发送全局事务提交请求(Global Commit);如果有任何一个分支事务回滚,Seata会向所有参与者发送全局事务回滚请求(Global Rollback)。
参与者接收到全局事务提交或回滚请求后,根据请求的指令来执行本地事务的提交或回滚操作。
理论专项
MQ
怎么防止消息丢失
怎么防止消息重复消费
100W个消息怎么防止积压

相关文章
|
7天前
|
消息中间件 人工智能 决策智能
AgentScope x RocketMQ:构建多智能体应用组合
AgentScope是阿里巴巴推出的开发者友好型多智能体框架,支持模块化、可定制的智能体应用开发。通过集成RocketMQ,实现高效、可靠的A2A通信,助力构建如“智能旅行助手”等复杂协作场景,提升开发效率与系统可扩展性。(238字)
|
7天前
|
存储 JSON NoSQL
MongoDB常用命令
本文介绍如何使用MongoDB存储文章评论数据,涵盖数据库与集合的创建、文档的增删改查、批量操作、投影查询、排序分页及更新修饰符等核心操作,帮助快速掌握MongoDB基本用法。
|
7天前
|
NoSQL Linux Shell
MongoDB单机部署
本文介绍MongoDB在Windows与Linux系统的安装启动方法,涵盖下载、解压、配置数据目录与端口,支持命令行和配置文件方式启动服务。详细说明如何通过mongo shell连接数据库,使用Compass图形化工具管理,以及Linux下部署、防火墙配置和安全关闭服务等操作,助你快速搭建MongoDB运行环境,适用于开发与生产场景。
|
7天前
|
缓存 Java 数据库连接
MyBatis常见配置
MyBatis配置优先级:方法参数 > resource/url > properties。支持缓存、延迟加载、自动生成主键等配置,可通过environments配置多环境,默认使用development。事务管理支持JDBC和MANAGED,与Spring集成时由Spring接管事务。
|
7天前
|
XML Java 数据库连接
MyBatis映射关系(1-1 1-n n-n)
本文介绍MyBatis四大关联映射:一对一(字段-属性映射)、一对多(如用户含多个角色,用`<collection>`)、多对一(如博客关联作者,用`<association>`)和多对多(通过中间类实现,如用户与部门)。解决复杂实体关系映射问题,提升数据查询效率与灵活性。
|
7天前
|
SQL Java 数据库连接
MyBatis分页
本文介绍MyBatis分页实现方式:RowBounds为内存分页,大数据易溢出;PageHelper等插件通过SQL改写实现物理分页,支持多数据库;还可借助subList或自定义拦截器分页。总结:大数据场景推荐物理分页,性能更优,优先于逻辑分页。(238字)
|
7天前
|
SQL 缓存 Java
MyBatis
MyBatis配置优先级:方法参数 > resource/url > properties体内。支持多环境、JDBC/MANAGED事务管理,XML实现一对一、一对多关联映射,分页支持逻辑与物理方式,推荐BatchExecutor批量操作,一级缓存默认开启,二级缓存需手动配置。
|
7天前
|
XML Java 数据格式
SpringBoot@Configuration使用总结
被@Configuration标注的类视为Spring配置类,等同于XML配置文件,通过@Bean定义Bean。结合AnnotationConfigApplicationContext可启动IOC容器,加载并管理所有Bean实例,包括配置类自身,实现基于注解的容器配置与组件注册。(238字)
|
7天前
|
安全 数据安全/隐私保护 微服务
SpringSecurity权限管理
权限管理涵盖认证与授权,通过ACL、RBAC等模型实现用户身份校验与角色权限分配,构建安全访问控制,保障系统数据与流程安全。
|
7天前
|
人工智能 缓存 NoSQL
AIGC项目
专注AI与高并发架构实战,精通大模型私有化部署、RAG知识库、AIGC生成(文生图/图修复)及Stable Diffusion应用。熟练掌握Spring Cloud微服务、Redis缓存、分库分表、分布式事务与任务调度,具备统一支付、保险系统、派单调度等复杂业务系统设计开发能力。