JavaWeb开发设计(四)高并发方案设计

高并发时要求系统对高QPS并发请求快速处理,并且有足够的系统容量处理这些数据。

简单总结一下高并发系统的技术点:

1、请求调度

1)使用CDN

CDN即内容分发网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。

2)负载均衡

把高并发的访问平均分配到每一个服务器节点上,从而减小系统中每一个节点的压力。

3)设置http连接池 https://blog.csdn.net/ll641058431/article/details/79566277

设置http连接池,可以降低延迟,提高客户端响应时间,还可以连接池复用,支持更大的并发量。

4)限流

当不可降级场景出现时,需要采用限流限制该场景的并发请求,有损服务而不是不服务。

扫描二维码关注公众号,回复: 4828193 查看本文章

5)降级

当服务出现问题或影响到核心流程时,需要暂时屏蔽掉,待高峰过后或问题解决后再打开。

2、前端优化

1)动态内容静态化

页面静态化是指将指含有大量动态元素的动态网页,如jsp、php等,转换为html静态页面,静态页面由于不用加载动态元素,其访问速度要比动态页面快得多,可以增加访问速度,减小后端压力。

2)增加前端缓存

前端页面缓存在系统前端对Web服务器上的页面进行缓存。对于其他信息,也可以做部分缓存,如cookie。

3、后端优化

1)使用NIO和阻塞队列

NIO 将最耗时的 I/O 操作(即写入和读取缓冲区)转移回操作系统,因而可以极大地提高速度。

阻塞队列,因为NIO第二个阶段会引起用户线程的阻塞,比如可能等待JDBC连接数据库,因此在这里用一个阻塞队列,线程把请求放到阻塞队列里面,这个线程就可以回归线程池,处理别的事情了。

2)使用缓存

使用分布式缓存,可以提升系统的访问速度,增大系统处理容量。

3)业务异步处理

非核心流程异步处理,降低RT,提高并发度。

4)使用数据库连接池 https://www.cnblogs.com/wym789/p/6374440.html

由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。

5)数据库扩展

包括分为水平拆分和垂直拆分,垂直拆分即按列拆分,把数据按应用分离,降低单个事务的数据处理量;水平拆分即按行拆分,降低节点的并发量。
 

参考资料:

https://blog.csdn.net/qq_26562641/article/details/53170913

https://blog.csdn.net/qiuchaoxi/article/details/81012384

猜你喜欢

转载自blog.csdn.net/ss1300460973/article/details/85988955