一些火车票网上订票系统的优化建议
来源:互联网 发布:java ssh项目案例 编辑:程序博客网 时间:2024/04/29 16:51
原网址:
http://blog.csdn.net/kongqz/article/details/7186639
大部分人今年春运的对网上实名制购票深有感受吧,传说12306其瞬间的流量都超过facebook了--10亿访问流量,犀利啊。我也是作为春运大流的一只,历经了1周的订票实验,最终成功订到回家的票票,对铁道部的订票网站也颇有怨言啊,偶看到有牛人对此进行计算机专业的分析,特分享之~~~
一、场景分析
1、平时访问量不高,但是春运几天会出现瞬间高峰
2、订单的事务性要求较高
3、全国开放,并且票数要精准
4、瞬间访问量大
二、调优可行性方案
1、数据层次
请使用oracle,在数据稳定性以及千万级别的数据量上还是比较有保障
- 使用RAC来做数据库集群
- 将订单按照天来做日期类型的表分区存储数据
- 做主从库,将非关键性数据查询放到从库上
- 提取计算规则比较复杂的逻辑放到timesten这类内存数据库上进行处理
- 根据业务系统拆分数据库,尽量不要将所有业务放到一个库中
2、cache层次
- 使用memcache之类的分布式cache一些字典表数据,减少数据库的查询次数
- 做页面的cache缓存
- 利用memache的原子性来做各个路线的票数增减服务。和数据库的操作做异步处理
- 预先加载部分热点数据到cache中
3、前端处理
- 将css以及js和图片使用CDN进行加速,独立域名部署
- 减少图片加载量,以及图片的大小
- 减少css和js文件的数量,同一类型尽可能压缩整合到一个文件中。当然那些开源的prototype或者jquery组件就不要整合了。
- 将验证码调用采用触发方式,可以考虑单独部署验证码校验服务,不要和应用系统本身整合到一起
4、业务层次
- 按照地区拆分业务系统部署
- 将订单或者评论等业务拆分。达到录入和查询等业务分离
- 系统间的业务交互用soa的方式来做通讯,达到松耦合并行处理
- 如果有跨机房部署,预先分配各个机房业务资源。例如,基于各地买票量调整南北方机房系统的各自总票数
- 分流人群,将不同的业务调整成为不同时间执行。对于不符合条件的预订和查询,直接转到友好提示页面
5、事务处理
按照业务进行事务处理,尽量不要做成一个大的事务,在业务流程设计上,尽量做到事务精简,逻辑严密。
例如:订票流程和支付流程作为两个业务。或者支付业务拆分成给账户充值+账户扣费两个逻辑
6、部署策略
针对南北机房做互通
各个系统应用集群
各个系统部署在相同网段,并用内网ip做host指向,减少网络压力
跨机房部署考虑预先分配调整资源方式
7、网络层次
控制各个应用系统节点的压力,当部分节点的用户量达到一定限额,将用户跳到友好页
8、防抓取爬虫
防止部分爬虫自动买票。对于单个ip做分析防范。发现后立即封锁ip
- 一些火车票网上订票系统的优化建议
- 火车票网上订票系统一种设计方案
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考 .
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 火车票订票系统的几点优化思考
- 解决火车票网上订票难的方案
- 火车票订票系统
- 小偷与正则
- Samba服务器安装与配置
- JUnit设计模式分析
- Firebug 1.9新特性指南
- 安装ctags及vi设置
- 一些火车票网上订票系统的优化建议
- Box2D教程1-创建碰撞世界
- 为什么你应该(从现在开始就)写博客
- 自动重复拨打工具
- regedit参数+批处理修改IE标题
- iphone真机调试教程
- 装饰者模式
- WCF Learning(5):Service Contract中的重载(Overloading)
- [C#]基于HttpWebRequest和HttpWebResponse的HttpHelper