【技术实现步骤摘要】
二阶段提交分布式事务更新数据库的实现方法和装置
本说明书涉及网络通信
,尤其涉及一种二阶段提交分布式事务更新数据库的实现方法和装置。
技术介绍
事务提供了一种机制,将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在每个操作都可以正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚。分布式事务中,参与处理事务的各方通常位于不同的网络节点上,2PC(TwoPhaseCommit,二阶段提交)协议被广泛采用,以满足分布式事务的ACID(AtomicityConsistencyIsolationDurability,原子性、一致性、隔离性、持久性)属性。大型网站常常采用分布式事务来实现对数据库的高并发访问。在一些应用场景中,例如在“秒杀”活动中,会在极短的时间内发生对热点行的密集更新。秒杀的性能与用户体验紧密关联,如何提高更新热点行的分布式事务的并发性能,变得尤为重要。
技术实现思路
有鉴于此,本说明书提供一种二阶段提交分布式事务更新数据库的实现方法 ...
【技术保护点】
1.一种二阶段提交分布式事务更新数据库的实现方法,应用在参与者上,所述方法包括:/n根据本事务更新目标数据库记录的指令,为目标数据库记录加写锁后按照所述指令执行更新操作;/n将事务信息记录中状态为提前释放写锁、并且更新对象涉及所述目标数据库记录的其他事务作为本事务的前驱事务,在事务信息记录中记载本事务的前驱事务;/n在收到协调者发送的一阶段准备请求消息后,将本事务更新操作的日志写入日志缓冲区,写入成功后向协调者发送提前释放写锁请求;/n在收到协调者返回的提前释放写锁响应后,释放写锁,并将事务信息记录中本事务的状态置为提前释放写锁;/n在日志缓冲区中本事务更新操作的日志持久化 ...
【技术特征摘要】
1.一种二阶段提交分布式事务更新数据库的实现方法,应用在参与者上,所述方法包括:
根据本事务更新目标数据库记录的指令,为目标数据库记录加写锁后按照所述指令执行更新操作;
将事务信息记录中状态为提前释放写锁、并且更新对象涉及所述目标数据库记录的其他事务作为本事务的前驱事务,在事务信息记录中记载本事务的前驱事务;
在收到协调者发送的一阶段准备请求消息后,将本事务更新操作的日志写入日志缓冲区,写入成功后向协调者发送提前释放写锁请求;
在收到协调者返回的提前释放写锁响应后,释放写锁,并将事务信息记录中本事务的状态置为提前释放写锁;
在日志缓冲区中本事务更新操作的日志持久化成功之后,当本事务的所有前驱事务的状态为提交后向协调者发送准备成功的一阶段准备响应消息,或者当本事务的任一前驱事务的状态为回滚后向协调者发送准备失败的一阶段准备响应消息;
根据本事务在二阶段的执行结果,将事务信息记录中本事务的状态置为提交或回滚。
2.根据权利要求1所述的方法,所述方法还包括:当本事务没有前驱事务时,在日志缓冲区中本事务更新操作的日志持久化成功之后,向协调者发送准备成功的一阶段准备响应消息。
3.根据权利要求1所述的方法,所述提前释放写锁响应中携带有协调者生成的提交时间戳;
所述方法还包括:在事务信息记录中记载本事务的提交时间戳;
所述按照指令执行更新操作,包括:当本次更新操作的时间戳与本事务前驱事务的提交时间戳的差值达到或超过第一阈值时,等待所述前驱事务的状态为提交或回滚后,按照所述指令执行更新操作。
4.根据权利要求1所述的方法,所述提前释放写锁响应中携带有协调者生成的提交时间戳;
所述方法还包括:在事务信息记录中记载本事务的提交时间戳;
所述将本事务更新操作的日志写入日志缓冲区,包括:当本事务更新操作写入日志缓冲区的时间戳、与本事务前驱事务的提交时间戳的差值达到或超过第二阈值时,等待所述前驱事务的状态为提交或回滚后将本事务更新操作的日志写入日志缓冲区。
5.根据权利要求1所述的方法,所述提前释放写锁请求中携带有将本事务更新操作的日志写入日志缓冲区的时间戳,供协调者用来生成本事务的提交时间戳。
6.根据权利要求1所述的方法,所述在事务信息记录中记载本事务的前驱事务,包括:在事务信息记录里本事务的条目中写入本事务的每个前驱事务及前驱事务的状态,在本事务的每个前驱事务的条目中将本事务记载为所述前驱事务的后继事务;
所述根据本事务在二阶段的执行结果,将事务信息记录中本事务的状态置为提交或回滚,包括:根据本事务在提交/回滚阶段的执行结果,将事务信息记录里本事务的条目中的状态更新为提交或回滚,将本事务的后继事务的条目中本事务的状态更新为提交或回滚。
7.根据权利要求1所述的方法,所述方法还包括:持久化事务信息记录中本事务的前驱事务和本事务的状态。
8.一种二阶段提交分布式事务更新数据库的实现方法,应用在协调者上,所述方法包括:
向参与者发送结束本事务的一阶段准备请求消息;所述本事务用于更新目标数据库记录;
在收到所有参与者发送的提前释放写锁请求后,向每个参与者返回提前释放写锁响应,指示每个参与者对其目标数据库记录解锁;所述提前释放写锁请求由参与者在将本事务更新操作的日志写入日志缓冲区成功后发送。
9.根据权利要求8所述的方法,所述方法还包括:在收到所有参与者发送的提前释放写锁请求后,生成本事务的提交时间戳;
所述提前释放写锁响应中携带有本事务的提交时间戳。
10.根据权利要求9所述的方法,所述提前释放写锁请求中携带有发送所述提前释放请求的参与者将本事务更新操作的日志写入日志缓冲区的时间戳;
所述生成本事务的提交时间戳,包括:将所有参与者发送的提前释放请求中所述写入日志缓冲区的时间戳里最晚的一个作为本事务的提交时间戳。
11.一种二阶段提交分布式事务更新数据库的实现装置,应用在参与者上,所述装置包括:
更新操作执行单元,用于根据本事务更新目标数据库记录的指令,为目标数据库记录加写锁后按照所述指令执行更新操作;
前驱事务发现单元,用于将事务信息记录中状态为提前释放写锁、并且更新对象涉及所述目标数据库记录的其他事务作为本事务的前驱事务,在事务信息记录中记载本事务的前驱事务;
释放写锁请求单元,用于在收到协调者发送的一阶段准备请求消息后,将本事务更新操作的日志写入日志缓冲区,写入成功后向协调者发...
【专利技术属性】
技术研发人员:韩富晟,肖金亮,高山岩,杨传辉,罗一鑫,
申请(专利权)人:北京奥星贝斯科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。