高并发解决方案

什么是高并发

多个进程或者线程同时(或者在同一段时间内)访问统一资源会产生的并发问题

高并发初期解决方案

系统或服务器级别解决方案

  1. 增大服务器的CPU
  2. 增加内存条
  3. 增加硬盘个数,对硬盘做raid(磁盘阵列)
  4. 换掉免费的tomcat,使用商用weblogic(美国Oracle公司出品的)
  5. 增加到二块网卡
  6. 聘请系统架构师优化Linux内核
  7. 甚至花高价直接购买高性能的服务器

应用级别的解决方案

高并发主要发生在两处

  • 负载均衡服务器
  • 数据库

解决方案

  1. HTML静态化(需要CMS项目支持)
  2. 图片服务器分离(常用解决方案)
  3. 缓存(常用解决方案),上上策为分布式缓存
  4. 镜像(下载较多)

负载均衡

负载均衡服务器的三大功能

  1. 转发:在用户请求时,转发请求的功能
  2. 故障移除:如果这一台机器挂了,负载均衡服务器不会再把请求转发到这台服务器
  3. 恢复添加:如果这一台机器恢复正常了,负载均衡服务器会把它重新添加回来

负载均衡服务器种类--通过软硬件角度

  • 硬件负载均衡器:NetScaler、F5、Radware和Array等商用的负载均衡器,性能好,但是价格比较
  • 软件负载均衡器(反向代理服务器 缓存服务器等),三大软件
    • LVS(Linux Virtual Server):最好的软件策略,有备机有主机,无单点问题,国产(阿里章文嵩博士)开源项目,工作在网络四层上
    • Nginx:Ngnix有”单点故障“的问题,如果挂了,会带来很多的麻烦。到了后期Web服务器继续增加,它本身可能会成为系统的瓶颈,nginx最高支持50000个并发连接数,工作在网路七层上
    • Apache:web服务器第一,但不是最好的负载均衡服务器,工作在网路七层上

session共享问题

  • 可以把用户的session放在cookie中

    • 优点:解决了session共享的问题
    • 缺点:session放在了用户的浏览器中,是不安全的
  • 可以把用户的session放在数据库中

    • 优点:解决了session共享的问题
    • 缺点:网站是一个成千上万用户的网站,如果把session放在数据库中,会造成数据库压力太大,从而使得网站不能正常运转
  • 可以把用户的session放在缓存服务器中

    • 最好的解决方案是放在缓存服务器中

      推荐两种缓存服务器:Memcache、Redis

      要求:Memecache、Redis必须是集群

数据库并发

要求

  • 随着业务量的不断增大,数据库承载能力也要增大
  • 数据安全,不能丢失
  • 支持备份+容灾

推荐阅读更多精彩内容