您的位置:首页 > 其它

出现高并发的几种问题

2017-11-21 00:00 232 查看
希望对各位有所帮助

一个运营的系统在正式上线后将会遇到各种层级的高并发请求,因此我们必须对此做出相应的策略和技术解决方案,首先我们需要认清系统的高并发由3个层面导致:

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

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

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

以下描述是针对不同层面产生的计算压力所采用的计算策略,清单如下:
传输层
1.CDN
网络链路出口进行压力分载,通过CDN让用户访问最近的数据缓存。
2.智能双路
针对电信、网通 不同的访问用户访问请求,对应用户访问请求进行服务器带宽的智能切换。
3.LVS
对用户的请求进行压力分载,并且实现多种负载均衡的策略,也可以选择使用HA-Proxy实现。
4.HA-Proxy
针对Web服务器进行方向代理,通过HA-Proxy将用户的请求分发到不同的Web服务器上。
5.Long-Polling
在Web服务器上采用的一种策略,专门针对某个用户需要不断频繁的轮询访问。
6.Session2Cache
将用户的会话进行集中处理,存放在中央式的缓存服务器当中,减少服务器之间的会话通信

计算层
1.MapReduce
采用最经典的分布式算法对海量数据进行处理,将计算进行分载。
2.BSP
BSP(Bulk Synchronous Parallel-大型同步模型)算法是基于MPI算法的基础进行演化,运用在系统中并行计算的部分。
3.Result Cache
将计算的一部分结果进行缓存,缓解对存储层读取的请求。
4.Scatter/Gather
中间通过一个服务器进行中转,将大量的请求分发给内部的服务器进行计算,类似前端的web反向代理。

存储层
1.读写分离
由于系统的读大于写的频率,数据库架构采用了1主/多从,双主多从的策略,所以我们将会将读和写进行分离,并且将大量的读请求分散给多台不同的(Slave)服务器。
2.分区策略
系统采用不同的时间段作为分区的主要策略,提高对数据的读写性能。
3.Sharding
一台数据库将很快无法满足大量并发,需要使用库表散列,将数据库中的数据进行分散存储。
4.Column-Based
使用在海量数据中的查询功能,采用列模式的存储方式将可以有效的提高系统查询效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  高并发