海量数据常用优化方案:
1.使用缓存技术;
把经常访问的数据缓存到内存,通过使用Map或CurrentHashMap,缺点:内存有限
或者是用缓存框架:redis、memcache
涉及到缓存失效策略,这个要好好研究下。
2.页面静态化;
将静态公共资源文件 ,如html,css,js等单独部署。
3.数据库优化;
数据库表结构设计优化,SQL语句优化、分区、分表、索引优化等。
4.分离数据库中活跃的数据;
5.批量读取和延迟修改;
减少与数据库打交道。
批量读取:将多次读取合并;
延迟修改:将修改的数据保存到缓存,而不是立即修改数据库,然后定时将缓存中的数据保存到数据库中,程序读取数据时可以同时读取数据中和缓存中的数据。
6.读写分离;
对数据库的读写操作分散到多个数据库服务器上,降低单台数据库的访问压力。
一般是M-M-S模式,2个主,多个从,2个主只有一个是active,主库负责写【增加、修改、删除】,多个从库负责读【select查】。
7.使用Hadoop生态圈大数据技术;
8.数据库主从备份,分布式部署;
9.根据业务拆分,做成一个个微服务;
高并发常用方案:
1.将程序和静态资源文件分离;
应该程序只提供数据,静态资源用Nginx,减轻后端服务器压力
2.搭建单独的文件服务器(专门存放图片的);
3.页面缓存;
很少发生数据变化的页面缓存起来,不需要每次请求都去后台生成,节省大量CPU资源。Nginx提供了缓存功能,也可以使用专门的页面缓存服务器Squid
4.集群nginx