柔性负载均衡
柔性负载均衡
柔性服务
柔性服务是一种去中心化的智能负载均衡组件,同时也是 Dubbo-go 3.0 版本中重磅新特性之一。柔性服务尚处于早期实验阶段,该特性将在后续版本中持续优化,与 Dubbo 社区共同探索出一套适合微服务场景的最佳实践。
传统的负载均衡算法是由随机节点、RoundRobin 等算法实现,他们的局限性在于不知道当前服务提供者的负载情况,算法总是以尽可能公平的概率调用不同的服务提供者。在实践中,公平不等于高性能,集群服务性能还与服务负载、任务复杂度等多因素相关。为解决传统负载均衡算法的不足,Dubbo-go 在 3.0 版本中引入了柔性服务,实现了容量动态评估和分流功能。
容量评估
容量评估是柔性服务的核心,它能动态评估服务端容量水平。在容量评估的过程中,两个核心指标是 TPS 和响应时间,要平衡系统利用率和系统性能两者之间的关系,使整体处于最佳的状态。
- TPS 从服务提供者的角度反映系统利用率。在系统压力未饱和前,请求数越大则系统利用率越高,但是进一步加大请求量直至系统过饱和后,出现过载的问题,导致整体效率呈下降趋势。
- 响应时间是从服务调用者的角度反映系统性能。在系统压力未饱和前,响应时间与请求数成线性增长的关系,但是进一步加大请求量直至系统过饱和后,响应时间与请求数成指数级增长。

柔性服务则在调用过程中收集
在 Dubbo-go 3.0 版本中,支持服务柔性负载均衡。在微服务场景下,客户端会在调用过程中收集该服务下游 server 实例的硬件资源消耗情况,通过容量评估与筛选策略,选择最合适的下游实例进行调用,从而提升系统整体的性能。
服务柔性将在之后的迭代中持续优化,追求与 Dubbo 社区共同探索出最佳实践。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 January 2, 2023: docs:quickstart_triple_with_customize (#1790) (2d2ea68)
