关注△mikechen△,十余年BAT架构经验倾囊相授!
大家好,我是mikechen。
TPS是高并发非常重要的指标,是大型架构的必备技能,下面我就全面来详解TPS和高并发@mikechen
最新mikechen原创超30万字《阿里架构师进阶专题合集》和《大厂最全面试题及答案合集》,请关注本公众号【mikechen的架构笔记】,后台回复:合集,即可领取。
高并发
高并发,就是短时间内处理大量请求,比如:阿里的“双11”,每秒几十万的订单,这就是典型的高并发。
多少TPS算高并发
一般我们会用:数据来衡量“并发量”,这里非常重要的一个数据,就是“TPS”。
TPS,
TPS 是评价高并发系统的重要指标之一,通常在:支付、订单处理、实时交易系统...等等中使用。
TPS,开源帮助开发人员、和运维人员,快速了解系统在高负载下的稳定性、和处理能力。
通常在行业中,大致可以将 TPS 标准粗略划分如下:
1,000 TPS 以下:低并发,一般系统都能应对;
1,000 - 5,000 TPS:中等并发,适用于小型电商、一般中型业务应用...等等;
5,000 - 10,000 TPS:高并发,适用于大型电商、金融交易系统...等对实时响应有较高要求的场景;
10,000 TPS 以上:超高并发,一般为互联网巨头、和高峰流量应用场景。
比如:刚才我谈到的阿里双11等场景,就是大型电商促销、秒杀活动...等,这类的并发量就是非常高。
为支持“10,000 TPS ”,或者更高的 TPS,系统通常会采用一些技术、和架构优化,比如:
数据优化
通过简化查询逻辑、减少 JOIN、避免不必要的排序、和分组操作,提升 SQL 执行效率。
分库分表
以及,大家经常熟知的“分库分表”,这些都是典型的数据优化方案。
分库分表,是应对数据库高并发、和大数据量的有效手段,特别适合在请求量、和数据规模增长时缓解数据库压力。
比如:将数据按一定规则,(如:用户 ID、订单 ID...等等)分散到多个数据库中。
再比如:用户表按照用户 ID 的范围...等等,拆分到不同数据库中。
事务拆分
对于需要较长时间处理的事务,拆分成多个小事务分批执行,减轻单个事务的负载。
这种拆分可减少锁的持有时间,降低死锁风险,提升并发能力。
例如:将批量处理拆成小批次操作,逐步提交,避免单次事务消耗过多资源。
缓存优化
引入缓存机制,(如: Redis、Memcached...等等),来减少对数据库的访问频率,加速数据响应。
缓存优化,这也是提升“TPS”的一大利器。
负载均衡
使用负载均衡器,比如:Nginx、HAProxy、LVS...等等,将请求分发至多台服务器,以降低单台服务器的压力。
这里的负载,就会涉及到具体的:负载均衡策略。
常见的,包含:
轮询(Round Robin)
按顺序分发请求,适合轻量应用;
最小连接数
将请求发往当前连接数最少的服务器,适合长连接场景;
权重轮询
根据服务器的性能设置权重,高性能服务器承担更多请求。
通过负载均衡,分散请求负载,减少系统瓶颈,从而,提升整体的 TPS。
流量削峰
将一些耗时任务,比如:订单处理、日志记录、邮件发送。。。等等,放入消息队列。
比如::Kafka、RocketMQ...等等中异步处理,实现“削峰填谷”。
削峰填谷,就是通过队列缓冲高峰期的请求,平滑系统负载。
结合这些技术手段可以有效地提升系统的 TPS,满足高并发场景下的需求。
以上
最后送大家一个福利:
送我原创超30万字阿里架构师进阶专题合集。
以及给大家整理最全大厂Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件...等必考题答案详解。
需要以上架构专题&面试答案的同学,加我微信即可领取!
添加时备注:资料