0. 过虑需求:
1. 请求处理:如果客户请求,2-4s后没有返回,80%的客户会再次点击,这样给本就压力过大的服务器造成访问量的倍增。所以可以控件前台的请求,如增加mask,或固定时内,不能再次请求,或做假请求。
2. 网络延迟:如果是由于网络的原因,造成response时间过长,那客户可能又进行请求。原因同上,那就要改善网络环境,南电信,北网通。
3. CDN:CDN将数据内容缓存到运营商的机房,用户访问时先从最近的运营商获取数据,这样大大减少了网络访问的路径
4. 反向代理:是部署在网站的机房,当用户请求达到时首先访问反向代理服务器,反向代理服务器将缓存的数据返回给用户,如果没有没有缓存数据才会继续走应用服务器获取
5. 负载均衡:应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。
6. 缓存:大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,提高缓丰命中率
7. 读写分离:顾名思义就是将数据库分为读库和写库,通过主备功能实现数据同步
8. 分库分表:分为水平切分和垂直切分,水平切分则是对一个数据库特大的表进行拆分,例如用户表。垂直切分则是根据业务不同来切换,如用户业务、商品业务相关的表放在不同的数据库中
9. 消息队列:1)将非主流程的业务如日志,更新缓存,发送短信等进行异步队列处理,
2)如秒杀场景,下单服务是该系统的瓶颈,此时会使用队列进行排队和限流,通过队列暂存或者队列限流来削峰。
方法有很多,重要的还是要对症下药。