首先要了解高并发的的瓶颈在哪里?
前端性能优化技术
前端负载均衡: DNS,CDN
减少前端链接数: 把js打成一个文件,把css也打成一个文件,把图标也打成一个文件,用css分块展示。把链接数减到最低。
减少网页大小增加带宽:尽量少用图片
前端页面静态化: 静态化一些不常变的页面和数据
优化查询: redis缓存
后端性能优化技术
数据冗余: 减少表连接这样的开销比较大的操作,优化sql语句
数据镜像: 把一台数据库的负载均分到多台上,同时又保证了数据一致性(Oracle的SCN)。最重要的是,这样还可以有高可用性,一台废了,还有另一台在服务
数据分区
- 把数据把某种逻辑来分类: 把一张表拆成多张有一样的字段但是不同种类的表
- 把数据按字段分,也就是竖着分表: 把一些不经常改的数据放在一个表里,经常改的数据放在另外多个表里。把一张表变成1对1的关系
- 平均分表: 通过主键ID的范围来分表。
- 同一数据分区: 把同一商品的库存值分到不同的服务器上,然后负载均衡
后端系统负载均衡: 需要一个任务分配系统,其还能监控各个服务器的负载情况。
异步、 throttle 和 批量处理: 把一堆基本相同的请求批量处理,大家同时购买同一个商品,没有必要你买一个我就写一次数据库,完全可以收集到一定数量的请求,一次操作一个是作业量,另一个是timeout