背景:项目活动大流量推送,领取奖品.需限制每个用户总领取数和每天领取数
方案一 :本地锁
好处:实现简单,消耗资源低
坏处:依赖于负载均衡根据ip或者其他固定用户属性进行hash,无法做到全局唯一
方案二:使用分布式锁,(这里用redis举例)
好处:保证全局唯一
坏处:需要开发者自己维护锁的高可用,实现成本相比较本地锁高
方案三:基于mysql实现锁select for update 以及唯一索引
好处:实现简单高效
坏处:如果这个事务涉及多表跨服务则无效
背景:项目活动大流量推送,领取奖品.需限制每个用户总领取数和每天领取数
方案一 :本地锁
好处:实现简单,消耗资源低
坏处:依赖于负载均衡根据ip或者其他固定用户属性进行hash,无法做到全局唯一
方案二:使用分布式锁,(这里用redis举例)
好处:保证全局唯一
坏处:需要开发者自己维护锁的高可用,实现成本相比较本地锁高
方案三:基于mysql实现锁select for update 以及唯一索引
好处:实现简单高效
坏处:如果这个事务涉及多表跨服务则无效