美文网首页
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