二.LoadBalancer负载均衡服务调用(1)

1.spring-cloud-loadbalancer概述

(1)官网

2.客户端负载VS服务器端负载

loadbalancer本地负载均衡客户端VSNginx服务端负载均衡区别

Nginx是服务器端负载均衡,客户端所有请求都会交给nignx,然后由nginx实现转发请求,即负载均衡是由服务端实现的

loadbalancer本地负载均衡,在调用微服务端口的时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术

3.loadbalancer负载均衡解析

(1)负载均衡理论

2.实操

注册服务

订单80模块修改pom

订单80模块修改controller

@GetMapping(value = "/consumer/pay/get/info" )

private String getInfoByConsul()

{

return restTemplate .getForObject(PaymentSrv_URL + "/pay/get/info" , String.class );

}

测试:交替访问

|---|
| |

(3)总结

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

List<ServiceInstance> instances = discoveryClient.getInstances("cloud-payment-service");

如: List [0] instances = 127.0.0.1:8002

List [1] instances = 127.0.0.1:8001

8001+ 8002 组合成为集群,它们共计2台机器,集群总数为2, 按照轮询算法原理:

当总请求数为1时: 1 % 2 =1 对应下标位置为1 ,则获得服务地址为127.0.0.1:8001

当总请求数位2时: 2 % 2 =0 对应下标位置为0 ,则获得服务地址为127.0.0.1:8002

当总请求数位3时: 3 % 2 =1 对应下标位置为1 ,则获得服务地址为127.0.0.1:8001

当总请求数位4时: 4 % 2 =0 对应下标位置为0 ,则获得服务地址为127.0.0.1:8002

如此类推......

3.负载均衡算法原理

(1)默认算法

轮询和随机

(2)算法切换

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

@Bean
ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
LoadBalancerClientFactory loadBalancerClientFactory) {
String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);

return newRandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
}
}

相关推荐
pound12729 分钟前
Linux
linux·运维·服务器
@CLoudbays_Martin1134 分钟前
为什么动态视频业务内容不可以被CDN静态缓存?
java·运维·服务器·javascript·网络·python·php
盟接之桥2 小时前
盟接之桥说制造:在安全、确定与及时之间,构建品质、交期与反应速度的动态平衡
大数据·运维·安全·汽车·制造·devops
dbdr09013 小时前
Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十六天
linux·运维·服务器·网络·python·学习
鹧鸪云光伏与储能软件开发3 小时前
投资储能项目能赚多少钱?小程序帮你测算
运维·数据库·小程序·光伏·光伏设计软件·光伏设计
群联云防护小杜3 小时前
服务器异常磁盘写排查手册 · 已删除文件句柄篇
运维·服务器·nginx·开源·lua
云的牧人4 小时前
Ubuntu 22 redis集群搭建
linux·运维·ubuntu
siriuuus4 小时前
Linux 磁盘扩容及分区相关操作实践
linux·运维·服务器
会飞的小蛮猪4 小时前
Jenkins运维之路(权限分配&忘记admin密码)
java·运维·经验分享·jenkins·prometheus
jz_ddk5 小时前
[Linux] Linux标准块设备驱动详解:从原理到实现
linux·运维·服务器·驱动开发