面试的时候经常会被问题“你是如何解决网站的高并发问题”,据我理解感觉此问题并不是很严格,面试官应该想问的是如何降低服务器压力,提高网站性能,支持网站的大流量访问,不知道理解的是否正确
我的理解是:
大流量:指网站的网问人数巨多,服务器压力过大,优化做得不好的情况下会导致速度慢,访问超时等情况
高并发:指同一时刻访问同一功能的人数巨多,优化做得不好的情况下,可能导致读出/写入脏数据,死锁等问题
高性能:是一个统称,指网站优化做得好,同时可处理大流量与高并发问题
严格来说:
如果仅说如何解决高并发问题,应该从sql读写时防止读出/写入脏数据,程序中资源的保护防止死锁等方面考虑
如果说如何解决大流量问题,或者如何提高网站性能,这个问题就比较宽泛了,因为大流量必定会带来高并发,因此在解决大流量的情况下其实同时也需要解决高并发的问题
解决大流量,提高网站性能的办法有很多,大致整理了一些网上常见的解决办法,如下:
-
代码规范化
-
尽量使用静态页面
-
前端:JS/CSS优化(如文件大小限制,尽量减少加载次数,页面上多个icon使用截取的方式展示等)
-
后端:资源的正确使用以避免死锁等,适当使用缓存(甚至可以考虑Memcache等分布式缓存),SQL语句的规范化(如优化sql性能的方法)
-
数据库方面:如适当使用索引,数据库的读写分离,甚至可考虑使用NoSql数据库(如MongoDB,redis等)
-
运维方面:搭建CDN,搭建集群(高性能,高可用,负载均衡等)
欢迎各位拍砖指导!
——