知识卡片
都江堰治水类比高并发系统:倒三角结构下的分流与限流
内容
都江堰水利工程用鱼嘴分水堤(枯水期水流内江、汛期分流外江)、飞沙堰(水流大时分流外江)、宝瓶口引水口(收窄河道限流)三处设施应对洪水,核心思路只有两种:分流和限流——这与高并发系统设计的核心思想高度对应:CDN、双园区设计、应用服务器集群、Nginx多进程多线程、数据库分库分表、分布式缓存本质上都是分流技术,F5、Nginx、应用服务器的限流能力则对应限流技术。用[[架构编排的内核公式:架构元素+架构规则|“架构元素+架构规则”]]去拆解高并发系统,元素是线程、进程、容器、服务节点等,规则则呈现出一个鲜明的”倒三角”特征——高并发系统的元素靠请求串联起来(连接关系),且连接数量从请求方到数据库呈现递减趋势:越靠近请求方的节点连接数越多,越靠下游的节点连接数越少(比如从CDN到数据库服务器,连接数可能从10万一路收窄到不足1000)。基于这个倒三角特征,分流和限流各自遵循一套规则:分流规则——空间位置上,越靠近请求方的元素应承担越大的分流力度(把CDN、缓存这类适合处理高并发的元素尽量放在靠前位置);空间层次上,请求过多时可以增加更多层次来分摊每层的负载;个体策略上,优先靠节点内部的线程/进程分流,资源不够了才考虑扩容节点。限流规则——空间位置上,越靠近请求方的元素限流作用越关键(限流机制应该放在F5这类靠前的元素上,而非放到后端应用服务器或数据库);空间层次上,每一层都要为下一层设定合理的限流数目,避免后端过载;个体策略上,各元素自己负责限流能力,具体表现为直接拒绝请求或把请求放进等待池。可迁移启发:设计高并发系统时,先画出请求从入口到数据库这条链路上各层的连接数量趋势——如果发现某一层的连接数不降反升,这一层很可能既缺分流手段、也缺限流保护,是系统最脆弱的环节。
结构图:
flowchart TB
R["请求方(10万连接)"]
R --> CDN["CDN(分流:靠前承担大分流力度)"]
CDN --> F5["F5(限流:靠前设限流关键点)"]
F5 --> APP["应用服务器集群(6万连接)"]
APP --> CACHE["分布式缓存(分流)"]
CACHE --> DB["数据库服务器(不足1000连接)"]
R -.连接数呈倒三角递减.-> DB