一、业务复杂度比对
(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(节流,一般需要排队)、批量处理
五、总结
无论如何,系统一定要能水平扩展,加机器能提高性能
网友评论