TPS多少才算高并发经常被问到,下面我就详解什么是高并发,以及TPS多少才算高并发@mikechen
什么是高并发
高并发:是指系统在同一时间能够处理大量请求、或任务的能力。
比如:在促销活动(如“阿里双十一”)时,瞬时会有大量用户同时下单、支付。
比如:一秒处理60万笔订单的能力,这就是典型的“高并发”。
多少TPS算高并发
高并发,通常用一些指标来衡量系统的并发能力,比如:最核心的数据,就是TPS/秒。
TPS,全程是Transactions Per Second,翻译过来就是“每秒事务处理数”,表示:系统每秒能够处理的事务量。
TPS是非常重要的,衡量系统高并发的能力,比如:刚才我谈到的“双11”,每秒接近60万/秒,这就是超高并发的场景。
通常,对于TPS衡量并发的数据指标如下:
TPS 在 1000-5000 之间,属于有一定的并发,TPS 超过 5000..,就可以算是高并发了。
如果TPS超过50,000以上,比如:阿里的60万/秒,就是典型的超高并发的场景了。
要想支撑这样的高并发场景,你就需要采用到很多技术,比如:分布式架构、负载、削峰…等常见的高并发技术方案。
分布式架构
为了支持高并发,系统都会进行分布式架构设计。
原因很简单,单机的处理能力始终有限,通过分布式架构设计,可以更好的扩展处理能力。
所以,分布式架构是高并发系统的基础,目的是将系统的负载分散到多个服务器节点,从而提高系统的扩展性、和可靠性。
比如:通过增加服务器数量来提升系统的并发处理能力,每台服务器可以独立处理部分流量。
微服务架构
以及,采用微服务架构,将大型单体应用,拆分成多个相互独立的服务。
比如:大家经常使用到的:SpringCloud、SpringCloudAlibaba..等,就是典型的微服务架构。
每个服务都专注于特定的业务功能,通过轻量级的通信机制(如 :HTTP、RPC…等),与其他服务交互。
每个微服务,都可以根据流量情况水平扩展,(比如:通过增加服务实例的数量来应对增加的请求量),从而提升并发处理能力。
并且,采用微服务各个服务还可以独立部署、和扩展,从而减少耦合,提升并行能力。
缓存机制
缓存,就是通过减少数据库的直接访问来提高响应速度,降低服务器、和数据库的压力。
比如:大家使用最多的就是“分布式缓存”,用的最多的就是Redis。。。等分布式缓存系统。
采用分布式缓存的原因也很简单,就是通过分布式集群的方式,可以更好的扩展性能。
当然,这里你也可以结合本地缓存来一起使用,这就是大家经常提到的多级缓存。
比如:某些情况下可以使用本地缓存(如 :Guava Cache。。。等),来缓存热点数据。
热点数据,指的就是:将频繁访问的数据(如:用户信息、商品详情…等)缓存在内存中,减少数据库的查询次数。
所以,核心就是把热点数据(用户访问最多的),缓存起来,这样可以提升并发量。
负载均衡
负载均衡,是一种将请求均匀分发到不同服务器的技术,以避免单台服务器过载。
比如:通过负载均衡器(如 :Nginx、HAProxy、LVS、F5。。。 等),将流量均匀地分发到多个服务实例。
所以,负载均衡能够避免某个服务实例成为瓶颈,通过扩展,可以极大的提高系统的整体并发量。
常见的负载均衡策略有:
- 轮询策略:依次将请求分发到不同的服务器上,确保每台服务器均匀地接收到请求;
- 权重策略:根据服务器的性能设置不同的权重,比如:性能高的服务器分配更多的请求,就可以权重设置高点一点,能者多劳;
- IP哈希:基于客户端的 IP 地址,将同一个 IP 的请求始终分发到同一台服务器,以实现会话保持。
流量削峰
流量削峰是应对高并发的常用手段,目的是平滑瞬时大量流量的冲击,避免系统过载。
通过消息队列来削峰是最常用的手段之一,将请求进行排队处理,削减瞬时高并发的压力。
比如:当系统接收到大量请求时,先将这些请求放入消息队列(如 :Kafka、RocketMQ…等)。
这可以有效削减流量高峰,防止系统在瞬间被压垮,然后由消费者按设定的速率处理队列中的请求。
所以,削峰的核心思想,是将短时间内的高并发请求,有消息中间件来承受洪峰,从而减轻系统瞬间负载。
限流和熔断
在高并发场景下,限流和熔断机制是保护系统的重要措施,以防止系统在流量激增时崩溃。
比如:
限流
通过限制请求的速率,避免系统过载,常见的限流算法有:令牌桶算法、漏桶算法。
可以通过 Nginx、Guava RateLimiter、Sentinel… 等工具实现限流。
熔断
当某个服务出现故障或响应过慢时,熔断机制可以临时中断该服务的请求,避免系统其他部分受到连带影响。
降级
根据系统负载情况,选择关闭一些非核心的服务或功能,降低系统整体的压力。
这些技术结合使用,能够显著提高系统在高并发场景下的性能和稳定性
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》