你真的需要分布式锁吗?
用到分布式锁说明遇到了多个进程共同访问同一个资源的问题。一般是在两个场景下会防止对同一个资源的重复访问:
-
**提高效率。**比如多个节点计算同一批任务,如果某个任务已经有节点在计算了,那其他节点就不用重复计算了,以免浪费计算资源。不过重复计算也没事,不会造成其他更大的损失。也就是允许偶尔的失败。
-
**保证正确性。**这种情况对锁的要求就很高了,如果重复计算,会对正确性造成影响。这种不允许失败。
引入分布式锁势必要引入一个第三方的基础设施,比如 MySQL,Redis,Zookeeper 等。这些实现分布式锁的基础设施出问题了,也会影响业务,所以在使用分布式锁前可以考虑下是否可以不用加锁的方式实现?不过这个不在本文的讨论范围内,本文假设加锁的需求是合理的,并且偏向于上面的第二种情况,为什么是偏向?因为不存在 100% 靠谱的分布式锁,看完下面的内容就明白了。
什么是数据库
数据库就是存储数据的地方,好比家里的冰箱用来存放食物,衣柜用来存放衣物…
正是有了数据库之后,我们可以直接查找数据。比如你每天看余额宝账户的收益,其实就是数据库从后台读取给你的。
常见的数据库面试题有:Redis、MySQL、MongoDB、Zookeeper等等
一、40道常见Redis面试题
二、高频140道MySQL面试题
三、MongoDB必问24道面试题
36道Zookeeper核心面试题
Zookeeper核心知识点+分布式过程
MongoDB学习笔记
MySQL21个最佳性能优化实践
最后
各位读者,由于本篇幅度过长,为了避免影响阅读体验,下面我就大概概括了整理了
(img-XxYUSFD5-1710239403851)]
[外链图片转存中…(img-aZeVUHqx-1710239403851)]
需要更多Java资料的小伙伴可以帮忙点赞+关注,点击传送门,即可免费领取!