day8题目

1 分布式锁有哪些实现方式?reids是如何实现分布式锁的?讲一讲Redisson实现分布式锁的原理?

分布式锁有哪些实现方式?

1基于MySQL的唯一约束

2基于Redis的setnx key value

3 Redisson(使用最多)

分布式锁必须要满足的特征:

- 多JVM实例都可以访问

- 互斥

Reids是如何实现分布式锁的?

使用Redis的SetNX指令实现分布式锁.(Key不存在才能写入成功,Key存在写入失败)

多个请求通过SetNX向Redis写入Key,写入成功代表加锁成功,运行完之后,删掉写入的Key.

Redisson实现分布式锁的原理

一个客户端的Redisson框架发送加锁请求,根据hash算法选择一个节点,发送到一个节点执行加锁操作,加锁时设置锁的临时存活时间,默认为30s.如果加锁成功,执行watch dog(看门口),执行续期操作.

一个客户端加锁成功之后,其他的客户端会一直尝试加锁.只有加锁成功的客户端释放掉锁,他才能加锁成功.

加锁时,设置锁的存活时间作用:防止线程死掉,无法释放锁.

watch dog作用: 每隔10秒看一下,如果线程还持有锁,则延长锁的生存时间.(防止线程还未执行完毕就被删除)

2 项目中的优惠券的使用功能

本项目中每次使用优惠劵只能使用一张

用户下单时,根据优惠券的使用类型判断,是否符合要求

如果符合要求,在原价的基础上减去优惠价格; 如果不符合要求,无法使用优惠劵.

你可能感兴趣的:(业务题,java)