高并发处理

kuexun kuexun     2023-03-09     541

关键词:

高并发处理

目录

何谓高并发... 1

从服务端视角看高并发... 1

高并发带来的问题... 2

高并发问题的层面... 2

高并发处理的基本思路... 2

高并发处理的基本手段... 3

是手段而非具体的方案... 3

客户端发出请求层面,常见的手段有:... 3

前端接收客户端请求层面,常见的手段有:... 3

Web服务器层面,常见的手段有:... 4

Web应用层面,常见的手段有:... 4

数据库层面,常见的手段有:... 5

高并发业务的处理... 6

准备阶段... 6

前端页面... 6

Web端... 7

逻辑层... 7

其它... 7

 

何谓高并发

所谓高并发指的是:在同时或极短时间内,有大量的请求到达服务端,每个请求都需要服务端耗费资源进行处理,并做出相应的反馈。

从服务端视角看高并发

服务端处理请求需要耗费服务端的资源,比如能同时开启的进程数、能同时运行的线程数、网络连接数、cpu、I/0、内存等等,由于服务端资源是有限的,那么服务端能同时处理的请求也是有限的

高并发问题的本质就是:资源的有限性

高并发带来的问题

服务端的处理和响应会越来越慢,甚至会丢弃部分请求不予处理,更严重的会导致服务端崩溃。高并发问题并不是互联网应用独有

高并发问题的层面

比如:前端请求、Web服务器、Web应用、数据库等

高并发处理的基本思路

一:从客户端看

1:尽量减少请求数量,比如:依靠客户端自身的缓存或处理能力

2:尽量减少对服务端资源的不必要耗费,比如:重复使用某些资源,如连接池

客户端处理的基本原则就是:能不访问服务端就不要访问

二:从服务端看

1:增加资源供给,比如:

(1)更大的网络带宽

(2)使用更高配置的服务器

(3)使用高性能的Web服务器

(4)使用高性能的数据库

2:请求分流,比如:

(1)使用集群

(2)分布式的系统架构

3:应用优化,比如:
(1)使用更高效的编程语言
(2)优化处理业务逻辑的算法
(3)优化访问数据库的SQL
服务端的处理基本原则是:分而治之,并提高单个请求的处理速度

高并发处理的基本手段

是手段而非具体的方案

下面按照每个层面来谈谈处理的具体手段,注意不是高并发处理的方案,方案是要结合具体的应用,综合分析,选择合适的手段组合起来。另外还要注意,下面提到的手段都是“包含但不限于”

客户端发出请求层面,常见的手段有:

1:尽量利用浏览器的缓存功能,减少访问服务端,比如:js、css、图片等

2:可以考虑使用压缩传输的功能,减少网络流量,也会提高传输速度

3:考虑使用异步请求,分批获取数据

前端接收客户端请求层面,常见的手段有:

一:比如Nginx这一层

1:动静分离,部分静态资源可以直接从Nginx返回

2:按请求的不同,分发到不同的后端进行处理,比如:负载均衡、业务拆分访问等

3:前面再加上一层来做多个Nginx的负载均衡,比如:LVS、F5等

4:还可以在更前面使用CDN服务

二:比如Varnish这一层

1:还可以对动态内容进行缓存,尽量减少访问后端服务

2:使用页面片断缓存技术,比如ESI(Edge Side Includes)

Web服务器层面,常见的手段有:

1:使用最新的JVM,并进行配置优化

2:合理选择服务器的运行模式,比如有些服务器有Client和Server之分

3:对Web服务器进行配置优化,比如:调整内存数量、线程数量等

4:提供多个能提供相同服务的Web服务器,以实现负载均衡

5:仔细规划Web服务器上部署的应用规模

6:对Web服务器进行集群

7:提供专门的图片、文件、视频等静态资源服务器

Web应用层面,常见的手段有:

这个可能全在Web服务器里面,也可能有单独的服务层

1:动态内容静态化

2:Java开发优化

3:优化处理业务逻辑的算法

4:合理高效的利用缓存

5:优化访问数据库的Sq1,可以考虑利用存储过程等数据库的能力

6:合理使用多线程,加快业务处理

7:部分业务可以考虑内存数据库,或者是进行纯内存处理

8:尽量避免远程调用、大量I/0等耗时的操作

9:合理规划事务等较为耗资源的操作

10:合理使用异步处理

11:对部分业务考虑采用预处理或者预计算的方式,减少实时计算量

12:内部系统间的业务尽量直接调用、直接处理,减少WebService、工作流等

数据库层面,常见的手段有:

1:合理选择数据库的引擎,比如Mysq1的InnoDB与MyISAM引擎

2:进行配置优化

3:可以考虑使用存储过程来处理复杂的数据逻辑

4:数据库集群,进行读写分离

5:合理设计数据库的表结构、索引等

6:分库、分表,降低单库、单表的数据量

7:合理使用NoSql

高并发业务的处理

典型例子:秒杀下订单

一些常见的要注意的基本点如下描述,当然是包括但不限于这些内容。

准备阶段

1:系统最好独立部署

2:做好系统性能容量规划(7折计算),系统优化,容灾过载保护

3:做好系统的拆分,比如:按功能模块、按实时/非实时、按动态/静态等等

4:设置定时上架的时间

5:服务器时钟同步

6:动态生成下单页面的URL

前端页面

1:静态页面+Ajax来获取动态内容,比如:实时库存、活动状态、当前时间等

2:做好CDN部署

3:静态页面和资源的缓存

4:JS对请求的过滤,比如:获取检验码、时间到了或者已售完自动结束等

Web端

1:F5/Lvs+Nginx来接收高并发的请求,并做负载均衡

2:Nginx+Lua+Redis来做请求队列,并实现一些基本控制,比如:限流、帐号参加次数检查、同一IP请求数检查等

3:Varnish来缓存静态页面和静态资源

4:进入Tomcat集群,先做一个预处理,就是判断这些账户是否能参与活动,比如:帐号等级是否足够、帐号行为是否正常、是否在黑名单上等

逻辑层

1:按照Redis的请求队列进行先后处理

2:纯内存操作+异步

3:控制超卖

4:Redis里面存放着SKU的库存数据

5:处理成功的信息也存放在Redis里面

其它

1:合理设计接口

2:应当时告知用户结果

3:考虑业务规则,比如减库存的时机

4:服务器尽量集群,并做HA,避免雪崩

5:缓存服务器如果要重启,要做预热

6:对抗作弊,比如:同一帐户同时发多个请求、同一IP同时发大量请求、秒杀器采用多账户多IP发送请求等

 





高并发处理方案(转)

时常看到高并发的问题,但高并发其实是最不需要考虑的东西。为何,他虚无缥缈,很少有网站真的需要这些东西,而且其中很多技术,其实你已经在用了。有这个意识就够了,不需要时刻盯着这个问题。只有很少的网站真的能... 查看详情

高并发处理

参考:tiaozhuan 以下复制内容:高并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再屌丝点的说法就像玩撸啊撸被... 查看详情

高并发处理摘录。。

知乎看到的解决方案,跟我遇到的高并发问题时解决方案差不多,摘录下来。。。如果真的高并发的话,首先先确定高并发是持久还是偶尔暴涨的;1,如果暴涨的话,使用二级池还是可以缓解的;具体实现:应用=>redis=>数... 查看详情

高并发

高并发现象1.在同一时间,有多个请求同时到达服务器相关术语  PV:pageview,??访问量  UV:uniquevisitor,独?访客  QPS:每秒请求数  吞吐量:单位时间内处理的请求数量  响应时间:发送请求到收到响应所花费的时间... 查看详情

高并发

高并发现象1.在同一时间,有多个请求同时到达服务器相关术语  PV:pageview,??访问量  UV:uniquevisitor,独?访客  QPS:每秒请求数  吞吐量:单位时间内处理的请求数量  响应时间:发送请求到收到响应所花费的时间... 查看详情

java中怎么处理高并发的情况

 一、背景综述    并发就是可以使用多个线程或进程,同时处理(就是并发)不同的操作。    高并发的时候就是有很多用户在访问,导致系统数据不正确、糗事数据的现象。对于一些大型网站,... 查看详情

.net中的异步编程,高并发处理详解地址

异步变成详解:https://www.cnblogs.com/mingjiatang/p/5267391.html处理高并发:https://blog.csdn.net/andong154564667/article/details/82153104 查看详情

教你2种常用的电商高并发处理解决方案

网站架构师面临的最大挑战之一就是并发。自Web服务开始以来,并发水平一直在不断增长,一个主流网站同时服务十万甚至数百万用户,这并不罕见。就目前应用广泛的电商系统来说,各种营销场景的增加,让电商系统高并发也... 查看详情

高并发一些处理办法

处理高并发问题的一些方式1.拆表:大表拆小表(垂直拆,水平拆;分表,分区partition,分片sharding),可以在应用层实现,也可以在数据库层面实现一部分;提高系统性能。2.分库:把表放到不同的数据库,这也是分布式数据库... 查看详情

c高并发线程池设计

高并发线程池设计并发基本概念所谓并发编程指的是在同一台计算机上"同时"处理多个任务。并发是在同一实体上的多个事件。处理事件过程出现阻塞漫长的CPU密集型处理。读取文件,但文件尚未缓存,从硬盘中读取较为缓慢。... 查看详情

遇到高并发一些处理方法

处理高并发问题的一些方式1.拆表:大表拆小表(垂直拆,水平拆;分表,分区partition,分片sharding),可以在应用层实现,也可以在数据库层面实现一部分;提高系统性能。2.分库:把表放到不同的数据库,这也是分布式数据库... 查看详情

处理高流量站点缓存时的并发问题

】处理高流量站点缓存时的并发问题【英文标题】:Dealingwithconcurrencyissueswhencachingforhigh-trafficsites【发布时间】:2014-06-1118:41:09【问题描述】:我在一次采访中被问到这个问题:对于高流量网站,有一种方法(比如getItems())会被... 查看详情

浅谈高并发处理方案(代码片段)

...扩展的实践方案插播一条:对吞吐量(TPS)、QPS、并发数、响应时间(R 查看详情

java高并发?

高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池?并发高、业务执行时间长的业务怎样使用线程池?1、在java中,高并发属于一种编程术语,意思就是有很多用户在访问,导致... 查看详情

高并发计算服务器数量

...流量多少的衡量标准,即每秒请求数,即最大谈吐能力。并发数:并发数和QPS是不同的概念,一般说QPS会说多少并发用户下QPS,当QPS相同时,并发用户数越大,网站并发处理能力越好。当并发用户数过大时,会造成进程(线程)... 查看详情

解决高并发

java处理高并发高负载类网站中数据库的设计方法(java教程,java处理大量数据,java高负载数据)一:高并发高负载类网站关注点之数据库没错,首先是数据库,这是大多数应用所面临的首个SPOF。尤其是Web2.0的应用,数据库的响应是... 查看详情

java并发编程与高并发解决方案

下载地址:百度网盘下载课程简介:【并发编程与高并发难题我们一起攻克】本课程将结合大量图示及代码演示,让你更容易,更系统的掌握多线程并发编程(线程安全,线程调度,线程封闭,同步容器等)与高并发处理思路与... 查看详情

高并发解决方案(代码片段)

一、什么是高并发高并发(HighConcurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。高并发相关常用的一些指标有响应时间(ResponseTime),吞吐量(Throughpu... 查看详情