美文网首页
并发同步案例 抢票

并发同步案例 抢票

作者: 雷3雷 | 来源:发表于2018-09-13 18:44 被阅读49次

    案例一:订票系统案例,某航班只有一张机票,假定有1w个人打开你的网站来订票,问你如何解决并发问题(可扩展到任何高并发网站要考虑

               的并发读写问题)

    问题,1w个人来访问,票没出去前要保证大家都能看到有票,不可能一个人在看到票的时候别人就不能看了。到底谁能抢到,那得看这个人的“运气”(网

             络快慢等)

其次考虑的问题,并发,1w个人同时点击购买,到底谁能成交?总共只有一张票。

首先我们容易想到和并发相关的几个方案 :

锁同步同步更多指的是应用程序的层面,多个线程进来,只能一个一个的访问,java中指的是syncrinized关键字。锁也有2个层面,一个是java中谈到的对

象锁,用于线程同步;另外一个层面是数据库的锁;如果是分布式的系统,显然只能利用数据库端的锁来实现。

假定我们采用了同步机制或者数据库物理锁机制,如何保证1w个人还能同时看到有票,显然会牺牲性能,在高并发网站中是不可取的。使用hibernate后我们

提出了另外一个概念:乐观锁悲观锁(即传统的物理锁);

采用乐观锁即可解决此问题。乐观锁意思是不锁定表的情况下,利用业务的控制来解决并发问题,这样即保证数据的并发可读性又保证保存数据的排他性,保证性能的同时解决了并发带来的脏数据问题。

hibernate中如何实现乐观锁:

前提:在现有表当中增加一个冗余字段,version版本号, long类型

原理:

1)只有当前版本号》=数据库表版本号,才能提交

2)提交成功后,版本号version ++

实现很简单:在ormapping增加一属性optimistic-lock="version"即可,以下是样例片段

optimistic-lock="version"table="T_Stock" schema="STOCK">

相关文章

  • 并发同步案例 抢票

    案例一:订票系统案例,某航班只有一张机票,假定有1w个人打开你的网站来订票,问你如何解决并发问题(可扩展到任何高...

  • 并发抢票

    并发买票 1、初始化 redis中设置总票数和0订单数2、本地初始化 根据评估,本地初始化票数,只能是本地有票的情...

  • 微博热搜、天猫秒杀、12306抢票,都是高并发,难点相同吗?

    又是一年春运抢票时,12306 又挂了。同为高并发,微博热搜、天猫秒杀、12306 抢票有什么不同呢? 本文完全基...

  • 多线程抢票案例

    说明:利用多线程对网络抢票进行模拟演示。技术点:(1)实现Runnable接口(2)重写run方法(3)创建Thr...

  • 抢票,抢票

    最近,一些网站为了吸引眼球,用了“春运抢票”的字眼,让我想起了多年前我们“抢”和“被抢”的那一幕幕。 上世纪九十年...

  • 2019-03-15

    利用go语言级并发特点实现经典的卖票案例,案例:启动10个窗口模拟售卖100张车票,打印出票信息。

  • 集齐了100多个加速包,但还是没抢到票,是又被骗了吗?

    关键词:抢票、抢票、抢票。摘要:又是一年一度抢票季,又开始玩邀请好友来加速的游戏了。 年关将至,又到了全民抢票的时...

  • 12306抢票软件

    12306抢票软件 !> 越来越多标题类似“帮我加速抢票”出现在票圈,如果知道抢票的原理就知道这些都是营销手段。抢...

  • 抢票篇----抢票神器!

    一则不太重要的通知:写文章推送文笔不太好,有很多不足,还请大家共同交流学习,每一次写的文章并不全是原创文章,有些只...

  • 抢票

    九月,于大多数人而言一定是金色的、是硕果累累的。于我,却是红色的、是惊心动魄的。为什么这么说?因为我的家乡在遥远的...

网友评论

      本文标题:并发同步案例 抢票

      本文链接:https://www.haomeiwen.com/subject/drnxkftx.html