For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
对于大多数软件开发架构师来说,掌握分布式锁的应用能够让我们适应更多的软件架构环境,下面我们就通过案例分析来简单了解一下,分布式锁的概念与应用分析。
1、关于分布式锁
在单体系统中,我们经常会遇到很多高并发的场景,比如热点数据、热点缓存,短时间会有大量的请求进行访问,当多个线程同时访问共享资源的时候,就可能产生数据不一致的情况。
为了保证操作的顺序性、原子性,所以我们需要辅助,比如在线程间中加锁,当某个线程得到资源的时候,就对当前的资源进行加锁,等完成操作之后,进行释放,其他线程就可以继续使用了。
分布式锁需要解决的问题一般包含如下:
排他性:分布式部署的应用集群中,同一个方法在同一时间只能被一台机器上的一个线程执行。
避免死锁:锁在执行一段有限的时间之后,会被释放(正常释放或异常导致自动释放),并且可以被重入,即当前线程可重复获取。
高可用/高性能:获取锁和释放锁具备高可用;获取和释放锁的性能优良。
2、分布式锁的实现方案
分布式锁的实现,比较常见的方案有3种:
基于数据库实现分布式锁
基于缓存(Redis或其他类型缓存)实现分布式锁
基于Zookeeper实现分布式锁
3、数据库锁的优缺点
直接使用数据库,容易理解、操作简单。
但是会有各种各样的问题,在解决问题的过程中会使整个方案变得越来越复杂。操作数据库需要一定的开销,性能问题需要考虑,特别是高并发场景下。
使用数据库的行级锁并不一定靠谱,尤其是当我们的锁表并不大的时候。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。