您的位置:首页 > 其它

分布式环境下保证幂等性

2016-01-12 10:54 197 查看
分布式环境中(非分布式也一样)在对某个进行数据添加的时候比如:点赞,用户点赞的时候将点赞信息存入到点赞表中,然后就是校验点赞查询是否存在一条记录,考虑到一些外界原因(dubbo 重新发起请求,当然正式环境下是关闭重新请求的,插入成功后没有给客户端返回成功信息等等。。。)导致重复提交点赞信息,这个时候数据库中就会有多条记录,当然就有问题了,查询的时候在sql中增加limit
1保证系统不会有问题,当然这样解决是不合理的,但是这样可以保证系统不会因为数据的问题整个瘫痪

解决办法:

1.在数据库中对能确定这条点赞记录的字段建立唯一索引,列如:用户id,记录id,记录类型等等,那么在插入库的时候就不会插入重复的记录了,如果业务要求可以点赞多次的时候这样就不行了,所以不建议用,不利于扩展

2.插入记录之前,首先查询,校验数据库中是否已经存在记录,这种方法最简单,但是对于分布式环境下,多个线程操作的时候,有可能查询的时候不存在,但是插入的时候库里边已经存在

3.加编号
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: