
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习计算机编程开发技术,而今天我们就通过案例分析来了解一下,分布式锁应用与实践方案分析。
实现原理
通过数据库的方式实现分布式锁的效果,实际就是借助于数据库的性约束特性或者forupdate来实现。这里以性约束来举个栗子,在电商领域的库存服务负责对商品的库存进行扣减,先创建一张专门存放锁信息的锁表,那么库存服务在进行库存操作之前,先向数据库中的锁表插入一条锁资源数据。
方案分析
基于数据库的实现方式,看起来还是比较容易理解的。但是实际上还是有一些问题存在的,我们一起来分析下。
1、性能问题:由于是插入数据数据需要落盘存储,如果平凡进行读写的话会影响数据库性能,另外由于使用键进行判断也会一定程度上影响数据库性能,因此数据库方案适用于并发量不到的简单场景;
2、数据库如果单点部署的话会存在单点故障问题,如果数据库出现故障,可能会导致平台中的业务异常;
3、死锁问题:在上文介绍中,包含了插入数据库的获取锁的步骤,还包含了删除锁信息的释放锁的过程,但是如果库存服务1在加锁之后挂掉了,无法进行锁的释放,而其他服务又无法获取到锁就会造成死锁的问题。当然了我们可以通过一个定时任务去检查锁表中是不是有过时的锁资源。但是这样无疑增加了分布式锁实现的复杂性。
4、不支持可重入:如果想要实现可重入锁,还需要增加主机、线程名等字段来进行标注,通过这几个字段来判断和当前信息是否一致,如果一致则认为已经获取到了锁。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。