高并发的常见策略--大型web项目

一个运营的系统在正式上线后将会遇到各类层级的高并发请求,所以咱们必须对此作出相应的策略和技术解决方案,首先咱们须要认清系统的高并发由3个层面致使:前端

1. 传输层
大量用户对系统请求后,将会形成网络带宽和Web服务器的I/O瓶颈。java

2. 计算层
接收大量用户请求进行计算,将会形成业务服务器和业务支撑服务器的瓶颈。mysql

3. 存储层
传输层和计算层将会产生大量的数据,数据量暴增,将会致使数据库和储存上的瓶颈。web

针对以上将会形成的系统高并发瓶颈,咱们须要采用不一样的技术手段解决。算法

从整体上来看
1.首先须要解决网络带宽和Web请求的高并发,须要合理的加大服务器和带宽的投入,而且须要充分的利用系统中软件、硬件的缓存机制,将能缓存的内容都进行缓存存储,减小计算层和存储层的压力。sql

2.其次须要对业务服务器和业务支撑服务器进行合理的分层,而且采用并行计算和分布式算法对大量计算进行处理,而且在开发的过程当中须要采用Java SDK中并发包(Concurrency)进行编码实现。数据库

3.存储层须要采用分布式文件服务器和列式的存储服务器进行构建,支撑海量数据的存放和读取,而且还要对关系型数据进行深层次的配置参数优化。编程

4.咱们还须要清楚的认识到,未来根据系统运行的状态以及平台中不一样的业务场景按部就班的进行调整和优化。缓存

   对于大型系统来讲,采用的技术是涉及面很是广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:将会使用 高性能的服务器、高性能的数据库、高效率的编程语言、还有高性能的Web容器。
   可是除了这几个方面,还无法根本解决面临的高负载和高并发问题,因此须要将计算和负载的压力分载到每一个计算机上,使用不一样的服务器集群机组进行分布式和并行计算,面对所产生的压力,下面这张图清晰的描述了,咱们对系统中不一样的计算瓶颈采用的不一样解决手段,如图所示:
 
如下描述是针对不一样层面产生的计算压力所采用的计算策略,清单以下:
传输层
    网络链路出口进行压力分载,经过CDN让用户访问最近的数据缓存。
    针对电信、网通 不一样的访问用户访问请求,对应用户访问请求进行服务器带宽的智能切换。
    对用户的请求进行压力分载,而且实现多种负载均衡的策略,也能够选择使用HA-Proxy实现。
4. HA-Proxy
   针对Web服务器进行方向代理,经过HA-Proxy将用户的请求分发到不一样的Web服务器上。
    在Web服务器上采用的一种策略,专门针对某个用户须要不断频繁的轮询访问。
    将用户的会话进行集中处理,存放在中央式的缓存服务器当中,减小服务器之间的会话通讯
 
计算层
   采用最经典的分布式算法对海量数据进行处理,将计算进行分载。
2. BSP
    BSP(Bulk Synchronous Parallel-大型同步模型)算法是基于MPI算法的基础进行演化,运用在系统中并行计算的部分。
3. Result Cache
    将计算的一部分结果进行缓存,缓解对存储层读取的请求。
4. Scatter/Gather
    中间经过一个服务器进行中转,将大量的请求分发给内部的服务器进行计算,相似前端的web反向代理。
 
存储层
1. 读写分离
    因为系统的读大于写的频率,数据库架构采用了1主/多从,双主多从的策略,因此咱们将会将读和写进行分离,而且将大量的读请求分散给多台不一样的(Slave)服务器。
2. 分区策略
    系统采用不一样的时间段做为分区的主要策略,提升对数据的读写性能。
3. Sharding
    一台数据库将很快没法知足大量并发,须要使用库表散列,将数据库中的数据进行分散存储。
4. Column-Based

   使用在海量数据中的查询功能,采用列模式的存储方式将能够有效的提升系统查询效率。服务器

相关文章
相关标签/搜索