Springcloud基础(4)-Ribbon负载均衡

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

1. Ribbon简单描述

Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具。Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。
----来自百度
简单的说,这个Ribbon就是由netfix开发的一套用于转接请求的工具(除了自带的一些轮询、随机方式,也可以手动编译自己的负载均衡方式)。

即使用顺序发起请求-》到达ribbon->调用eurake
我记得ngnix也是存在负载均衡的?没错,ngnix也自带一个负载均衡,为轮询、最少连接等

2. 在SpringCloud中查看相关处理源码

  1. 在ribbon的负载均衡中,主走的配置类名称为:LoadBalancerInterceptor;实现接口为:ClientHttpRequestInterceptor(专门拦截住客户端发起的请求);
  2. 相关轮询的规则:所有规则的父类接口为IRule,其中实现了几个主要的方法:com.netflix.loadbalancer.IRule#choose(实现服务选择);
    Springcloud基础(4)-Ribbon负载均衡,spring cloud,ribbon,负载均衡
  3. 调整IRule,即只需要重新定义一个对应的IRule规则,并将其放入容器,后续读取的时候便会按照这个来,如你可以实现一个类,继承IRule;这样可以自定义具体的规则。当然,普遍可以直接应用已经存在的规则,而无需自己去重新定义。
// 定义一个类

public class NewRule implements AbstractLoadBalancerRule{

    @Override
    public void initWithNiwsConfig(IClientConfig clientConfig) {

    }

    @Override
    public Server choose(Object key) {
        return null;
    }

    public NewRule() {
        super();
    }
}


// 在启动类中,将对应的新增规则放入容器即可。
   @Bean
    public IRule randomRule() {
        return new NewRule();
    }

ribbon默认实现的是ZoneAvoidanceRule规则,这个规则的基本描述是可以定好服务区的范围,然后在这个范围内去轮询,一般情况下,可能就是所有的服务直接轮询,因为很多公司服务可能都在一起,

3. ribbon的默认策略,懒加载

ribbon:
  eager-load:
    enabled: true  #默认为false,表示ribbon是需要等到使用的时候才加载;;
    clients: userservice  # 配置为 懒加载的服务

Springcloud基础(4)-Ribbon负载均衡,spring cloud,ribbon,负载均衡

3. 实操中的相关问题

  1. 在这里我一开始用template调用其它模块的接口时,发现,eurake可以读取到正确的接口,但是却总是报错,连接失败:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://*****/***/***": Connection timed out: connect; nested exception is java.net.ConnectException: Connection timed out: connect] with root cause java.net.ConnectException: Connection timed out: connect ;
    由于一直看不出代码哪里有问题,于是怀疑是不是一开始的配置就不对,百度后,在网上发现有人也出现过类似的问题,且都是配置上过期的时间就会恢复正常。如下:
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
        requestFactory.setConnectTimeout(10*1000);
        requestFactory.setReadTimeout(10*1000);
        return new RestTemplate(requestFactory);
    }

通过上面的RestTemplate配置一下具体入参HttpComponentsClientHttpRequestFactory ;在默认的情况下,如果不配置具体的超时时间,就会一直抛出超时异常,目前都没弄明白为什么。
等后续学的差不多了统一把这些问题都过一下;;文章来源地址https://www.toymoban.com/news/detail-561186.html

到了这里,关于Springcloud基础(4)-Ribbon负载均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Spring Cloud之负载均衡与服务调用(Ribbon)

    目录 Ribbon 简介 负载均衡 简介 负载均衡方式 服务端负载均衡 工作原理 特点 客户端负载均衡 工作原理 特点 对比 实现 负载均衡策略 切换负载均衡策略 定制负载均衡策略 超时与重试 单个服务配置 全局配置 服务调用 示例         Ribbon 是 Netflix 公司发布的开源组件,其

    2024年02月08日
    浏览(51)
  • Ribbon:Spring Cloud负载均衡与服务调用组件

    负载均衡? Ribbon实现服务调用? Ribbon实现负载均衡? 切换负载均衡策略? 定制负载均衡策略? 负载均衡 负载均衡(Load Balance),将用户的请求平分到多个服务器上运行,以扩展服务器带宽、增强数据处理能力、增加吞吐量、提高网络的可用性和灵活性的目的。 服务端负载

    2024年02月03日
    浏览(46)
  • 【Spring Cloud】Ribbon 中的几种负载均衡策略

    负载均衡通常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务端负载均衡器的问题是,它提供了更强的流量控制权,但无法满足不同的消费者希望使用不同负载均衡策略的需求,而使

    2024年02月15日
    浏览(61)
  • Spring Cloud 实战 | 解密负载均衡Ribbon底层原理,包含实战源码

    专栏集锦,大佬们可以收藏以备不时之需 Spring Cloud实战专栏:https://blog.csdn.net/superdangbo/category_9270827.html Python 实战专栏:https://blog.csdn.net/superdangbo/category_9271194.html Logback 详解专栏:https://blog.csdn.net/superdangbo/category_9271502.html tensorflow专栏:https://blog.csdn.net/superdangbo/category_869

    2024年02月08日
    浏览(53)
  • 【Spring Cloud】Ribbon 实现负载均衡的原理,策略以及饥饿加载

    在前文《深入理解 Eureka 注册中心的原理、服务的注册与发现》中,介绍了如何使用 Eureka 实现服务的注册与拉取,并且通过添加 @LoadBalanced 注解实现了负载均衡。这种自动化的背后隐藏着许多疑问: 服务是在何时进行拉取的? 负载均衡是如何实现的? 负载均衡的原理和策略

    2024年02月07日
    浏览(47)
  • Spring Cloud(Finchley版本)系列教程(二) 客户端负载均衡Ribbon

    Spring Cloud(Finchley版本)系列教程(二) 客户端负载均衡Ribbon 目前主流的负载均衡方案有两种,一种是集中式均衡负载,在消费者与服务提供者之间使用独立的代理方式进行负载,比如F5、Nginx等。另一种则是客户端自己做负载均衡,根据自己的请求做负载,Ribbon就属于客户端自己

    2024年02月09日
    浏览(55)
  • 4-Spring cloud之搭建Ribbon负载均衡——服务器上实操(下)

    我们在上篇文章的基础上继续Ribbon的负载均衡,为了更清晰,再放一次架构图,如下: 关于图的更多解释,请看Ribbon负载均衡上篇。 关于上篇请看下面文章,如下: 3-Spring cloud之搭建Ribbon负载均衡——服务器上实操(上). Ribbon负载均衡的规则都定义在IRule接口中,而IRule有

    2024年02月12日
    浏览(51)
  • 云原生微服务 第五章 Spring Cloud Netflix Eureka集成负载均衡组件Ribbon

    第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon Spring Cloud Ribbon 是一套基于 Netflix Ribbon 实现的客户端负载均衡和服务调用工具,其主要功能是提供客户端的负载均衡算法和服务

    2024年02月08日
    浏览(52)
  • Spring Cloud Alibaba全家桶(三)——微服务负载均衡器Ribbon与LoadBalancer

    本文为 微服务负载均衡器Ribbon与LoadBalancer 相关知识,下边将对 什么是Ribbon (包括: 客户端的负载均衡 、 服务端的负载均衡 、 常见负载均衡算法 ), Nacos使用Ribbon , Ribbon内核原理 (包括: Ribbon原理 , Ribbon负载均衡策略 , 饥饿加载 ), Spring Cloud LoadBalancer (包括:

    2024年02月02日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包