异构服务器的负载均衡及过载保护
后端的service有可能部署在硬件条件不同的服务器上:
1)如果对标最低配的服务器“均匀”分摊负载,高配的服务器的利用率不足;
2)如果对标最高配的服务器“均匀”分摊负载,低配的服务器可能会扛不住;
service层的负载均衡,一般是通过service连接池来实现的,调用方连接池会建立与下游服务多个连接,每次请求“随机”获取连接,来保证service访问的均衡性。
1.通过“静态权重”标识service的处理能力
为每个下游service设置一个“权重”,代表service的处理能力,来调整访问到每个service的概率
优点是:简单,能够快速的实现异构服务器的负载均衡。
缺点也很明显:这个权重是固定的,无法自适应动态调整
2.通过“动态权重”标识service的处理能力
1)用一个动态权重来标识每个service的处理能力,默认初始处理能力相同,即分配给每个service的概率相等;
2)每当service成功处理一个请求,认为service处理能力足够,权重动态+1
3)每当service超时处理一个请求,认为service处理能力可能要跟不上了,权重动态-10(权重下降会更快)
4)为了方便权重的处理,可以把权重的范围限定为[0, 100],把权重的初始值设为60分
3.过载保护
service的过载保护,是指即使系统负载超过一个service的处理能力,service让能保证对外提供有损的稳定服务。
最简单的方式,服务端设定一个负载阈值,超过这个阈值的请求压过来,全部抛弃
4.借助“动态权重”来实施过载保护
如果有连续的请求都超时或某一个service的动态权重降为0,于是设定策略:接下来的若干时间内,例如1秒(或者接下来的若干个请求),请求不再分配给这个service;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2015-09-22 Yii2 radioList设置默认值