分布式事务处理方案及分布式锁相关

本文偏理论

一、事务处理

1、事务处理的四个特性ACID

Atomicity 原子性:

对于数据库的修改,全部执行or全部不执行

Consistency 一致性:

Isolation 隔离性 :

亦称为串行化,防止事务间操作混淆,需要串行化或者序列化请求,使得在同一时间仅有一个请求用于同一数据

Durability 持久性:

分布式事务处理方案及分布式锁相关

2、本地事务处理

Spring注解@Transactional

使用@Transactional,使用aop(面向切面)的方式进行管理,可使用isolation配置事务隔离级别,我的理解是Spring基于单体服务模式的本地事务处理,并不是分布式的处理方式

3、分布式事务解决方案

应对场景:

一个事务有多个步骤组成,涉及跨服务(应用)或者跨数据库的事务场景,大致可分为三类场景:同服务跨库场景、跨服务场景、混合式场景
在这里插入图片描述

如客户下单,涉及订单服务、库存服务、支付服务、积分服务,任何一步失败,都涉及相关事务的处理

处理逻辑:

强一致性(设计复杂)、最终一致性(使用较多)

解决方案:

业务设计原则:允许空补偿 、幂等性、防悬挂

*空补偿:*Cancel执行时,Try未执行,事务分支的Cancel操作需要判断出Try未执行,这时需要忽略Cancel中的业务数据更新,直接返回

*悬挂:*Try执行时,Cancel已执行完成,事务分支的Try操作需要判断出Cancel一致性,这时需要忽略Try中的业务数据更新,直接返回

(1)TCC模式

补偿型事务(try confirm cancel)

在这里插入图片描述

(2)Saga模式

补偿型事务,但是它没有 try 阶段,而是把分布式事务看作一组本地事务构成的事务链
在这里插入图片描述

(3)基于消息的分布式事务

对业务侵入较低,最终一致性的解决方案

对消息中间件要求较高,且普通消息不能支持,需要中间件支持事务型消息(RocketMq)
在这里插入图片描述

或者通过维护 本地消息表来实现
在这里插入图片描述

二、分布式锁

应对场景:

集群模式下,一个方法或属性在高并发情况下的同一时间只能被同一个线程执行

实现方式:

1、基于数据库实现

2、基于redis实现

3、zookeeper



参考文档:
分布式事务解决方案
https://mp.weixin.qq.com/s/2AL3uJ5BG2X3Y2Vxg0XqnQ
分布式锁的三种实现方式
https://cloud.tencent.com/developer/article/1628536

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
智慧公租房管理云平台解决方案旨在通过应用先进的信息技术和智能化管理系统,提升公租房管理的效率和品质,确保住房困难群众能够享受到安全、舒适、便捷的居住环境。以下是该解决方案的主要组成部分和关键要素: 一、系统架构 智慧公租房管理云平台采用云计算、大数据、物联网、人工智能等先进技术,构建一个集成化、智能化的管理平台。平台包括前端应用、后端管理和数据中心三个部分,前端应用主要面向租户和管理人员,后端管理面向管理员和运营人员,数据中心则负责数据存储和分析。 二、功能模块 租户服务模块:提供在线租房申请、合同签订、租金缴纳、报修投诉等一站式服务,方便租户随时随地处理相关事务。 房屋管理模块:实现对公租房的信息化管理,包括房屋信息录入、状态监控、维修维护等功能,确保房屋设施的正常运行。 安全管理模块:通过安装智能门锁、监控摄像头等设备,实现对公租房的安全监控和预警,确保租户的人身安全。 数据分析模块:利用大数据技术对平台数据进行挖掘和分析,为管理决策提供有力支持,提高管理效率和服务质量。 三、技术特点 高可靠性:采用分布式架构和容灾备份技术,确保平台的稳定运行和数据安全。 易用性:界面简洁明了,操作简单方便,满足不同用户群体的使用需求。 可扩展性:平台支持无缝扩展,可根据业务需求进行功能模块的增加和调整。 安全性:采用多重安全防护措施,保障平台和数据的安全可靠。 四、实施步骤 需求调研:深入了解公租房管理的实际需求和业务流程,为平台开发提供有力支持。 平台开发:根据需求调研结果,进行平台的设计和开发工作,确保平台功能的全面性和实用性。 系统部署:完成平台的部署和配置工作,确保平台能够稳定运行并提供服务。 培训与推广:对管理人员和租户进行培训,推广平台的使用方法和优势,提高平台的使用率和满意度。 五、预期效果 通过实施智慧公租房管理云平台解决方案,可以实现以下预期效果: 提高管理效率:通过自动化、智能化的管理方式,减少人工干预和繁琐操作,提高管理效率和质量。 提升服务质量:为租户提供更加便捷、高效的服务体验,满足租户多样化的需求。 加强安全保障:通过智能监控和预警机制,加强对公租房的安全管理和风险控制,确保租户的人身安全。 促进可持续发展:通过数据分析和挖掘,为公租房的可持续发展提供有力支持,推动住房保障事业的持续健康发展。 总之,智慧公租房管理云平台解决方案是一个集成了信息技术和智能化管理系统的综合性平台,旨在提升公租房管理的效率和品质,为租户提供更加安全、舒适、便捷的居住环境。
淘宝Fourinone(中文名字“四不像”)是一个四合一分布式计算框架,在写这个框架之前,我对分布式计算进行了长时间的思考,也看了老外写的其他开源框架,当我们把复杂的hadoop当作一门学科学习时,似乎忘记了我们想解决问题的初衷:我们仅仅是想写个程序把几台甚至更多的机器一起用起来计算,把更多的cpu和内存利用上,来解决我们数量大和计算复杂的问题,当然这个过程中要考虑到分布式的协同和故障处理。如果仅仅是为了实现这个简单的初衷,为什么一切会那么复杂,我觉的自己可以写一个更简单的东西,它不需要过度设计,只需要看上去更酷一点,更小巧一点,功能更强一点。于是我将自己对分布式的理解融入到这个框架中,考虑到底层实现技术的相似性,我将Hadoop,Zookeeper,MQ,分布式缓存四大主要的分布式计算功能合为一个框架内,对复杂的分布式计算应用进行了大量简化和归纳。 首先,对分布式协同方面,它实现了Zookeeper所有的功能,并且做了很多改进,包括简化Zookeeper的树型结构,用domain/node两层结构取代,简化Watch回调多线程等待编程模型,用更直观的容易保证业务逻辑完整性的内容变化事件以及状态轮循取代,Zookeeper只能存储信息不大于1M的内容,Fourinone超过1M的内容会以内存隐射文件存储,增强了它的存储功能,简化了Zookeeper的ACL权限功能,用更为程序员熟悉rw风格取代,简化了Zookeeper的临时节点和序列节点等类型,取代为在创建节点时是否指定保持心跳,心跳断掉时节点会自动删除。Fourinone是高可用的,没有单点问题,可以有任意多个复本,它的复制不是定时而是基于内容变更复制,有更高的性能,Fourinone实现了领导者选举算法(但不是Paxos),在领导者服务器宕机情况下,会自动不延时的将请求切换到备份服务器上,选举出新的领导者进行服务,这个过程中,心跳节点仍然能保持健壮的稳定性,迅速跟新的领导者保持心跳连接。基于Fourinone可以轻松实现分布式配置信息,集群管理,故障节点检测,分布式锁,以及淘宝configserver等等协同功能。 其次, Fourinone可以提供完整的分布式缓存功能。如果对一个中小型的互联网或者企业应用,仅仅利用domain/node进行k/v的存储即可,因为domain/node都是内存操作而且读写锁分离,同时拥有复制备份,完全满足缓存的高性能与可靠性。对于大型互联网应用,高峰访问量上百万的并发读写吞吐量,会超出单台服务器的承受力,Fourinone提供了fa?ade的解决方案去解决大集群的分布式缓存,利用硬件负载均衡路由到一组fa?ade服务器上,fa?ade可以自动为缓存内容生成key,并根据key准确找到散落在背后的缓存集群的具体哪台服务器,当缓存服务器的容量到达限制时,可以自由扩容,不需要成倍扩容,因为fa?ade的算法会登记服务器扩容时间版本,并将key智能的跟这个时间匹配,这样在扩容后还能准确找到之前分配到的服务器。另外,基于Fourinone可以轻松实现web应用的session功能,只需要将生成的key写入客户端cookie即可。 Fourinone对于分布式大数据量并行计算的解决方案不同于复杂的hadoop,它不像hadoop的中间计算结果依赖于hdfs,它使用不同于map/reduce的全新设计模式解决问题。Fourinone有“包工头”,“农民工”,“手工仓库”的几个核心概念。“农民工”为一个计算节点,可以部署在多个机器,它由开发者自由实现,计算时,“农民工”到“手工仓库”获取输入资源,再将计算结果放回“手工仓库”返回给“包工头”。“包工头”负责承包一个复杂项目的一部分,可以理解为一个分配任务和调度程序,它由开发者自己实现,开发者可以自由控制调度过程,比如按照“农民工”的数量将源数据切分成多少份,然后远程分配给“农民工”节点进行计算处理,它处理完的中间结果数据不限制保存在hdfs里,而可以自由控制保存在分布式缓存、数据库、分布式文件里。如果需要结果数据的合并,可以新建立一个“包工头”的任务分配进行完成。多个“包工头”之间进行责任链式处理。总的来说,是将大数据的复杂分布式计算,设计为一个链式的多“包工头”环节去处理,每个环节包括利用多台“农民工”机器进行并行计算,无论是拆分计算任务还是合并结果,都可以设计为一个单独的“包工头”环节。这样做的好处是,开发者有更大能力去深入控制并行计算的过程,去保持使用并行计算实现业务逻辑的完整性,而且对各种不同类型的并行计算场景也能灵活处理,不会因为某些特殊场景被map/reduce的框架限制住思维,并且链式的每个环节也方便进行监控过程。 Fourinone也可以当成简单的mq来使用,将domain视为mq队列,每个node为一个队列消息,监控domain的变化事件来获取队列消息。也可以将domain视为订阅主题,将每个订阅者注册到domain的node上,发布者将消息逐一更新每个node,订阅者监控每个属于自己的node的变化事件获取订阅消息,收到后删除内容等待下一个消息。但是Fourinone不实现JMS的规范,不提供JMS的消息确认和消息过滤等特殊功能,不过开发者可以基于Fourinone自己去扩充这些功能,包括mq集群,利用一个独立的domain/node建立队列或者主题的key隐射,再仿照上面分布式缓存的智能根据key定位服务器的做法实现集群管理。 Fourinone整体代码短小精悍,跟Hadoop, Zookeeper, Memcache, ActiveMq等开源产品代码上没有任何相似性,不需要任何依赖,引用一个jar包就可以嵌入式使用,良好支持window环境,可以在一台机器上模拟分布式环境,更方便开发。 开发包里自带了一系列傻瓜上手demo,包括分布式计算、统一配置管理、集群管理、分布式锁、分布式缓存、MQ等方面, 每个demo均控制在少许行代码内,但是涵盖了Fourinone主要的功能,方便大家快速理解并掌握。 Fourinone 2.0新增功能: Fourinone2.0提供了一个4合1分布式框架和简单易用的编程api,实现对多台计算机cpu,内存,硬盘的统一利用,从而获取到强大计算能力去解决复杂问题。Fourinone框架提供了一系列并行计算模式(农民工/包工头/职介绍/手工仓库)用于利用多机多核cpu的计算能力;提供完整的分布式缓存和小型缓存用于利用多机内存能力;提供像操作本地文件一样操作远程文件(访问,并行读写,拆分,排它,复制,解析,事务等)用于利用多机硬盘存储能力;由于多计算机物理上独立,Fourinone框架也提供完整的分布式协同和锁以及简化MQ功能,用于实现多机的协作和通讯。 一、提供了对分布式文件的便利操作, 将集群中所有机器的硬盘资源利用起来,通过统一的fttp文件路径访问,如: windows:fttp://192.168.0.1/d:/data/a.log linux:fttp://192.168.0.1/home/user/a.log 比如以这样的方式读取远程文件: FttpAdapter fa = FttpAdapter("fttp://192.168.0.1/home/log/a.log"); fa.getFttpReader().readAll(); 提供对集群文件的操作支持,包括: 1、元数据访问,添加删除,按块拆分, 高性能并行读写,排他读写(按文件部分内容锁定),随机读写,集群复制等 2、对集群文件的解析支持(包括按行,按分割符,按最后标识读取) 3、对整形数据的高性能读写支持(ArrayInt比ArrayList存的更多更快) 4、两阶段提交和事务补偿处理 5、自带一个集群文件浏览器,可以查看集群所有硬盘上的文件(不同于hadoop的namenode,没有单点问题和容量限制) 总的来说, 将集群看做一个操作系统,像操作本地文件一样操作远程文件。 但是fourinone并不提供一个分布式存储系统,比如文件数据的导入导出、拆分存储、负载均衡,备份容灾等存储功能,不过开发人员可以利用这些api去设计和实现这些功能,用来满足自己的特定需求。 二、自动化class和jar包部署 class和jar包只需放在工头机器上, 各工人机器会自动获取并执行,兼容操作系统,不需要进行安全密钥复杂配置 三、网络波动状况下的策略处理,设置抢救期,抢救期内网络稳定下来不判定结点死亡 fourinone-3.04.25最新版升级内容: 1、编译和运行环境升级为jdk7.0版本; 2、计算中止和超时中止的支持,比如多台计算机工人同时执行查找,一旦某台计算机工人找到,其余工人全部中止并返回。以及可以由工人控制或者框架控制的计算过程超时中止。 3、一次性启动多工人进程支持,可以通过程序api一次性启动和管理“ParkServer/工头/工人”多个进程,并附带良好的日志输出功能,用于代替写批处理脚本方式,方便部署和运行。 4、增加了相应指南和demo。 本软件遵循apache2.0开源软件协议,自由分享 (C) 2007-2012 Alibaba Group Holding Limited

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值