分布式环境下保证幂等性
2016-01-12 10:54
197 查看
分布式环境中(非分布式也一样)在对某个进行数据添加的时候比如:点赞,用户点赞的时候将点赞信息存入到点赞表中,然后就是校验点赞查询是否存在一条记录,考虑到一些外界原因(dubbo 重新发起请求,当然正式环境下是关闭重新请求的,插入成功后没有给客户端返回成功信息等等。。。)导致重复提交点赞信息,这个时候数据库中就会有多条记录,当然就有问题了,查询的时候在sql中增加limit
1保证系统不会有问题,当然这样解决是不合理的,但是这样可以保证系统不会因为数据的问题整个瘫痪
解决办法:
1.在数据库中对能确定这条点赞记录的字段建立唯一索引,列如:用户id,记录id,记录类型等等,那么在插入库的时候就不会插入重复的记录了,如果业务要求可以点赞多次的时候这样就不行了,所以不建议用,不利于扩展
2.插入记录之前,首先查询,校验数据库中是否已经存在记录,这种方法最简单,但是对于分布式环境下,多个线程操作的时候,有可能查询的时候不存在,但是插入的时候库里边已经存在
3.加编号
1保证系统不会有问题,当然这样解决是不合理的,但是这样可以保证系统不会因为数据的问题整个瘫痪
解决办法:
1.在数据库中对能确定这条点赞记录的字段建立唯一索引,列如:用户id,记录id,记录类型等等,那么在插入库的时候就不会插入重复的记录了,如果业务要求可以点赞多次的时候这样就不行了,所以不建议用,不利于扩展
2.插入记录之前,首先查询,校验数据库中是否已经存在记录,这种方法最简单,但是对于分布式环境下,多个线程操作的时候,有可能查询的时候不存在,但是插入的时候库里边已经存在
3.加编号
相关文章推荐
- 1024: [SCOI2009]生日快乐 暴力
- iOS音频文件播放切换扬声器
- 虚拟机类加载机制
- maven 打包时去除依赖包 或者文件
- hdu2647 逆拓扑,链式前向星。
- php获取server端mac和clientmac的地址
- 性能为王:选择模拟监控的10大理由!
- Python开发Webservice(SOAP)
- 查看xcode&instruments版本以及版本切换
- 分布式数据重复提交
- Filter 防Xss攻击
- Burp Suite使用介绍——Proxy功能(六)
- WIN10 64bit python2.7 安装 numpy scipy matplotlib
- jQuery升级踩坑大全
- 深入java虚拟机(二)——类的生命周期(上)类的加载和连接
- 热血沙城-3.2移植-古月-cocos2dx源码
- scp复制文件
- 微信各种号的关系
- 高精度加法
- osg示例程序解析1----osganimate