最后更新: 2025-09-28, 作者: hao022
该文章借鉴了一位大神的思路,但更具总结性。 稳健系统定义:一个稳健的系统,在负载压力增大,甚至超出理论最大负载时依然能够保持稳定的线性输出。
基础概念
先了解如下概念:
- 最大吞吐:绝大数情况下,我们的服务不会处于最大吞吐状态,它只是昙花一现。高负载状态下随着时间的推移,服务的队列和延迟会无限增加。
- 持续吞吐:服务延迟可控状态的下的可持续的性能吞吐。
- 目标吞吐:根据真实服务负载评估出的用于扩容的吞吐量。
构造方法
围绕上面的概念,无论设计基础软件,业务软件,还是集群软件,均可做如下思考:
- 系统指标:健壮的系统应该具备完善的表征系统负载,资源水位的指标,如资源,组件,任务,性能,队列,请求延迟等
- 拒绝服务:一个健壮的系统能够实时表征自己的服务负载,资源状态。当这些指标当超出服务能力上限时,能够拒绝超出服务能力的请求,而不是让系统进入不可控状态。(想想那些雪崩的系统,无效的集群扩容。)
- 反馈机制:服务端和客户端之间要有反馈机制,客户端能够知晓后端的负载情况,调整自己的策略。(想想网络拥塞,无损网络,RPC 策略,分布式系统的 backoff。)
几种关系
- 吞吐和延迟:吞吐更容易表现一个系统的负载,然而背后的延迟指标,是保证系统持续服务的关键,只有延迟保持在一定的范围才能保证服务的持续性,即延迟要有边界,可收敛。
- 延迟和队列:队列能够平滑突增的流量,避免系统瞬间击垮。队列通过牺牲一部分请求来保障系统整体的稳定性和吞吐量。本质上队列将突发的高延迟风险转化为了可控的、可预测的排队延迟。
- 队列:队列本身有局限性,并不完美,否则就没有优先级,抢占,丢弃策略。另外任何系统都有队列,如果不存在则可能被转嫁到了客户端或者服务端。
HUATUO
在构建稳健系统过程中,HUATUO 能够让你看清应用性能表现。https://huatuo.tech/quickstart/
篇尾:
- 关注微信公众号【HUATUO 开源技术】留言,或扫码添加工作人员微信,邀请您加入用户群(请备注姓名+单位):
- 代码仓库:https://github.com/ccfos/huatuo
- 官方网站:https://huatuo.tech/