总结概括对于大数据、高并发的网站如何进行优化的问题
对于大数据、高并发的网站,如何进行优化?我这里作出一个概括性的总结,以后慢慢细化与完善,可能存在不全或有误的地方,欢迎大家一起交流,谢谢!
服务器端:
1.采用缓存或分布式缓存技术(cache、memcached、redis、MongoDB),针对不经常变动的数据进行缓存,降低请求数据库的频率;
2.针对耗时的处理采用异步/并行技术来提高服务器的可用并发量;
3.利用WEB SERVICE,WCF,WEB API,消息队列(MSMQ,RabbitMQ)等技术实现分布式业务逻辑处理及数据访问的能力;
4.运用合理的设计模式及架构,提高代码的利用率(如:DDD,SOA,AOP,DI);
5.页面GZIP压缩,降低服务器发送的字节数;
6.启用keep-alive(IIS设置keep-alive存在问题,详见:微软IIS对http keep-alive的“霸道”处理)
数据库端:(参考我之前文章:关于SQL SERVER高并发解决方案)
1.数据库读写分离,可采用数据库同步技术,实现一个可写数据库,多个镜像只读数据库,简称为分库;
2.数据库表按读写或使用频率进行横向或纵向切割表,同时建立表分区,将不同的数据存储在不同的物理位置,以降低磁盘的IO读写,简称为分表;
3.SQL查询语句优化(包括索引,查询字段,过滤条件,存储过程,事务隔离级别等);
WEB前端:
1.压缩网页各类代码(HTML,CSS,JS);
2.采用多台服务器分别部署网页、静态资源(图片,文件等);
3.采用JS异步加载,图片延迟加载技术;
4.尽可能的减少JS文件数量,且将JS文件放到网页底部;
5.采用图片合成技术,将多个图标合成一个大图,以降低请求数量;
6.采用图片拼接技术,将大图利用第三方软件(如:PS)切成多个小图,以降低服务端响应时间;
7.采用AJAX异步请求技术,实现局部请求服务器资源,以降低请求与响应时间;
8.其它前端优化技术(比如:利用HTML5的本地网页缓存技术,DNS 预解析技术);
硬件(不是很懂):
1.提升服务器内存,硬盘等核心硬件性能;
2.实现服务器集群与虚拟化(参考:集群与虚拟化);
3.采用负载均衡技术;