系统高并发问题处理
来源:互联网 发布:ug编程工资 编辑:程序博客网 时间:2024/05/17 08:30
Q1:订票系统,某车次只有一张火车票,假定有1w个人同时打开12306网站来订票,如何解决并发问题?
A1: 首先介绍数据库层面的并发访问,解决的办法主要是乐观锁和悲观锁。
乐观锁
假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。
乐观锁使用一个自增的字段表示数据的版本号(或者timestamp),更新的时候检查版本号是否一致,比如数据库中版本号为4,更新时版本号使用版本号version=5,与数据库中的版本号version+1=(5)做比较,如果相等,则可以更新,如果不相等,其他程序已更新该记录,返回错误。
悲观锁
假定会发生并发冲突,屏蔽一切可能违反数据完整行的操作。
一般需要使用数据库的锁机制,比如MysqlInnoDB引擎的行级锁。
结论:在实际生产环境中,如果并发量不大且不允许脏读(原始数据为5,AB两个事务,B其他事务更新数据为2,事务未提交时,A读取到的仍然为5),可以使用悲观锁。并发访问量大时,使用悲观锁有非常大的性能问题,可以选择乐观锁。
0 0
- 系统高并发问题处理
- PHP 处理高并发问题
- 高并发系统的一些处理策略
- 处理高并发访问数据库问题
- 如何处理Java中的高并发问题
- 高并发处理系统的理解---数据一致性(还有一点问题)
- 处理多线程高性能并发和高负载问题
- Java 大型系统高并发大数据的处理方式
- Java 大型系统高并发大数据的处理方式
- 学习笔记之 高并发处理系统的理解
- 高并发处理
- 高并发处理方案
- 高并发处理方案
- 高并发处理方案
- 高并发处理方案
- java高并发处理
- 高并发处理方案
- 处理高并发
- mysql查询优化技巧
- 图像/视觉显著性检测技术发展情况梳理
- 将十进制数23转化为二进制数
- 运行 React Native 的默认工程 UIExplorer
- 通过maven-shade-plugin插件打可以独立运行的jar包
- 系统高并发问题处理
- Maven大概认识
- Uva 11100 The Trip
- Java基础知识IO流(异常的日志信息&系统信息)
- eclipse插件jd-eclipse的使用
- vim goLang
- Redis安装部署
- 技术入股创业一年,家庭收入变成负5万
- 工作日志——基于k8s搭建spark集群