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

负载均衡

    • 1. Ribbon简单描述
    • 2. 在SpringCloud中查看相关处理源码
    • 3. ribbon的默认策略,懒加载
    • 3. 实操中的相关问题

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(实现服务选择);
    在这里插入图片描述
  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  # 配置为 懒加载的服务

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 ;在默认的情况下,如果不配置具体的超时时间,就会一直抛出超时异常,目前都没弄明白为什么。
等后续学的差不多了统一把这些问题都过一下;;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/37333.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手机快充协议

高通:QC2.0、QC3.0、QC3.5、QC4.0、QC5.0、 FCP、SCP、AFC、SFCP、 MTKPE1.1/PE2.0/PE3.0、TYPEC、PD2.0、PD3.0/3.1、VOOC 支持 PD3.0/PD2.0 支持 QC3.0/QC2.0 支持 AFC 支持 FCP 支持 PE2.0/PE1.1 联发科的PE(Pump Express)/PE 支持 SFCP 在PP…

火车头小发猫AI伪原创[php源码]

对于大多数站长来说&#xff0c;有点困难&#xff0c;但是如果他们不知道如何原创&#xff0c;我们不知道如何伪原创吗&#xff1f;我把我常用的伪原创的方法列出来&#xff0c;希望对大家有所帮助。 使用教程&#xff1a;火车头采集器AI伪原创 <?php header("Conte…

【面试】Hbase

逻辑模型 1 NameSpace 命名空间&#xff0c;类似于关系型数据库的database概念&#xff0c;每个命名空间下有多个表。Hbase有两个自带的命名空间,分别是hbase和default, hbase中存放的是HBase内置的表, default表是用户默认使用的命名空间。 2 Region 类似于关系型数据库的表…

资深测试整理,APP专项测试方法总结,看这篇就够了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 APP专项测试 1、…

Python启动TCP服务并监听连接,从客户端发送消息

下面是一个简单的例子&#xff0c;演示如何在Python中启动TCP服务并监听连接&#xff0c;以及如何从客户端发送消息&#xff1a; TCP服务端代码&#xff1a; import socketHOST 192.168.6.211 PORT 8888server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) …

【QT】QT搭建OpenCV环境

QT/OpenCV 01、开始之前02、QT03、CMake04、OpenCV05、配置06、测试 01、开始之前 本文版本&#xff1a; 1、QT&#xff1a;Based on Qt 5.12.2 (MSVC 2017, 32 bit)&#xff0c;编译方式是MinGW 2、CMake&#xff1a;cmake-3.27.0-rc4-windows-x86_64.msi 3、OpenCV&#xff1…

深度学习——优化器Optimizer

代码以及详细注释&#xff1a; import torch import torch.utils.data as Data import torch.nn.functional as F import matplotlib.pyplot as plt# torch.manual_seed(1) # reproducible """超参数 """ # 学习率 LR 0.01 # 批大小 BATCH_…

什么是RPC并实现一个简单的RPC

1. 基本的RPC模型 主要介绍RPC是什么&#xff0c;基本的RPC代码&#xff0c;RPC与REST的区别&#xff0c;gRPC的使用 1.1 基本概念 RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;简单的理解是一个节点请求另一个节点提供的服务本地过程调用&am…

详解Jenkins配置邮件通知

前言 这几天Darren洋在使用Jenkins定时构建jmeter脚本中&#xff0c;要用到邮箱配置&#xff0c;故记录之。 一、Jenkins默认邮箱通知 这里填好smtp服务器地址和邮箱后缀&#xff0c;这样下面的账号就不用加邮箱后缀了。 网易邮箱设置以下我就不说废话文学了&#xff0c;直接上…

智能优化算法——哈里鹰算法(Matlab实现)

目录 1 算法简介 2 算法数学模型 2.1.全局探索阶段 2.2 过渡阶段 2.3.局部开采阶段 3 求解步骤与程序框图 3.1 步骤 3.2 程序框图 4 matlab代码及结果 4.1 代码 4.2 结果 1 算法简介 哈里斯鹰算法(Harris Hawks Optimization&#xff0c;HHO)&#xff0c;是由Ali Asghar Heid…

【深度剖析】 快速排序为什么不稳定?!

文章目录 零、前言一、快速排序的步骤原理二、什么是稳定性&#xff1f;三、不稳定的地方在哪里&#xff1f;四、怎么让快速排序变得稳定&#xff1f;1、采用双指针的快速排序A 思路简述B 参考代码 :C 算法分析 2、基于递归的快速排序A 思路简述B 参考代码C 算法分析 3、采用归…

【K8S系列】深入解析K8S调度

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记论点蓝色&#xff1a;用来标记论点 Kubernetes (k8s) 是一个容器编…

使用docker部署rancher并导入k8s集群

前言&#xff1a;鉴于我已经部署了k8s集群&#xff0c;那就在部署rancher一台用于管理k8s&#xff0c;这是一台单独的虚拟环境&#xff0c;之前在k8s的master节点上进行部署并未成功&#xff0c;有可能端口冲突了&#xff0c;这个问题我并没有深究&#xff0c;如果非要通过修改…

C#使用Chart进行统计,切换不同的图表类型

WindowsForm应用程序中Chart图表控件所属的命名空间&#xff1a; Chart 命名空间&#xff1a; System.Windows.Forms.DataVisualization.Charting 对应的dll路径&#xff1a; C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\Syst…

COT、COT-SC、TOT 大预言模型思考方式||底层逻辑:prompt设定

先讲一下具体缩写的意思 COT-chain of thoughts COT-SC (Self-consistency) Tree of thoughts:Deliberate problem solving with LLM 我理解其实不复杂 1. 最简单的是&#xff1a;直接大白话问一次 &#xff08;IO&#xff09; 2. 进阶一点是&#xff1a;思维链&#xff0c;…

PDF转CAD后尺寸如何保持一致?这几种方法可以尝试一下

CAD文件是可编辑的&#xff0c;可以进行修改、添加和删除&#xff0c;这使得在CAD软件中进行编辑更加容易和灵活。这意味着&#xff0c;如果需要对图纸进行修改或者添加新的元素&#xff0c;可以直接在CAD软件中进行操作&#xff0c;而不需要重新制作整个图纸。那么将PDF文件转…

Linux嵌入式项目-智能家居

一、资料下载 二、框架知识 三、MQTT通信协议 1、上位机APP主要工作 1.wait for msg / while(1)订阅等待消息 2.处理消息 客户端创建了两个线程&#xff0c;一个线程用于发布消息&#xff0c;一个线程用于监听订阅消息 &#xff08;那我的仿真系统也可以啊&#xff0c;一个…

DVDNET A FAST NETWORK FOR DEEP VIDEO DENOISING

DVDNET: A FAST NETWORK FOR DEEP VIDEO DENOISING https://ieeexplore.ieee.org/document/8803136 摘要 现有的最先进视频去噪算法是基于补丁的方法&#xff0c;以往的基于NN的算在其性能上无法与其媲美。但是本文提出NN的视频去噪算法性能要好&#xff1a; 其相比于基于补丁…

Oracle通过函数调用dblink同步表数据方案(全量/增量)

创建对应的包&#xff0c;以方便触发调用 /*包声明*/ CREATE OR REPLACE PACKAGE yjb.pkg_scene_job AS /*创建同步任务*/FUNCTION F_SYNC_DRUG_STOCK RETURN NUMBER;/*同步*/PROCEDURE PRC_SYNC_DRUG_STOCK(RUNJOB VARCHAR2) ; END pkg_scene_job; /*包体*/ CREATE OR REPL…

深入理解netfilter和iptables

目录 Netfilter的设计与实现 内核数据包处理流 netfilter钩子 钩子触发点 NF_HOOK宏与Netfilter裁定 回调函数与优先级 iptables 内核空间模块 xt_table的初始化 ipt_do_table() 复杂度与更新延时 用户态的表&#xff0c;链与规则 conntrack Netfilter(结合iptable…