Ribbon负载均衡与内核原理

什么是Ribbon?

目前主流的负载方案分为两种:

  1. 集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如F5),也有软件的(Nginx)
  2. 客户端根据自己的请求做负载均衡,Ribbon就属于客户端自己做负载均衡。

Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等,通过Load Balancer获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现我们自己的负载均衡算法。

常见的负载均衡算法

随机:通过随机选择服务进行执行,一般这种方式使用比较少

轮询:负载均衡默认实现方式,请求来之后排队处理

加权轮询:对服务器性能的分型,给高配置,低负载的服务器分配更高的权重,均衡各个服务器的压力。

地址Hash:通过客户端请求的地址的Hash值取模映射进行服务器调度

最小链接数:即使请求均衡了,压力不一定会均衡,最小链接数就是根据服务器的情况,比如请求挤压数等参数,将请求分配到当前压力最小的服务器上。

什么是Spring Cloud LoadBalancer

Spring Cloud LoadBalancer是Spring Cloud官方提供的客户端负载均衡器,用来替换Ribbon

Spring官方提供了两种负载均衡的客户端

RestTemplate

RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问http服务的方法,能够大大提高客户端的编写效率。默认情况下,restTemplate默认依赖jdk的Http链接工具。

webclient是从spring webflux版本开始提供的一个非阻塞的基于响应式编程的进行http请求的客户端工具。他的响应式编程是基于reactor的。webclient中提供了标准的http请求方式对应的get,post,put,delete等方法,可以用来发起响应请求。

相关推荐
小黑蛋学java1 小时前
Nginx 接口耗时 Prometheus + Grafana 监控实施方案
运维·nginx·负载均衡·grafana·prometheus
运维瓦工5 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
worilb8 小时前
Spring Cloud 学习与实践(8):Spring Cloud Gateway 统一入口、路由转发与双重跨域故障演练
学习·spring·spring cloud
Devin~Y10 小时前
大厂 Java 面试实战:从 Spring Boot 微服务到 AI RAG 音视频平台全链路解析
java·spring boot·redis·spring cloud·微服务·rag·spring ai
我登哥MVP11 小时前
SpringCloud 核心组件解析:服务注册与发现
java·spring boot·后端·spring·spring cloud·java-ee·maven
難釋懷11 小时前
Nginx使用sticky模块完成对Nginx的负载均衡
运维·nginx·负载均衡
盒子691013 小时前
图生图大模型对于各种复杂的图片如何做负载均衡呢?
运维·负载均衡
2401_8346369915 小时前
Linux 负载均衡全实战:Nginx+HAProxy+LVS 从原理到落地
linux·nginx·负载均衡
豆瓣鸡1 天前
Spring Cloud笔记
spring·spring cloud
2401_834636991 天前
Linux集群技术-高可用与负载均衡实战解析
linux·运维·负载均衡