高并发场景下,TPS 如何突破 5 万并发?

高并发是大型互联网架构的核心,也是大厂经常涉及的,下面我重点详解如何突破 5 万 TPS 的并发方案 @mikechen

高并发

在当今互联网时代,无论是电商平台的促销活动,还是社交媒体的热点事件,都可能瞬间涌入大量的用户请求。

高并发带来的挑战是巨大的:服务器资源紧张、响应速度变慢、甚至系统崩溃。

TPS 突破 5 万对于许多大规模在线业务而言,是一个关键的技术目标。

TPS(Transactions Per Second):是衡量系统每秒处理事务数量的标准指标。

TPS 反映了系统的吞吐能力,它直接关系到系统的性能、响应时间和用户体验。

举个例子,在一个电商网站中,每一笔支付请求、订单创建请求等都可以视为一个事务,TPS 就是系统在单位时间内能够处理多少个这样的事务。

具体来说,5 万 TPS 代表着系统每秒可以处理 50,000 个事务,这对于大多数电商平台、金融交易系统、社交应用等场景来说是一个巨大的挑战。

突破这一目标意味着架构能够处理更加复杂的业务请求,同时也能够应对突发的流量高峰。

我们需要深入分析,究竟是什么样的架构,才能够支撑如此高的并发。

如何支撑高并发?

当 TPS 达到 5 万时,系统将面临诸多挑战。

首先,数据库的访问成为瓶颈。

因为在高并发的情况下,大量的数据库查询、和写入操作可能导致数据库的负载过高,响应时间延迟。

这个时候,可以考虑 “分库分表”,将数据分散存储,避免单一数据库的压力过大。

通过分库分表,可以将不同的数据存储到不同的数据库中,使得不同数据表的读写操作能够并行执行,提高并发性能。

阿里巴巴的电商平台,例如淘宝、天猫,面对的是海量用户、商品和订单,单一数据库显然无法支撑。

因此,分库拆分是其架构设计的必然选择。

业务领域划分

将核心业务领域独立拆分,形成独立的数据库,实现业务隔离和数据解耦。

确保每个数据库承担明确的业务职责。

常见的分库包括:

用户库: 存储用户信息、账户信息... 等。

商品库: 存储商品信息、库存信息... 等。

订单库: 存储订单信息、支付信息... 等。

交易库: 存储交易信息,支付信息... 等。

店铺库: 存储店铺信息... 等。

还可以,按用户 ID 范围、或哈希取模,进一步拆分成多个表。

比如 user_table_01、user_table_02....,分散压力。

读写分离

通过主从数据库复制,读操作由从数据库处理,写操作由主数据库处理,减轻主数据库的负担。

读写分离的核心是主从复制,主数据库(主库)负责处理所有的写操作(INSERT、UPDATE、DELETE),而从数据库(从库)则复制主库的数据,并处理读操作(SELECT)。

主库将写操作的日志(例如,MySQL 的 binlog)同步到从库,从库通过执行这些日志来保持与主库数据的一致性。

高性能缓存

分布式缓存系统是高并发架构中的关键组成部分,通过使用如 Redis、Memcached... 等,缓存系统。

缓存系统通常用于存储:热点数据、查询结果等高频访问的数据,可以大大减少数据库的访问频率,提升响应速度。

但也需要考虑,在高并发流量的情况下,穿透、雪崩... 等等场景。

缓存穿透

缓存穿透是指查询一个不存在的数据,缓存和数据库中都没有这条数据,导致每次请求都会直接访问数据库。

如果大量请求查询不存在的数据,数据库会承受巨大的压力,甚至崩溃。

解决方案:

使用布隆过滤器来判断请求的数据是否存在。

布隆过滤器是一种高效的数据结构,可以快速判断一个元素是否存在于集合中。

如果布隆过滤器判断数据不存在,则直接返回,避免访问缓存和数据库。

缓存雪崩

缓存雪崩是指大量缓存数据在同一时间失效,导致大量请求直接访问数据库,造成数据库压力过大,甚至崩溃。

解决方案:

设置随机过期时间,来解决。

为缓存数据设置随机的过期时间,避免大量缓存数据同时失效。

缓存预热

在系统启动时,提前加载热点数据到缓存中,避免大量请求直接访问数据库。

使用多级缓存,例如,本地缓存和分布式缓存结合使用。

构建高可用缓存集群

对于 redis 等缓存服务,做集群,或者使用哨兵模式,避免单点故障,提高可用性。

流量削峰

通过消息队列(如 Kafka、RocketMQ... 等),可以将高峰流量中的请求异步地推送到队列中,消费者按照设定的速率从队列中取出消息进行处理。

这样,系统可以在流量较低时处理请求,避免了系统因瞬时高并发而崩溃。

例如,在电商平台中,用户下单后,可以将支付请求通过消息队列推送到处理队列,由后台异步处理支付请求,避免高并发时同步处理的压力。

以及,在秒杀活动中,用户的请求量可能会激增,消息队列可以帮助将大量请求排入队列中,逐步处理,以避免系统崩溃。

以上

👇阅读 mikechen 更多技术文章👇

阿里架构 | 负载均衡 | 单点登录 | 微服务 | 云原生 |Docker |K8S | 分布式架构 | 高并发架构

本文作者:mikechen

文章来源:mikechen.cc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值