【SpringCloud入门】-- Ribbon入门

这篇具有很好参考价值的文章主要介绍了【SpringCloud入门】-- Ribbon入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是Ribbon?

Ribbon就是netflix公司的一个开源项目,主要功能是提供客户端负载均衡算法和服务调用。Ribbon客户端组件提供了完善的配置项,如连接超时,重试等等。Ribbon作为服务消费者的负载均衡器,有两种使用方式,一是和RestTemplate结合,二是和Open Feign结合。OpenFeign默认集成Ribbon。

2.什么是负载均衡?

负载均衡是一种在计算机网络和服务器系统中使用的技术,旨在平衡系统中的工作负载,确保资源能够以均衡的方式分配给各个请求。简单来说,负载均衡就像是一个智能调度器,它将用户请求分配到多个服务器上,以避免任何一个服务器过载或不工作。

举个例子来说明,假设你经营一家餐厅,每天会有很多客人到来点餐。如果只有一个服务员负责接待所有客人,那么可能会出现排队等待的情况,有些客人可能会感到不满。为了解决这个问题,你决定雇佣更多的服务员,并将客人均匀地分配给他们。这样,每个服务员只需处理一部分客人,服务效率更高,客人也不需要长时间等待。这就是负载均衡的概念。

负载均衡可以通过多种算法来实现,常见的有轮询算法、最小连接数算法、最短响应时间算法等。它们根据不同的策略和条件来确定应该将请求发送到哪个服务器上,以实现负载的均衡。

3.Ribbon负载均衡的算法和实现

ribbon中核心的接口IRule

【SpringCloud入门】-- Ribbon入门

Ribbon是一个开源的负载均衡器,常用于基于Java的微服务架构中。它提供了多种负载均衡算法和实现方式,下面是其中几种常见的算法和实现:

  1. 轮询(Round Robin):这是最简单的负载均衡算法,Ribbon会将请求按照顺序分配给后端服务器。每个请求依次发送到不同的服务器,实现了请求的均衡分发。

  2. 权重轮询(Weighted Round Robin):在轮询的基础上,每个服务器都可以设置一个权重值,表示其处理能力。Ribbon会根据权重值来分配请求,处理能力越强的服务器获得更多的请求。

  3. 随机(Random):Ribbon会随机选择一个后端服务器来处理请求。每个服务器被选中的概率是相等的,适用于无需考虑服务器性能差异的场景。

  4. 最少连接(Least Connections):Ribbon会选择当前连接数最少的服务器来处理请求。通过动态监测服务器的连接数,将请求发送到连接数最少的服务器上,实现了请求的均衡分配。

  5. 响应时间加权(Response Time Weighted):根据服务器的平均响应时间来进行权重分配。平均响应时间较短的服务器获得更高的权重,从而获得更多的请求。

  6. Hash散列(Hashing):根据请求的特定属性(如请求URL、请求IP等)进行哈希计算,然后将哈希值映射到后端服务器。相同哈希值的请求总是会被分配到同一个服务器上,保证了相同请求的一致性处理。

除了以上的算法,Ribbon还支持自定义负载均衡策略。你可以基于自己的业务需求和场景特点,实现适合自己的负载均衡算法。

需要注意的是,Ribbon在最新版本的Spring Cloud中已经进入维护模式,推荐使用Spring Cloud LoadBalancer替代,它提供了更强大、灵活的负载均衡能力。

4.Ribbon调用前要做什么事?

通过“http://” + serviceId + "/info" ,思考ribbon需要做什么?

restTemplate.getForObject("http://provider/info",String.class);

1. 拦截该请求。

2. 获取该请求的url地址。

3. 截取url地址的provider。

4. 从服务列表找到key为provider的服务实例集合。

5. 根据负载均衡算法选出符合的实例。

6. 拿到该实例的host和port,重构url中的provider。

7. 发送restTemplate.getForObject(“http://ip:port/info”,String.class)。

5.如何修改Ribbon默认的负载均衡算法

修改yml文件,指定某个服务用什么算法

provider :
# 提供者的服务名称 , 那么访问该服务的时候就会按照自定义的负载均衡算法
        ribbon :
                NFLoadBalancerRuleClassName : com.netflix.loadbalancer.RandomRule
# 几种算法的全限定类名

6.Ribbon底层实现原理

Ribbon的底层实现原理主要包括两个核心部分:服务发现和负载均衡算法。

  1. 服务发现: Ribbon通过与服务注册中心进行交互,获取可用的服务实例列表。服务注册中心(如Eureka、Consul)是一个用于服务治理的组件,它能够帮助服务提供者将自身的信息注册到其中,消费者可以从注册中心获取可用的服务实例。Ribbon会定期从注册中心拉取最新的服务列表,并缓存起来供后续使用。这样就保证了Ribbon始终具备最新的可用服务列表。同时,当有新的服务实例加入或从注册中心下线时,Ribbon也能及时感知并更新服务列表。

  2. 负载均衡算法: Ribbon提供了多种负载均衡算法,用于决定将请求发送到哪个服务实例上。常见的负载均衡算法包括轮询(Round Robin)、权重轮询(Weighted Round Robin)、随机(Random)、最少连接(Least Connections)、响应时间加权(Response Time Weighted)等。Ribbon根据选择的负载均衡算法,在服务列表中选择一个合适的服务实例,并将请求发送到该实例上。这样可以实现请求的均衡分发,提高系统的可用性和性能。

 Ribbon通过服务发现获取可用的服务列表,并借助负载均衡算法实现请求的合理分配。这样可以使得客户端能够有效地与后端服务进行通信,提高系统的负载均衡能力和整体性能。需要注意的是,最新版的Spring Cloud已经将Ribbon进入维护模式,推荐使用Spring Cloud LoadBalancer等替代方案来实现负载均衡。文章来源地址https://www.toymoban.com/news/detail-494129.html

到了这里,关于【SpringCloud入门】-- Ribbon入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringCloud面试题大全(Netflix+Alibaba)

    ​ Spring cloud 是一个基于 Spring Boot 实现的服务治理工具包,用于微服务架构中管理和协调服务的。Spring Cloud 是一系列框架的有序集合。它利用 Spring Boot 的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、负载均衡、断路器、数据监控等,都

    2024年02月13日
    浏览(58)
  • 微服务网关 —— SpringCloud Netflix Zuul

    Spring Cloud Zuul 是 Spring Cloud Netflix 子项目的核心组件之一,可以作为微服务架构中的 API 网关使用,有以下用途: 鉴权:对于访问每个服务的请求进行鉴权,拒绝鉴权失败的请求 监控:对系统的请求进行监控,记录请求响应日志,实时统计当前系统的访问量以及监控状态 压力

    2024年02月11日
    浏览(37)
  • 谷粒商城第三天-微服务中基本组件的使用 java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho

    目录 一、前言 二、学习的内容 一、Nacos的服务注册/发现 1. 导依赖,nacos-discovery java.lang.AbstractMethodError: org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.cho 2. 在application.yml中声明nacos服务器的ip地址和端口号,以及指定好服务的名称 3. 在启动类上面加上@EnableDiscoverClient 二、

    2024年02月09日
    浏览(89)
  • SpringCloud Ribbon 学习

    1. Ribbon 是什么? Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端 负载均衡的工具。 Ribbon 主要功能是提供客户端负载均衡算法和服务调用 Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。 Ribbon 会基于某种规则(如简单轮询,随机连接等)去连接指定服务

    2024年02月07日
    浏览(27)
  • 【SpringCloud】Ribbon负载均衡

    🏡浩泽学编程 :个人主页  🔥 推荐专栏 :《深入浅出SpringBoot》《java对AI的调用开发》               《RabbitMQ》《Spring》《SpringMVC》《项目实战》 🛸学无止境,不骄不躁,知行合一 在Eureka注册中心中我们在添加完@LoadBalanced注解,即可实现负载均衡功能,现在一起

    2024年04月17日
    浏览(39)
  • SpringCloud:Ribbon

    ribbon是一个客户端负载均衡器,会从注册中心拉取可用服务,当客户端需要获取服务请求时,ribbon能够解析服务地址并实现负载均衡 导入依赖 为RestTemplate配置类添加注解 在服务类中发起请求 其中“user-service”为微服务名称 常见的负载均衡算法 随机,通过随机选择服务进行

    2024年02月02日
    浏览(29)
  • SpringCloud--Ribbon解析

    一、Spring Cloud Ribbon简介 Spring Cloud Ribbon是Spring Cloud生态系统中的一部分,是一套基于 Netflix Ribbon 实现的客户端负载均衡工具,由于Spring Cloud对其进行二次封装,可以将面向服务的Rest模板(RestTemplate)请求转换成客户端负载均衡的服务调用。且无需单独部署,只需要在项目中

    2024年02月20日
    浏览(32)
  • SpringCloud(三) Ribbon负载均衡

    SpringCloud(二) Eureka注册中心的使用-CSDN博客 在SpringCloud(二)中学习了如何通过Eureka实现服务的注册和发送,从而通过RestTemplate实现不同微服务之间的调用,加上@LoadBalance注解之后实现负载均衡,那负载均衡的原理是什么呢? 目录 一, 负载均衡 1.1 负载均衡原理  1.2 源码追踪 1, LoadBa

    2024年02月06日
    浏览(46)
  • SpringCloud Ribbon负载均衡(十一)

    前面搭建了初步例子,但是还没实现真正负载均衡,我们这里要先搞三个服务提供者集群,然后才能演示负载均衡,以及负载均衡策略; 新建项目microservice-student-provider-1002,microservice-student-provider-1003 pom.xml,application.yml,以及java类都复制一份,启动类名称对应的改下;  

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包