分布式场景中的常见的技术问题及解决,如分布式锁、分布式事务、分布式 session、分布式任务调度

目录

一、分布式锁

二、分布式事务

三、分布式Session

四、分布式任务调度


在分布式场景中,常见的技术问题及其解决方案涉及多个方面,包括分布式锁、分布式事务、分布式session和分布式任务调度。以下是对这些问题的详细探讨:

一、分布式锁

常见问题

  1. 锁的唯一性:确保分布式环境下同一资源只能被一个进程或线程访问。
  2. 死锁问题:客户端异常或网络问题可能导致锁无法释放,形成死锁。
  3. 锁的续期问题:业务逻辑执行时间可能超过锁的有效期,需要续期。

解决方案

  1. 使用Redis实现分布式锁
    • 利用Redis的SETNX(Set if Not eXists)命令实现加锁,同时设置锁的过期时间,避免死锁。
    • 使用Lua脚本保证加锁和设置过期时间的原子性。
    • 解锁时检查锁是否由当前客户端持有,防止误解锁。
  2. 使用ZooKeeper实现分布式锁
    • 利用ZooKeeper的临时有序节点实现锁机制,节点自动删除机制可以避免死锁。
    • 通过事件回调机制通知等待的客户端获取锁。

二、分布式事务

常见问题

  1. 数据一致性问题:多个服务或数据库之间的数据需要保持一致性。
  2. 事务的隔离性:确保事务之间的隔离程度,避免脏读、不可重复读和幻读。

解决方案

  1. 两阶段提交(2PC)
    • 准备阶段:参与者执行事务操作,并返回执行结果给协调者。
    • 提交阶段:协调者根据参与者执行结果通知参与者进行提交或回滚。
    • 缺点:同步阻塞、单点问题、数据一致性问题。
  2. 三阶段提交(3PC)
    • 在2PC基础上增加预提交阶段,以更好地处理协调者故障。
    • 但仍未完全解决数据一致性问题。
  3. 补偿事务(TCC)
    • Try阶段:检测及预留资源。
    • Confirm阶段:对业务系统做确认提交。
    • Cancel阶段:出现错误时回滚。
  4. 本地消息表+消息队列
    • 节点完成操作后发送消息到本地消息表,确保消息一定能写成功。
    • 本地消息表将消息转发到消息队列,其他节点从消息队列中读取消息并执行。
  5. MQ事务消息
    • 利用RocketMQ等消息队列实现最终一致性分布式事务。

三、分布式Session

常见问题

  1. Session共享问题:在分布式系统中,不同服务器之间的Session需要共享。

解决方案

  1. 使用数据库存储Session
    • 将Session信息存储在数据库中,通过数据库共享Session。
  2. 使用Redis存储Session
    • 利用Redis的分布式特性,将Session信息存储在Redis中,实现快速访问和共享。
  3. Session同步工具
    • 使用Tomcat自带的Session同步工具,但需注意性能和延时问题。

四、分布式任务调度

常见问题

  1. 任务重复执行:在分布式系统中,同一定时任务可能被多个节点重复执行。
  2. 任务执行顺序:需要保证任务之间的执行顺序和依赖关系。

解决方案

  1. 使用分布式任务调度框架
    • 如Quartz、XXL-JOB、LTS-admin等,这些框架支持分布式部署,能够统一管理和调度任务。
  2. 任务去重
    • 在任务执行前进行去重检查,确保同一任务不会被重复执行。
  3. 任务依赖管理
    • 在任务调度框架中配置任务之间的依赖关系,确保任务按预期顺序执行。

综上所述,分布式场景中的常见技术问题及其解决方案需要综合考虑系统的具体需求和场景,采用合适的技术和工具来实现。

参考:

分布式事务、分布式锁与分布式任务调度纪要-CSDN博客

分布式问题,你知道几个?-CSDN博客

分布式事务常见解决方案(2024.4.18)-CSDN博客

分布式系统常见的问题和解决办法 - 简书

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值