RPC框架负载均衡

embedded/2024/11/21 20:11:27/

什么是负载均衡

当一个服务节点无法支撑现有的访问量时,会部署多个节点,组成一个集群,然后通过负载均衡将请求分发给这个集群下的每个服务节点,从而达到多个服务节点共同分担请求压力的目的

image-20241111220425584

负载均衡主要分为软负载硬负载,软负载就是在一台或多台服务器上安装负载均衡的软件,如LVS、Nginx等,硬负载就是通过硬件设备来实现的负载均衡,如F5服务器等。负载均衡的算法主要有随机法、轮询法、最小连接法等。

这种负载均衡主要应用在Web服务上,Web服务的域名绑定负载均衡的地址,通过负载均衡将用户的请求分发到一个个后端服务上。

RPC框架中的负载均衡

RPC负载均衡完全由RPC框架自身实现,RPC的服务调用者会与“注册中心”下发的所有服务节点建立长连接,在每次发起RPC调用时,服务调用者都会通过配置的负载均衡插件,自主选择一个服务节点,发起RPC调用请求。

image-20241111222052942

RPC负载均衡策略一般包括随机权重、Hash、轮询

轮询算法:保证每个节点接收到的请求流量是均匀的。

权重算法:通过控制节点权重的方式,来进行流量控制。

如何设计自适应的负载均衡

调用者知道每个服务节点处理请求的能力,再根据服务处理节点处理请求的能力来判断要打给它多少流量即可。

如何判定一个服务节点的处理能力

打分策略。服务调用者收集与之建立长连接的每个服务节点的指标数据,如服务节点的负载指标、CPU核数、内存大小、请求处理的耗时指标(如请求平均耗时、TP99、TP999)、服务节点的状态指标(如正常、亚健康)。

通过这些指标,计算分数,根据分数设置机器权重,动态调整机器流量。

image-20241111230357466

关键步骤解释:

  1. 添加服务指标收集器,并将其作为插件,默认有运行时状态指标收集器、请求耗时指标收集器。
  2. 运行时状态指标收集器收集服务节点CPU核数、CPU负载以及内存等指标,在服务调用者与服务提供者的心跳数据中获取。
  3. 请求耗时指标收集器收集请求耗时数据,如平均耗时、TP99、TP999等。
  4. 可以配置开启哪些指标收集器,并设置这些参考指标的指标权重,再根据指标数据和指标权重来综合打分。
  5. 通过服务节点的综合打分与节点的权重,最终计算出节点的最终权重,之后服务调用者会根据随机权重的策略,来选择服务节点。

RPC框架负载均衡优点

RPC框架的负载均衡,由RPC框架自身实现,无需负载均衡设备或者负载均衡服务器来实现负载均衡

可以节约成本;还减少了与负载均衡设备间额外的网络传输,提升了传输效率;并且均衡策略可配,便于服务治理。


http://www.ppmy.cn/embedded/139417.html

相关文章

ubuntu20.04默认的python3.8升级到python3.10

Python 3.8 于 2019 年 10 月发布,距今已有五年时间。2024 年 10 月是 Python 3.8 版本发布的最后一个月,从 2024 年 10 月开始,如果存在安全错误,Python 开发团队将不会修复该错误。有必要把python3.8升级python3.10。 新加apt源…

15分钟学 Go 第 54 天 :项目总结与经验分享

第54天:项目总结与经验分享 目标:整理项目经验 一、课程概述 在经过前53天的学习后,今天我们将系统性地总结项目开发经验,包括架构设计、代码规范、性能优化、测试策略等方面的最佳实践。 二、项目经验总结表 领域关键点最佳…

推荐几个 VSCode 流程图工具

Visual Studio Code(简称VSCode)是一个由微软开发的免费、开源的代码编辑器。 VSCode 发布于 2015 年,而且很快就成为开发者社区中广受欢迎的开发工具。 VSCode 可用于 Windows、macOS 和 Linux 等操作系统。 VSCode 拥有一个庞大的扩展市…

Android中常见内存泄漏的场景和解决方案

本文讲解Android 开发中常见内存泄漏场景及其解决方案,内容包括代码示例、原因分析以及最佳实践建议。 1. 静态变量导致的内存泄漏 静态变量的生命周期与应用进程一致,如果静态变量持有了对 Activity 或其他大对象的引用,就可能导致内存泄漏…

基于yolov8、yolov5的电塔缺陷检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要:电塔缺陷检测在电力设备巡检、运行维护和故障预防中起着至关重要的作用,不仅能帮助相关部门实时监测电塔运行状态,还为智能化检测系统提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的电塔缺陷检测模型&#xf…

昇思MindSpore第四课---GPT实现情感分类

1. GPT的概念 GPT 系列是 OpenAI 的一系列预训练模型,GPT 的全称是 Generative Pre-Trained Transformer,顾名思义,GPT 的目标是通过Transformer,使用预训练技术得到通用的语言模型。和BERT类似,GPT-1同样采取pre-trai…

【WPF】Prism学习(六)

Prism Dependency Injection 1.依赖注入(Dependency Injection) 1.1. Prism与依赖注入的关系: Prism框架一直围绕依赖注入构建,这有助于构建可维护和可测试的应用程序,并减少或消除对静态和循环引用的依赖。 1.2. P…

【CVPR2024】2024年CVPR的3D 目标检测的综述(还在补充中)

透视单目DETR 2D 透视单目DETR 2D的。对于DETR系列消除了 NMS的2D目标检测,RT-DETR[8]设计了一个高效的混合编码器,通过解耦尺度内交互和跨尺度融合来提高速度。采用不确定性最小查询选择,为解码器提供高质量的初始查询,从而提高准确率。 透视单目3D 透视单目3D。MonoCD…