背景:疫情期间业务快速增长,组织了全链路压测,摸底系统容量与瓶颈。
3 高系统设计矩阵表
| 维度 | 场景-流量 | 系统-吞吐量 | 应用-并发量 |
|---|---|---|---|
| 核心指标 | 渠道 × 客户数 × 时长 | 总事务量 / 总耗时 | 并发数 / RT |
| 高并发 | 分流-限流-错峰 | 动静分离;全局流量调度;数据分片 | 批量-并发-异步-缓存 |
| 高可用 | 预估-规划-压测-应对方案 | 接入层-流量剔除;网关层-故障转移;实例层-监控告警隔离回滚;硬件层-冗余备份(双机房) | 应用端-逃生机制;服务层-熔断降级重试 |
| 高扩展性 | 水位线 + 压测 SOP | 垂直扩展-单机变强;横向扩展-多机协同,动态伸缩容 | 无状态 |
高并发:不是堆机器,而是管流量、提效率
压测中最容易暴露的问题,是流量一上来,系统不是慢慢变慢,而是某个环节突然被打穿。所以高并发的重点不在事后扩容,而在事前管住入口。分流、限流、错峰,本质上都是让流量变得可控,别让所有请求同时涌向同一个点。到了系统层,动静分离和全局调度是为了把压力分散开,数据分片则是避免单库单表成为死穴。应用层最有效的手段还是批量、异步、缓存,把同步等待改成异步处理,把重复查询改成缓存命中,并发能力自然就上去了。
高可用:靠的是分层冗余和提前演练
高可用不是靠某个组件特别强,而是靠每一层都有兜底。压测之前我们以为冗余做得够,真到故障转移时才发现,切换没那么顺。所以接入层要能剔除异常流量,网关层要能快速转移故障,实例层要能监控、隔离、回滚,硬件层要有双机房兜底。应用层也一样,逃生机制和熔断降级重试,平时看着多余,真出问题时就是保命手段。这些能力不是写出来就行,得靠压测反复验证。
高扩展性:能扩能缩,前提是无状态
扩展性解决的是「量涨了怎么办」。压测之后我们才真正理解,垂直扩展有上限,横向扩展才是长久之计。但横向扩展有个前提:应用必须无状态,会话信息外置,否则加机器也分不走压力。水位线加压测 SOP,是为了让扩容有依据,不是拍脑袋。扩完之后再压测,确认瓶颈真的转移了,这套动作要固定下来。
总结
3 高设计,功夫在平时,底气在压测。