[发明专利]一种实现业务幂等的方法、装置、设备和介质在审
| 申请号: | 202110913728.3 | 申请日: | 2021-08-10 |
| 公开(公告)号: | CN113703831A | 公开(公告)日: | 2021-11-26 |
| 发明(设计)人: | 刘鹏 | 申请(专利权)人: | 青岛海尔科技有限公司;海尔智家股份有限公司 |
| 主分类号: | G06F8/73 | 分类号: | G06F8/73;G06F9/52 |
| 代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 张静 |
| 地址: | 266101 山东省*** | 国省代码: | 山东;37 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 实现 业务 方法 装置 设备 介质 | ||
本申请提供了一种实现业务幂等的方法、装置、设备和介质,其中,方法包括:扫描业务代码,从业务代码中确定目标对象,为目标对象加锁,并执行目标对象,在目标对象执行完后,将加在目标对象上的锁释放。由此可见,本申请提供的实现业务幂等的方法使得在实现业务幂等的过程中,开发人员仅在业务代码中的目标对象上增加注解即可,无需针对各目标对象额外编写代码,对开发人员更友好,并且使用成本较低。
技术领域
本申请涉及计算机技术领域,特别是涉及一种实现业务幂等的方法、装置、设备和介质。
背景技术
在复杂分布式系统中,接口幂等是基本要求。例如,购物车提交时,由于网络抖动或用户频繁点击可能会多次请求创单接口,创单接口对于购物车流水号应该幂等。
可基于分布式锁为目标对象加锁和释放锁,即基于分布式锁为待进行幂等操作的对象加锁和释放锁,以避免目标对象重复执行,保证了业务幂等性,比如,基于数据库唯一索引的分布式锁为目标对象加锁和释放锁;基于数据库乐观锁为目标对象加锁和释放锁;基于数据库悲观锁为目标对象加锁和释放锁;基于redis实现的分布式锁为目标对象加锁和释放锁;基于zookeeper锁为目标对象加锁和释放锁;等等。
目前,通常需要开发人员针对各目标对象额外编写代码,以基于分布式锁实现为目标对象加锁和释放锁,例如,基于数据库唯一索引的分布式锁为业务代码中的目标对象加锁和释放锁时,需要开发人员在业务代码中编写加锁、释放锁、补偿和异常处理等代码。但是,额外编写代码对开发人员不友好,并且现有的分布式锁的使用成本通常较高。
发明内容
有鉴于此,本申请提供了一种实现业务幂等的方法和装置,以解决现有技术中额外编写代码对开发人员不友好且分布式锁的使用成本高的问题,其技术方案如下:
一种实现业务幂等的方法,包括:
扫描业务代码,从业务代码中确定目标对象,目标对象为待进行幂等操作的对象,目标对象标注有注解;
为目标对象加锁,并执行目标对象;
在目标对象执行完后,将加在目标对象上的锁释放。
可选的,为目标对象加锁,包括:
生成目标对象对应的切面AOP;
基于切面AOP为目标对象加锁;
将加在目标对象上的锁释放,包括:
基于切面AOP将加在目标对象上的锁释放。
可选的,还包括:
若目标对象执行的过程中产生业务异常,则拦截目标对象,并将加在目标对象上的锁释放。
可选的,在目标对象执行完后,将加在目标对象上的锁释放,包括:
若目标对象执行成功,则确定目标对象所在线程是否处于锁定状态;
若是,则将加在目标对象上的锁释放。
可选的,目标对象上添加的锁设置有超时时间;
实现业务幂等的方法,还包括:
基于目标对象上加的锁内部的异步定时任务定时扫描目标对象上加的锁;
若在超时时间内对目标对象上的锁执行释放锁操作,且释放失败,则使目标对象上加的锁自动释放。
可选的,实现业务幂等的方法,还包括:
若在超时时间内未对目标对象上的锁执行释放锁操作,则延长超时时间。
可选的,目标对象上加的锁为乐观锁或基于Redis的分布式锁。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于青岛海尔科技有限公司;海尔智家股份有限公司,未经青岛海尔科技有限公司;海尔智家股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110913728.3/2.html,转载请声明来源钻瓜专利网。





