高并发解决方案

海量数据常用优化方案:

  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