最近在做项目总结,发现使用到了分布式的锁,简单的介绍下项目背景,EXCEL批量导入数据时,同时也有单个数据的操作,为了避免单个数据的操作,影响到批量数据的验证,所以在代码层面使用了张表,这张表存储了批量的信息,例如开始结束时间,状态等信息。然后用户在单个操作时,先对这张表的状态进行验证,如果批量在运行中就不能操作,开始我只是想用个办法简单的去阻断整个流程,后来发现当实例增加时,这个东西就可以理解为分布式锁了。
分布式锁是为了避免多个服务对统一资源进行操作而设计的,它的实现由3种,通过数据库,Redis,zookeeper,我使用过前面的2种来实现分布式锁,记录下我对使用它的理解。
数据库:
数据库的实现先相当于在操作前先查看数据的这张表,然后对表的字段进行判断,然后是否通过,通过后,在进行后续操作。
redis:
Redis使用相当于存储key-value形式,对共有数据进行操作时,先用key取值,然后进行判断,如果合法就继续操作,否则中断操作。
数据库和Redis区别: