带你读《Apache Dubbo微服务开发从入门到精通》——三、 负载均衡机制(5)

简介: 带你读《Apache Dubbo微服务开发从入门到精通》——三、 负载均衡机制(5)

《Apache Dubbo微服务开发从入门到精通》——服务发现与负载均衡——三、 负载均衡机制(4) https://developer.aliyun.com/article/1224430


11) 原理介绍

 

HeuristicSmoothingFlowControl

 

相关指标

 

alpha

alpha为可接受的延时的上升幅度,默认为0.3

 

minLatency

在一个时间窗口内的最小的Latency值。

 

noLoadLatency

noLoadLatency是单纯处理任务的延时,不包括排队时间。这是服务端机器的固有属性,但是并不是一成不变的。在HeuristicSmoothingFlowControl算法中,我们根据机器CPU的使用率来确定机器当前的noLoadLatency。当机器的CPU使用率较低时,我们认为minLatency便是noLoadLatency。当CPU使用率适中时,我们平滑的用minLatency来更新noLoadLatency的值。当CPU使用率较高时,noLoadLatency的值不再改变。

 

maxQPS

一个时间窗口周期内的QPS的最大值。

 

avgLatency

一个时间窗口周期内的Latency的平均值,单位为毫秒。

 

maxConcurrency

计算得到的当前服务提供端的最大并发值。

 

image.png

 

算法实现

 

当服务端收到一个请求时,首先判断CPU的使用率是否超过50%。如果没有超过50%,则接受这个请求进行处理。如果超过50%,说明当前的负载较高,便从HeuristicSmoothingFlowControl算法中获得当前的maxConcurrency值。如果当前正在处理的请求数量超过了maxConcurrency,则拒绝该请求。

 

AutoConcurrencyLimier

 

相关指标

 

MaxExploreRatio

默认设置为0.3

 

MinExploreRatio

默认设置为0.06

 

SampleWindowSizeMs

采样窗口的时长。默认为1000毫秒。

 

MinSampleCount

采样窗口的最小请求数量。默认为40。

 

MaxSampleCount

采样窗口的最大请求数量。默认为500。

 

emaFactor

平滑处理参数。默认为0.1。

 

exploreRatio

探索率。初始设置为MaxExploreRatio。

 

若avgLatency<=noLoadLatency*(1.0+MinExploreRatio)或者qps>=maxQPS*(1.0 + MinExploreRatio)

 

则exploreRatio=min(MaxExploreRatio,exploreRatio+0.02)

否则exploreRatio=max(MinExploreRatio,exploreRatio-0.02)

 

maxQPS

窗口周期内QPS的最大值。

 

image.png

 

noLoadLatency

 

image.png

 

halfSampleIntervalMs

半采样区间。默认为25000毫秒。

 

resetLatencyUs

下一次重置所有值的时间戳,这里的重置包括窗口内值和noLoadLatency。单位是微秒。初始为0

 

image.png

 

remeasureStartUs

下一次重置窗口的开始时间。

 

image.png

 

startSampleTimeUs

开始采样的时间。单位为微秒。

 

sampleCount

当前采样窗口内请求的数量。

 

totalSampleUs

采样窗口内所有请求的latency的和。单位为微秒。

 

totalReqCount

采样窗口时间内所有请求的数量和。注意区别sampleCount。

 

samplingTimeUs

采样当前请求的时间戳。单位为微秒。

 

latency

当前请求的latency。

 

qps

在该时间窗口内的qps值。

 

image.png

 

avgLatency

窗口内的平均latency。

 

image.png

 

maxConcurrency

上一个窗口计算得到当前周期的最大并发值。

 

nextMaxConcurrency

当前窗口计算出的下一个周期的最大并发值。

 

image.png

 

Little's Law

 

当服务处于稳定状态时:concurrency=latency*qps。这是自适应限流理论的基础。

当请求没有导致机器超载时,latency基本稳定,qps和concurrency处于线性关系。

 

当短时间内请求数量过多,导致服务超载的时候,concurrency会和latency一起上升,qps则会趋于稳定。

 

算法实现

 

AutoConcurrencyLimier的算法使用过程和HeuristicSmoothingFlowControl类似。

 

实现与HeuristicSmoothingFlowControl的最大区别是AutoConcurrencyLimier是基于窗口的。每当窗口内积累了一定量的采样数据时,才利用窗口内的数据来更新得到maxConcurrency。

 

其次,利用exploreRatio来对剩余的容量进行探索。

 

另外,每隔一段时间都会自动缩小max_concurrency并持续一段时间,以处理noLoadLatency上涨的情况。因为估计noLoadLatency时必须先让服务处于低负载的状态,因此对maxConcurrency的缩小是难以避免的。

 

由于max_concurrency

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
人工智能 Dubbo 应用服务中间件
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
本文介绍了如何利用 Apache Dubbo 的多语言 SDK 充分释放 DeepSeek R1 的全部潜力,助力 AI 开发的高效落地。
577 105
|
存储 缓存 算法
分布式锁服务深度解析:以Apache Flink的Checkpointing机制为例
【10月更文挑战第7天】在分布式系统中,多个进程或节点可能需要同时访问和操作共享资源。为了确保数据的一致性和系统的稳定性,我们需要一种机制来协调这些进程或节点的访问,避免并发冲突和竞态条件。分布式锁服务正是为此而生的一种解决方案。它通过在网络环境中实现锁机制,确保同一时间只有一个进程或节点能够访问和操作共享资源。
675 3
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
1321 129
|
Cloud Native Java Nacos
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
939 0
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
在 Apache Dubbo 突破 4w Star 之际,Apache Dubbo 团队正式宣布,Dubbo 3.3 正式发布!作为全球领先的开源微服务框架,Dubbo 一直致力于为开发者提供高性能、可扩展且灵活的分布式服务解决方案。此次发布的 Dubbo 3.3,通过 Triple X 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
605 115
|
存储 缓存 负载均衡
微服务架构中的服务发现与注册中心实践
【7月更文挑战第26天】在微服务的海洋里,每个服务都是一座孤岛。要让这些孤岛彼此发现、相互通讯,就需要一个高效的信使系统——服务发现与注册中心。本文将深入探讨如何搭建和维护这一核心组件,确保微服务间的顺畅交流。
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
281 0
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
900 7
|
设计模式 存储 运维
微服务架构中的服务发现与注册中心设计模式
在现代软件工程实践中,微服务架构已成为构建灵活、可扩展系统的首选方案。本文将深入探讨微服务架构中至关重要的服务发现与注册中心设计模式。我们将从服务发现的基本原理出发,逐步解析注册中心的工作机制,并以Eureka和Consul为例,对比分析不同实现的优劣。文章旨在为开发者提供一套清晰的指导原则,帮助他们在构建和维护微服务系统时做出更明智的技术选择。
|
存储 负载均衡 数据库
探索微服务架构中的服务发现机制
【7月更文挑战第24天】在微服务架构的复杂网络中,服务发现是确保通信流畅与系统弹性的关键组件。本文将深入探讨服务发现的工作原理、面临的挑战以及解决方案,同时比较不同服务发现工具的性能特点,旨在为开发者提供实现高效服务发现的实战指南。

推荐镜像

更多