分布式面试题

内容分类 详情
Java高频面试题 汇总入口
JVM JVM面试题
并发 并发面试题
Spring Spring面试题
分布式 分布式面试题
SpringBoot SpringBoot面试题
SpringCloud SpringCloud面试题
Dubbo Dubbo面试题
MySQL MySQL面试题
Mybatis Mybatis面试题
Redis Redis面试题
RocketMQ RocketMQ面试题
算法 算法面试题
遇到的问题 遇到的问题
面试官的其他问题 面试官的其他问题
Git Git面试题

文章目录

    • 分布式事务解决方案Seata原理
    • 分布式定时任务
    • 注册中心

分布式事务解决方案Seata原理

在 Seata 中主要有以下三种角色,其中 TM 和 RM 是作为 Seata 的客户端与业务系统集成在一起,TC 作为 Seata 的服务端独立部署:

事务协调器(TC):维护全局事务的运行状态,负责协调并驱动全局提交或回滚。
事务管理器(TM):事务发起方,控制全局事务的范围,负责开启一个全局事务,并最终发起全局提交或回滚全局的决议。
资源管理器(RM):事务参与方,管理本地事务正在处理的资源,负责向 TC 注册本地事务、汇报本地事务状态,接收 TC 的命令来驱动本地事务的提交或回滚。

整体流程:

分布式面试题_第1张图片

Seata 分布式事务的整体执行机制如上图所示,可以大致分为两阶段提交:

① 发起方 TM 向 TC 申请开启一个全局事务,全局事务创建成功并生成唯一的全局事务标识 XID,该 XID 在后续事务的服务调用链路的上下文传播(通过Aop实现))

② RM 向 TC 注册分支事务,汇报资源准备状况,并与 XID 进行绑定(Branch分支事务指分布式事务中每个独立的本地局部事务)

③ TM 向 TC 发起 XID 下的所有分支事务的全局提交或回滚请求(事务一阶段结束)

④ TC 汇总事务信息,决定分布式事务是提交还是回滚

⑤ TC 通知所有 RM 提交/回滚 资源,事务二阶段结束

分布式定时任务

传统定时任务的问题:

  1. 耦合代码,占用CPU影响项目的稳定性
  2. 集群部署,每个节点都执行了任务,导致资源浪费,数据重复统计。

分布式面试题_第2张图片

分布式面试题_第3张图片

分布式定时任务的原理:
调度中心和执行器两个角色,他们之间通过使用的Nettty服务的RPC协议进行通讯。

  1. xxl-job-excutor启动时开启注册线程,执行器所在机器地址注册到调度中心的执行器管理中。
  2. 任务管理监听任务的执行时机,如果有任务要执行,会获取任务信息,根据配置的任务执行策略,通过调度器向执行任务服务下发任务,执行服务会把任务先放到待执行队列中,执行任务的线程池通过JobHandler线程依次消息队列中的任务并执行。
  3. JobHandler线程把执行结果放到结果队列中,通知把执行日志放到调度中心的日志管理中。用户通过xxl-job-admin查询日志。

注册中心

CAP
Consistency 一致性
Availability 可用性
Partition tolerance 分区容错性

zk满足:CP
eureka采用AP方式
nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式

你可能感兴趣的:(想进厂,分布式,面试)