1、什么是高并发mysql
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它一般是指,经过设计保证系统可以同时并行处理不少请求。sql
高并发相关经常使用的一些指标有响应时间(Response Time),吞吐量(Throughput),每秒查询率QPS(Query Per Second),每秒事务处理量TPS(Transaction Per Second),并发用户数等。数据库
响应时间:系统对请求作出响应的时间。缓存
吞吐量:单位时间内处理的请求数量。服务器
QPS:每秒响应查询请求数。网络
TPS:每秒响应事务请求数。数据结构
并发用户数:同时承载正常使用系统功能的用户数量。架构
2、提高系统的并发能力并发
互联网分布式架构设计,提升系统并发能力的方式,方法论上主要有两种:垂直扩展(Scale Up)与水平扩展(Scale Out)。负载均衡
(1)垂直扩展:提高单机处理能力。垂直扩展的方式又有两种:
1)加强单机硬件性能,例如:增长CPU核数如32核,升级更好的网卡如万兆,升级更好的硬盘如SSD,扩充硬盘容量如2T,扩充系统内存如128G;
2)提高单机架构性能,例如:使用Cache来减小IO次数,使用异步来增长单服务吞吐量,使用无锁数据结构来减小响应时间;
(2)水平扩展:只要增长服务器数量,就能线性扩充系统性能。水平扩展对系统架构设计是有要求的,如何在架构各层进行可水平扩展的设计是本文重点讨论的内容。
一、系统集群化部署+负载均衡
(1)添加负载均衡层,将请求均匀打到系统层。
(2)系统层采用集群化多活部署,扛住初步的并发压力。
二、数据库分库分表+读写分离+分布式数据库
(1)分库分表:水平拆分、垂直拆分(弊端太多如关联查询)。
(2)读写分离:主库写,从库读(数据同步延迟)。
(3)分布式数据库:TiDB(HTAP、兼容mysql协议、水平扩展、分布式事务)
三、缓存
(1)本地缓存:本地磁盘或内存。
(2)分布式缓存:用缓存集群抗住大量的读请求。
(3)预缓存,多级缓存。
四、消息中间件
(1)系统解耦,数据同步。
(2)请求异步化处理,实现削峰填谷的效果。
五、应用拆分(微服务)
(1)按业务拆分、减小耦合。
(2)分级部署,扩容缩容。
(3)应用资源隔离。
六、CDN(内容分发网络)
(1)尽量避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节, 使内容传输的更快更稳定。
(2)CDN可以实时地根据网络流量和各节点的连接,负载情况以及到用户的距离和响应时间等综合信息将用户的请求从新导向离用户最近的服务节点上。