首页 > 其他分享 >day03-loadbalancer

day03-loadbalancer

时间:2024-07-09 23:34:09浏览次数:15  
标签:负载 day03 Consul RestTemplate cloud 均衡 consul loadbalancer

1 概述

  1. LoadBalancer: 被包含于spring cloud commons下用来替换以前的ribbon组件,一个客户端负载均衡器。不仅支持RestTemplate,还支持WebClient(Spring Web Flux中提供的功能,可以实现响应式异步请求)。
  2. 客户端负载均衡和服务端负载均衡有什么区别
    • 服务端负载均衡:负载均衡在服务器上实现
    • 客户端负载均衡:调用微服务接口的时候,会在注册中心获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务技术

2 Windows环境下Consul配置持久化

  1. 根路径下新增存储配置的文件夹 如/mydata

  2. 根路径下建立一个脚本文件consul_start.bat

    @echo.服务启动......  
    @echo off  
    @sc create Consul binpath= "F:\consul_1.19.0_windows_386\consul.exe agent -server -ui -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect  1  -data-dir F:\consul_1.19.0_windows_386\mydata   "
    @net start Consul
    @sc config Consul start= AUTO  
    @echo.Consul start is OK......success
    @pause
    
  3. 之后启动consul就双击脚本文件启动即可,然后登入localhost:8500编写配置即可持久化

3 客户端服务调用负载均衡

  1. 引入负载均衡的依赖
<!--loadbalancer-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
  1. 修改consumer的controller,添加一个调用微服务的接口,例如下述代码

        @GetMapping("/consumer/pay/get/info")
        public ResultData getConfigInfo(){
            return restTemplate.getForObject(PaymentSrv_URL+"/pay/get/info",ResultData.class);
        }
    
  2. 访问测试

4 负载均衡算法

​ 实际上使用默认的轮询就已经足够了

  • 轮询 RoundRobinLoadBalancer implements ReactorServiceInstanceLoadBalancer

    • 负载均衡算法:rest接口第几次请求数 % 服务器集群总数量 = 实际调用服务器位置下标 ,每次服务重启动后rest接口计数从1开始。
  • 随机 RandomLoadBalancer implements ReactorServiceInstanceLoadBalancer

切换算法:

@Configuration
@LoadBalancerClient(
        //下面的value值大小写一定要和consul里面的名字一样,必须一样
        value = "cloud-payment-service",configuration = RestTemplateConfig.class)
public class RestTemplateConfig
{
    @Bean
    @LoadBalanced //使用@LoadBalanced注解赋予RestTemplate负载均衡的能力
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

    @Bean
    ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
                                                            LoadBalancerClientFactory loadBalancerClientFactory) {
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
    }
}

标签:负载,day03,Consul,RestTemplate,cloud,均衡,consul,loadbalancer
From: https://www.cnblogs.com/yuqiu2004/p/18292927

相关文章

  • python随笔day03
    python面试基础问题lambda表达式基本语法:变量=lambda[参数列表]:表达式(函数代码+返回值)#调用变量()例子如下:#加法求和函数a=lambdaa,b:a+bprint(a(1,2))#3#args元组类型b=lambda*args:argsprint(b('a','b','c','d',10))#('a','b&......
  • 【web APIs】快速上手Day03(Dom事件进阶)
    目录WebAPIs-第3天全选文本框案例事件流事件捕获事件冒泡阻止冒泡解绑事件on事件方式解绑addEventListener方式解绑注意事项-鼠标经过事件的区别两种注册事件的区别事件委托综合案例-tab栏切换改造其他事件页面加载事件元素滚动事件页面滚动事件-获取位置页面滚动......
  • Day03 数组
    数组定义相同类型数据的有序集合声明创建必须先声明数组,才能使用(动态初始化)int[]nums;//定义javaintnums2[];//定义c/c++都可以用,首选第一个声明后要创建nums=newint[10];(默认初始化,0或null)静态初始化:创建+赋值inta[]={1,2,3,4,5};四......
  • Could not recover RibbonLoadBalancerClient.choose ServiceInstance
    org.springframework.retry.TryException:Couldnotrecover;nestedexceptionisjava.lang.AbstractMethodError:org.springframework.cloud.netflix.ribbon.RibbonLoadBalancerClient.choose(Ljava/lang/String;Lorg/springframework/cloud/client/loadbalancer/Request;......
  • 机器学习day03
    机器学习day03超参数选择方法--交叉验证、网格搜索、手写数字识别案例1交叉验证1.1什么是交叉验证?是一种数据集的分割方法,将训练集划分为n份,拿一份做验证集(测试集)、其他n-1份做训练集1.2交叉验证法原理:将数据集划分为cv=4第一次:把第一份数据做验证集,其他数据做训练第......
  • Day03 链表概念与单向不循环链表的实现
    目录1、顺序表的优缺点2、链式存储的线性表3、单向不循环链表实现1、顺序表的优缺点顺序表的优点是:        由于顺序表数据元素的内存地址都是连续的,所以可以实现随机访问,而且不需要多余的信息来描述相关的数据,所以存储密度高。顺序表的缺点是:       ......
  • 【云岚到家】-day03-2-门户缓存实现实战
    【云岚到家】-day03-2-门户缓存实现实战5缓存实现5.2定时任务更新缓存5.2.1分布式调度平台5.2.1.1jdk提供的Timer定时器5.2.1.2使用第三方Quartz方式5.2.1.3使用分布式调度平台XXL-JOB5.2.2XXL-JOB5.2.2.1介绍5.2.2.2部署调度中心5.2.2.3执行器5.2.2定义缓......
  • SpringCloud 负载均衡 spring-cloud-starter-loadbalancer
    简述spring-cloud-starter-loadbalancer是SpringCloud中的一个组件,它提供了客户端负载均衡的功能。在SpringCloud的早期版本中,NetflixRibbon被广泛用作客户端负载均衡器,但随着时间推移和NetflixRibbon进入维护模式,SpringCloud社区开始转向更灵活、更易于维护......
  • Spring Cloud LoadBalancer
    SpringCloudAlibabaSpringCloudLoadBalancer具体介绍转载:SpringCloudLoadBalancer负载均衡策略与缓存机制-CSDN博客1.依赖因为Ribbon作为早期的客户端负载均衡工具,在SpringCloud2020.0.0版本之后已经被移除了,取而代之的是SpringCloudLoadBalancer,而且Ribbon......
  • Kubernetes(k8s) v1.30.1 本地集群部署 安装metallb 支持LoadBalancer 生产环境 推荐
    1 metallb安装参考:Kubernetes(k8s)v1.30.1本地集群部署默认不支持LoadBalancermetallb来解决-CSDN博客2 删除Layer2模式配置kubectldelete-fIPAddressPool.yamlkubectldelete-fL2Advertisement.yamlkubectldelete-fdiscuz-srv.yaml3配置k8sMeta......