如何评判负载保护的效果?
极客时间编辑部
讲述:初明明大小:5.01M时长:05:29
你好,欢迎收听极客视点。
在企业业务系统中,技术选型多种多样,系统的性能和健壮性参差不齐,业务流量变化无常,如何才能保证各种业务流量安全运营,系统在任何情况下都不会崩溃呢?InfoQ 采访了腾讯科技增值服务部互娱 AMS 监控系统负责人朱龙云,了解了关于系统负载保护的设计原则。
负载保护的总体原则
虽然业务系统在正常情况通常是感知不到负载保护的存在,但是负载保护却是所有系统都必须具备的能力,它可以防止系统“崩溃”。那么,常见系统的负载保护在设计之初一般都遵循什么样的设计原则呢?
朱龙云表示,虽然各个系统的负载保护设计都会有自身的特点,但从设计角度可以分四层:
通用层:这一层是系统通常都需要的基础属性。例如易部署、高度可观察、具备容灾和扩缩容能力等。
机制层:这一层包含了与负载保护密切相关的基础属性,在负载保护系统演化中相对策略层变化是慢的。
策略层:这一层是负载保护的策略算法,是在系统外侧最容易被看到的,容易引起广泛的讨论。限流、降级和熔断算法就在这一层。
系统层:这一层主要是根据负载保护运营反馈,找出系统整体设计的缺陷和不足,进行相应调整,并将系统设计与自动扩容融合。
如果具体到负载策略的设计原则,一般需要考虑到调用链、业务与资源、整体与局部、扩展性等等。
调用链:在这一维度,要管控好上游入口的流量,实时计算自身服务资源消耗,并实时评估下游服务服务质量,确保整个调用链整体流量安全。
业务与资源:通常,业务流量会有时间错峰,你可以将错峰业务部署在一起,提高机器资源利用率。但这样可能会导致业务之间相互影响,负载保护就在此时发挥作用,当业务负载超过自身预分配资源时,继续使用系统尚未被其他业务消耗的资源。当各个业务总体消耗资源超过系统整个负载安全上限,按一定策略对相应业务进行限制。
整体与局部:达到整体效果的负载保护需要“均匀”分配到各个最小计算单元,但这里的“均匀”不是绝对数量的“均匀”,而是与每个计算单元相匹配的“均匀”,即与系统的负载均衡相匹配。
扩展性:业务对负载保护会有扩展性的需求,例如按照业务重要程度、用户分布或者资源消耗等进行个性化限流以及降级服务。
整体系统和单个服务的负载如何平衡?
系统的负载保护既包括单个服务的负载保护,也包括整体系统的负载保护,其设计原则的关键词是“均匀”,如何实现“均匀”呢?
这可以分两个部分来讨论。
第一部分是整体系统与调用 topo 中某个节点的关系,你需要先了解系统中的负载脆弱点以及原因。负载脆弱点可能是技术引起的,要针对脆弱点做好流量管理与自身负载的实时监测,对脆弱点上游做好熔断机制,并做好监测预警,防止该点引起系统整体雪崩。同时从长远角度考虑,还要尽可能优化或者消除因设计引起的系统脆弱点。
第二部分是单点服务集群与计算单元的关系。集群中各个计算单元需要负载均衡,而通常情况下,各个计算单元是异构的,这就需要匹配相应的计算资源能力。负载保护需要保证当系统过载时,负载依旧是均衡的,避免出现有的计算单元过载,有的计算单元还有资源剩余。
总之,负载保护的策略具体实现都需落实到单个计算资源,同时各个计算资源的信息需要上报汇总起来做整体决策。
上游模块与下游服务的负载保护
上下游之间的负载保护最重要的是做到相互信任不依赖,对方通知异常,能根据通知信息采取措施。对方不通知也能及时发现异常,采取措施,不会因为自身原因造成系统雪崩。
展开来讲就是上游需要为下游做好流量保护,但是下游不依赖这种保护。当上游没有保护好,系统流量过载,下游能触发自身的负载保护,当上游故障,流量突然下降,下游也能发现。如果下游服务异常,不能提供正常服务,下游需主动通知上游。如果没有通知,上游也需要能自身发现异常,并采取措施。而当下游服务正常时,上游也要及时探测到,并开放对外服务。
除了上述设计原则之外,一个系统的负载保护设计好了之后,还可以通过低能耗、适应性、容灾能力、透明扩缩容、健壮性等指标来判断它是否合理。
以上就是今天的内容,希望对你有所帮助。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论