如何实现火车售票?

arthur.dy.lee 2015-10-03 11:50:00
如果知道一节列车所的座号,然后在多并发多请求的时候,卖掉每一张票?
要求:
1、多用户请求的时候,不能卖重任意一张!
2、多用户请求的时候,怎么样,才能使效率最高?可以用线程池吗?用所以的票都放到池子里?然后去取?
3、所有的线程池都是异步的吗?也可以同步执行吗?
4、如果是集群或分布式环境的话?如何处理?
请用Java代码实现,谢谢!最好用代码写写,再次谢谢!
...全文
853 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
arthur.dy.lee 2015-12-22
  • 打赏
  • 举报
回复
引用 7 楼 yin_slin 的回复:
楼上的几位想简单了。火车票比较特殊的地方就是:票是可变的。例如:火车从上海出发,途经南京终点武汉(为了简单,中间只经过一个停靠点南京),那么,对某个具体的座位来说,票有三种:上海-南京、上海-武汉、南京-武汉。 票:上海-武汉与上海-南京、南京-武汉不能同时出售。抽奖、秒杀等都是独立的,而票是要交叉锁定的。 可以将票放在分布式缓存中(例如redis)处理。
要能把代码贴出来,就不胜感激啦
密码测试 2015-11-25
  • 打赏
  • 举报
回复
楼上的几位想简单了。火车票比较特殊的地方就是:票是可变的。例如:火车从上海出发,途经南京终点武汉(为了简单,中间只经过一个停靠点南京),那么,对某个具体的座位来说,票有三种:上海-南京、上海-武汉、南京-武汉。 票:上海-武汉与上海-南京、南京-武汉不能同时出售。抽奖、秒杀等都是独立的,而票是要交叉锁定的。 可以将票放在分布式缓存中(例如redis)处理。
zt19811122 2015-10-23
  • 打赏
  • 举报
回复
个人感觉对同一张票的操作应该是同步的,其他可以异步。 应该有池。
arthur.dy.lee 2015-10-09
  • 打赏
  • 举报
回复
引用 2 楼 sp1234 的回复:
火车票(某日、某班次、从哪站上到哪站下)是唯一的,是单独库存的。这就好像4s店里卖汽车一样,每一台汽车都有一个单品编号。而不像商店卖袜子一样都用同一个编号。 了解这个机制,那么其它的就非常好办了。多线程、多进程机制下,充其量,只需要在保证在你从一个库存将商品转移到另一个库存时不要幻想读,这一瞬间能够加锁,就够了。剩下的所有环节都不会错,因为剩下的环节都是针对单品编号进行处理的。 逻辑上看看这个机制能不能保证,就知道你的业务逻辑有没有把概念搞错。那么剩下其它做法通常就是一些比较低级的所谓“优化”了。比如说使用内存数据库来缓存当前放出来的火车票数据,这只是简单地存储问题。 纠结到什么“线程池、异步、同步、集群、分布式、java”等等概念,都是技术问题。纠结技术问题时,最好先不要过多考虑业务问题。同样地,当你针对业务逻辑进行设计时,不要在基本技术概念还糊涂时就去过早地考虑,否则你难以看懂分布式、异步并发下的逻辑设计。
那吧,那换一种业务。 有这么一个抽奖,设一等奖3个,二等奖20个,三等奖大约是总数的10%,抽奖在线进行,人数并不完全确定,也不是一下子所有人都一起抽奖,如何处理高并发的去执行?并保证结果的正确?并假设有5台服务器做集群。 如果可以的话,请说一下具体的解决方案,如果有代码就更赞了!
arthur.dy.lee 2015-10-09
  • 打赏
  • 举报
回复
引用 3 楼 abccba9978 的回复:
火车票和电商网站的并发处理上不太一样,和现在的秒杀有很大区别,火车票的随机性很强 他的瓶颈在于数据库乐观说的瓶颈 火车票业务的复杂特性,决定了不能用电商秒杀的技术解决方案,还要听听其他人有啥好的看法
电商秒杀的技术解决方案是什么?是怎么处理的?
api工厂 2015-10-08
  • 打赏
  • 举报
回复
火车票和电商网站的并发处理上不太一样,和现在的秒杀有很大区别,火车票的随机性很强 他的瓶颈在于数据库乐观说的瓶颈 火车票业务的复杂特性,决定了不能用电商秒杀的技术解决方案,还要听听其他人有啥好的看法
  • 打赏
  • 举报
回复
火车票(某日、某班次、从哪站上到哪站下)是唯一的,是单独库存的。这就好像4s店里卖汽车一样,每一台汽车都有一个单品编号。而不像商店卖袜子一样都用同一个编号。 了解这个机制,那么其它的就非常好办了。多线程、多进程机制下,充其量,只需要在保证在你从一个库存将商品转移到另一个库存时不要幻想读,这一瞬间能够加锁,就够了。剩下的所有环节都不会错,因为剩下的环节都是针对单品编号进行处理的。 逻辑上看看这个机制能不能保证,就知道你的业务逻辑有没有把概念搞错。那么剩下其它做法通常就是一些比较低级的所谓“优化”了。比如说使用内存数据库来缓存当前放出来的火车票数据,这只是简单地存储问题。 纠结到什么“线程池、异步、同步、集群、分布式、java”等等概念,都是技术问题。纠结技术问题时,最好先不要过多考虑业务问题。同样地,当你针对业务逻辑进行设计时,不要在基本技术概念还糊涂时就去过早地考虑,否则你难以看懂分布式、异步并发下的逻辑设计。
  • 打赏
  • 举报
回复
呵呵,如果我想卖重一张火车票,应该怎样实现啊?
基于Java+MySQL实现(Web)火车售票系统源码+数据库,含有代码注释,新手也可看懂,个人手打98分项目,导师非常认可的高分项目,毕业设计、期末大作业和课程设计高分必看,下载下来,简单部署,就可以使用。该项目可以直接作为毕设、期末大作业使用,代码都在里面,系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值,项目都经过严格调试,确保可以运行! 基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车售票系统源码+数据库基于Java+MySQL实现(Web)火车

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧