美文网首页
java专题之12306优化

java专题之12306优化

作者: 这一刻_776b | 来源:发表于2020-01-01 19:19 被阅读0次

一、业务复杂度比对

(1)qq业务模型:只访问自己的数据

(2)秒杀业务模型:秒杀能够只接受前N个请求,后续请求直接返回

(3)奥运会售票业务模型:注册+抽奖,非先来先抢,可以事后线下处理

(4)电子商务业务模型:c2c只需关注自己的库存

结论:库存是b2c的噩梦,12306业务与之类似

二、瓶颈

库存业务的操作模式基本是这样的:

1)占住库存

2)付款

3)扣除库存

这个过程中,是要对数据进行加锁的,高并发下数据的一致性保证非常之难。

并发究竟有多大呢?

12306的业务特点是,突然放票,大家去抢。几十分钟内,马上几千万的访问量,非常恐怖(据说高峰访问是10亿PV,集中在早上8点到10点)。

结论:高并发下数据一致性是12306的痛点

三、前端优化

(1)负载均衡:DNS+CDN;

(2)减少页面链接数:减少浏览器http并发连接,合并js,合并css,合并图标

(3)减少页面大小:带宽有限,压缩,分离图片服务

(4)页面静态化:同一时间查询相同车次的结果页面都是一样的,甚至可将静态化的文件放入/dev/shm下

(5)查询优化:票务结果显示“有/无”,而非具体数字,能大大简化逻辑

(6)前端缓存:直接缓存动态页面

四、后端优化

(1)数据冗余:一个数据可以冗余存在多个表里,代价是一致性

(2)数据镜像:replication,仍然有一致性问题

(3)数据分区:分库,分表,分字段

(4)负载均衡:静态分流,动态分流

(5)异步化、throttle(节流,一般需要排队)、批量处理

五、总结

无论如何,系统一定要能水平扩展,加机器能提高性能

相关文章

网友评论

      本文标题:java专题之12306优化

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