【技术实现步骤摘要】
分布式锁的实现方法和装置
本说明书一个或多个实施例涉及计算机
,尤其涉及通过计算机在分布式系统中对数据库进行加锁的方法和装置。
技术介绍
分布式架构是分布在多个处理器运行或分布在多个存储器存储的架构方式。许多大型服务器都通过分布式架构实现。分布式系统之间的数据一致性,是一个重要问题。通常,通过保证在同一时间一个方法只能被一个线程执行来保证数据的一致性。为了保证同一时间一个方法只能被一个线程执行,常规技术提供了分布式锁的方法,用于保证同一个方法在同一时间被一个线程锁定。常用的分布式锁有基于数据库锁表、基于数据库排他锁、基于缓存分布式锁等。这些技术有的可能不能适应高并发的情况、有的可能因为解锁失败或分布式锁时效影响业务、有的可能将行级锁变成表锁而存在高风险。因此,希望能有改进的方案,提供稳定的分布式锁方式,能够适应高并发情况,提高分布式系统的有效性。
技术实现思路
本说明书一个或多个实施例描述了一种分布式锁的实现方法和装置,针对多个用户的业务请求,先通过分布的虚拟机锁在锁定对象的维度上对业务请求进行过滤,针对虚拟机锁过滤后的业务请求,再进一步通过数据库锁从锁定对象的维度保证在同一时间,针对锁定对象的业务只能被一个线程执行,既能适应高并发的业务请求,又能保证系统的稳定性,从而可以提高分布式系统的有效性。根据第一方面,提供了一种分布式锁的实现方法,所述方法包括:接收第一用户针对第一业务发起的业务请求;根据所述业务请求获取第一虚拟机锁,其中,所述第一虚拟机锁与预设的锁定对象唯一对应,所述锁定对象包括以下一项或多项:所述第一用户、所述第一业务;在获取到所述第一虚拟机 ...
【技术保护点】
1.一种分布式锁的实现方法,所述方法包括:接收第一用户针对第一业务发起的业务请求;根据所述业务请求获取第一虚拟机锁,其中,所述第一虚拟机锁与预设的锁定对象唯一对应,所述锁定对象包括以下一项或多项:所述第一用户、所述第一业务;在获取到所述第一虚拟机锁的情况下,针对所述锁定对象创建数据库锁,以根据所述业务请求对所述数据库进行与所述锁定对象相关的数据操作。
【技术特征摘要】
1.一种分布式锁的实现方法,所述方法包括:接收第一用户针对第一业务发起的业务请求;根据所述业务请求获取第一虚拟机锁,其中,所述第一虚拟机锁与预设的锁定对象唯一对应,所述锁定对象包括以下一项或多项:所述第一用户、所述第一业务;在获取到所述第一虚拟机锁的情况下,针对所述锁定对象创建数据库锁,以根据所述业务请求对所述数据库进行与所述锁定对象相关的数据操作。2.根据权利要求1所述的方法,其中,根据所述业务请求获取第一虚拟机锁包括:从第一线程的线程变量中查询第一虚拟机锁对应的第一锁变量,其中,所述第一线程是基于所述业务请求而创建,用于完成所述第一业务,所述第一线程维护至少一个线程变量,所述第一锁变量是与所述锁定对象唯一对应的、至多允许一个线程获取的互斥量,所述第一锁变量在加锁成功的情况下,被添加到所述第一线程的线程变量;在从所述线程变量中查询到所述第一锁变量的情况下,确定获取到所述第一虚拟机锁。3.根据权利要求2所述的方法,其中,所述根据所述业务请求获取第一虚拟机锁还包括:在从所述线程变量中查询不到所述第一锁变量的情况下,查询锁变量集中是否记录有所述第一锁变量,其中,所述锁变量集用于记录当前存在的各个锁变量以及各个锁变量的使用状态;在所述锁变量集记录有所述第一锁变量的情况下,检测所述第一锁变量是否被第二线程锁定;在所述第一锁变量没有被第二线程锁定的情况下,对所述第一锁变量加锁以获取所述第一虚拟机锁,并响应于加锁成功,将所述第一锁变量添加到所述第一线程的线程变量,以及确定获取到所述第一虚拟机锁。4.根据权利要求3所述的方法,其中:在所述第一锁变量被第二线程锁定的情况下,确定获取所述第一锁变量失败,从而确定获取所述第一虚拟机锁失败。5.根据权利要求3所述的方法,其中:在从所述锁变量集查询不到所述第一锁变量的情况下,创建所述第一锁变量,并将所述第一锁变量添加到所述锁变量集;对所述第一锁变量加锁以获取所述第一虚拟机锁;在对所述第一锁变量加锁成功的情况下,更新所述锁变量集中所述第一锁变量的使用状态,并将所述第一锁变量添加到所述第一线程的线程变量,以及确定获取到所述第一虚拟机锁。6.根据权利要求4所述的方法,其中,在获取所述第一虚拟机锁失败的情况下:释放所述第一线程;或者将所述第一线程确定为所述第一虚拟机锁的等待线程。7.根据权利要求3所述的方法,其中,在所述第一线程结束时,从所述第一线程的线程变量中获取所述第一锁变量进行解锁,并将所述第一锁变量从所述第一线程的线程变量中移除。8.根据权利要求7所述的方法,其中,所述将所述第一锁变量从所述线程变量中移除包括:将所述第一锁变量从所述第一线程的线程变量中移入所述锁变量集。9.根据权利要求1所述的方法,其中,所述针对所述锁定对象创建数据库锁包括:向数据库插入第一锁数据,所述第一锁数据包含所述锁定对象的目标标识,以锁定与所述锁定对象对应的第一数据,并基于所述第一数据进行与所述锁定对象相关的数据操作。10.根据权利要求9所述的方法,其中,所述方法还包括:在所述数据操作完成的情况下,删除所述第一锁数据。11.根据权利要求10所述的方法,其中,所述方法还包括:在删除所述第一锁数据失败的情况下,通过按照预定时间间隔执行的定时任务对所述第一锁数据进行清理,其中,所述定时任务用于清理所述数据库中超过预定时长的锁数据记录。12.一种分布式锁的实现装置,所述装置包括:接收单元,配置为接收第一用户针对第一业务发起的业务请求;第一加锁单元,配置为根据所述业务请求获取第一虚拟机锁,其中,所述第一虚拟机锁与预设的锁定对象唯一对应,所述锁定对象包括以下一项...
【专利技术属性】
技术研发人员:杨宇,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:开曼群岛,KY
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。