黑马点评订单如何保证一定成功?
全部评论
异步线程从消息队列中获取消息后,开始减库存并插入订单,两个操作是加事务的,肯定同时成功和失败。
(我觉得有点意思的是lua脚本要是执行一半后失败该怎样处理倒是很好的问题)
redis+lua脚本
黑马扣减库存是在redis用lua完成的,不成功不会写入数据库
加事务
我记得黑马点评那块不是用事务了吗?因为那个是内部调用存在事务失效的情况,所以人家用的事务的代理对象,
m
相关推荐
点赞 评论 收藏
分享
06-14 13:13
门头沟学院 Java 程序员牛肉:其实你这个问题千言万语是一句话:如何保证Redis跟数据库的一致性嘛。
各大公司都是有那种对账的。数据一致性校验平台这种中间件来去确保二者之间数据的一致性。
你可以这样理解,就是我们在这个平台上面呢会基于代码呢去实现一个规则,就是说我去监听数据库的binlog日志,然后会对binlog日志进行实时解析,跟目标数据源进行对比,以此呢来判断数据是否一致。
那放到你这个场景里面呢,就是说每当一个用户的优惠券落库的时候呢,那它会产生对应的log日志,我们就把这个日志捞出来,从log日志里面取出信息拼接Redis的对应key,查一遍Redis。
如果radius里面有数据,那就说明c口跟log的数据是一致的,如果没有就说明他们两个有一端不可信嘛,那你就选择可信的一端,对另外一端进行数据补偿就好。
点赞 评论 收藏
分享