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

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

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


2. 自适应负载均衡与服务柔性

 

1) 整体介绍

 

本文所说的“柔性服务”主要是指consumer端的负载均衡和provider端的限流两个功能。在之前的dubbo版本中,负载均衡部分更多的考虑的是公平性原则,即consumer端尽可能平等的从provider中作出选择,在某些情况下表现并不够理想。而限流部分只提供了静态的限流方案,需要用户对provider端设置静态的最大并发值,然而该值的合理选取对用户来讲并不容易。我们针对这些存在的问题进行了改进。

 

2) 负载均衡

 

在原本的dubbo版本中,有五种负载均衡的方案供选择,他们分别是“Random”,“ShortestResponse”,“RoundRobin”,“LeastActive”和“ConsistentHash”。其中除“ShortestResponse”和“LeastActive”外,其他的几种方案主要是考虑选择时的公平性和稳定性。

 

对于“ShortestResponse”来说,其设计目的是从所有备选的provider中选择response时间最短的以提高系统整体的吞吐量。然而存在两个问题:

 

• 在大多数的场景下,不同provider的response时长没有非常明显的区别,此时该算法会退化为随机选择。

 

• response的时间长短有时也并不能代表机器的吞吐能力。对于“LeastActive”来说,其认为应该将流量尽可能分配到当前并发处理任务较少的机器上。但是其同样存在和“ShortestResponse”类似的问题,即这并不能单独代表机器的吞吐能力。

 

基于以上分析,我们提出了两种新的负载均衡算法。一种是同样基于公平性考虑的单纯“P2C”算法,另一种是基于自适应的方法“adaptive”,其试图自适应的衡量provider端机器的吞吐能力,然后将流量尽可能分配到吞吐能力高的机器上,以提高系统整体的性能。

 

3) 效果介绍

 

对于负载均衡部分的有效性实验在两个不同的情况下进行的,分别是提供端机器配置比较均衡和提供端机器配置差距较大的情况。

 

image.png

image.png

 

4) 使用方法

 

使用方法与原本的负载均衡方法相同。只需要在consumer端将“loadbalance”设置为“p2c”或者“adaptive”即可。

 

5) 代码结构

 

负载均衡部分的算法实现只需要在原本负载均衡框架内继承LoadBalance接口即可。


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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
人工智能 Dubbo 应用服务中间件
使用 Apache Dubbo 释放 DeepSeek R1 的全部潜力
本文介绍了如何利用 Apache Dubbo 的多语言 SDK 充分释放 DeepSeek R1 的全部潜力,助力 AI 开发的高效落地。
691 119
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
1522 136
|
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 的全新升级,突破了以往局限,实现了对南北向与东西向流量的全面支持,并提升了对云原生架构的友好性。
764 121
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
990 7
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
388 0
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
679 4
|
负载均衡 网络协议 调度
Docker Swarm服务发现与负载均衡
【10月更文挑战第8天】
1017 1
|
存储 搜索推荐 数据库
MarkLogic在微服务架构中的应用:提供服务间通信和数据共享的机制
随着微服务架构的发展,服务间通信和数据共享成为关键挑战。本文介绍MarkLogic数据库在微服务架构中的应用,阐述其多模型支持、索引搜索、事务处理及高可用性等优势,以及如何利用MarkLogic实现数据共享、服务间通信、事件驱动架构和数据分析,提升系统的可伸缩性和可靠性。
479 7
|
存储 负载均衡 数据库
探索微服务架构中的服务发现机制
【7月更文挑战第24天】在微服务架构的复杂网络中,服务发现是确保通信流畅与系统弹性的关键组件。本文将深入探讨服务发现的工作原理、面临的挑战以及解决方案,同时比较不同服务发现工具的性能特点,旨在为开发者提供实现高效服务发现的实战指南。

热门文章

最新文章

推荐镜像

更多