社区
Web 开发
帖子详情
java 多实例 数据同步问题
qq_16598913
2018-11-03 08:32:14
背景:现在有一个javaweb程序,部署在3台服务器上,这3台服务器共用一个数据库,
web程序里面有一项功能,是对每个请求处理后在数据库中 数据项A加1操作
问题:现在有大量请求同时被3台系统处理,怎么保证数据统计正确,
举例:现在有5个请求同时被3台服务处理,操作数据项加1操作,怎么保证最后结果是5,而不是小于5
...全文
268
8
打赏
收藏
java 多实例 数据同步问题
背景:现在有一个javaweb程序,部署在3台服务器上,这3台服务器共用一个数据库, web程序里面有一项功能,是对每个请求处理后在数据库中 数据项A加1操作 问题:现在有大量请求同时被3台系统处理,怎么保证数据统计正确, 举例:现在有5个请求同时被3台服务处理,操作数据项加1操作,怎么保证最后结果是5,而不是小于5
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sotondolphin
2018-11-08
打赏
举报
回复
用事务管理做不到吗?!
北飞的企鹅
2018-11-08
打赏
举报
回复
你这种情况 直接悲观锁走起,注意加索引就好了
甲壳虫
2018-11-07
打赏
举报
回复
查询语句使用select....for update,在查询时锁定记录,再update +1,代码中,这2个操作需要在一个事物中,估计就能解决你的问题了,不过for update 的语句是要损耗性能的
kimsung
2018-11-07
打赏
举报
回复
上面说的这几个都ok, 加锁, 或者直接update +=1 还有一种是分散到3的counter数据上。也就是一台机器有自己的一个slot。 最终取得总合的时候sum一下这些slot的值也可以的。 只是太笨了这种方式。
nyq1999
2018-11-07
打赏
举报
回复
直接 update table set count=count+1 where 。。。就可以。这个是原子的。
maradona1984
2018-11-05
打赏
举报
回复
引用 1 楼 qq_16598913 的回复:
如果排除,不用分布式锁的情况,还有其它办法吗!!!!!不用分布式锁,,,不用分布式锁,,,不用分布式锁
不用分布式锁就用乐观锁,要保证成功的话,那就得自旋,也就是更新失败重试
咸哼酒家
2018-11-04
打赏
举报
回复
你这个需求不像统计在线人数还要关心页面关闭和重复登录,
只需要定一个临时内存变量,那个方法请求一次自增长一次即可
qq_16598913
2018-11-03
打赏
举报
回复
如果排除,不用分布式锁的情况,还有其它办法吗!!!!!不用分布式锁,,,不用分布式锁,,,不用分布式锁
140个
Java
源码
实例
140个
Java
的源码
实例
入门级重要参考资料
java
教程与
实例
java
教程与
实例
Java
程序设计技巧1001例
Java
语言1001例 请用超星阅读器打开这些文件
JAVA
编程百例
JAVA
编程百例 !
spring mvc
实例
项目
运用extjs2和spring mvc的项目,非常具有学习价值,里面有一套非常好用的jdbc技术.
Web 开发
81,117
社区成员
341,739
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章