当前位置: 首页 > news >正文

SpringCloud-03 LoadBalancer服务调用与负载均衡

LoadBalancer(负载均衡器)是一种网络设备或软件,用于将网络流量分配到多个服务器,以实现负载均衡和高可用性。它可以帮助确保网络服务器能够有效地处理大量的请求,并避免某些服务器过载而导致性能下降或服务不可用。

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

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

LoadBalancer 在工作时分成两步:
第一步,先选择ConsulServer从服务端查询并拉取服务列表,知道了它有多个服务(上图3个服务),这3个实现是完全一样的,
默认轮询调用谁都可以正常执行。
第二步,按照指定的负载均衡策略从server取到的服务注册列表中由客户端自己选择一个地址,所以LoadBalancer是一个客户端的负载均衡器。

//在800端口拷贝与8001端口一样的服务

在这里插入图片描述

Consul数据持久化配置

//在consul同级目录下新建consul_startt.bat文件,内容如下
@echo.服务启动......  
@echo off  
@sc create Consul binpath= "D:\devSoft\consul_1.17.0_windows_386\consul.exe agent -server -ui -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect  1  -data-dir D:\devSoft\consul_1.17.0_windows_386\mydata   "
@net start Consul
@sc config Consul start= AUTO  
@echo.Consul start is OK......success
@pause

**注意:**consul里data配置的缩进不要用tab键,要用空格
在这里插入图片描述

修改80端口(调用端口)

//在80端口服务pom文件中添加依赖
<!--loadbalancer-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>//修改controller@GetMapping("/consumer/pay/get/info")public String getByConsul() {return restTemplate.getForObject(paymentSrv_URL+"/pay/get/info", String.class);}

在这里插入图片描述

会自动交替调用8001端口和8002端口
在这里插入图片描述
在这里插入图片描述
通过DiscoveryClient动态获取服务列表

    @Resourceprivate DiscoveryClient discoveryClient;@GetMapping("/consumer/discovery")public String discovery(){List<String> services = discoveryClient.getServices();for (String element : services) {System.out.println(element);}System.out.println("===================================");List<ServiceInstance> instances = discoveryClient.getInstances("cloud-payment-service");for (ServiceInstance element : instances) {System.out.println(element.getServiceId()+"\t"+element.getHost()+"\t"+element.getPort()+"\t"+element.getUri());}return instances.get(0).getServiceId()+":"+instances.get(0).getPort();}

负载均衡有两种算法:轮询算法 和 随机算法 一般用轮询


http://www.mrgr.cn/news/22765.html

相关文章:

  • Python发邮箱:如何配置SMTP服务器发邮件?
  • 网页版聊天室--自动化测试项目实战
  • 系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践
  • 视频加密软件哪个最好用?怎么对视频文件设置加密?公司视频文件加密的最佳选择!
  • C语言实现普通二叉树的数据结构
  • Java 设计模式-状态模式
  • 【C++】windwos下vscode多文件项目创建、编译、运行
  • 论文学习:常用的遥感参数
  • 沃尔玛活跃卖家一年内增长50%,突破15万!沃尔玛新店铺如何快速出单?
  • 攻防世界--->点燃我
  • 为何在106短信群发前需完成实名认证?
  • 大模型RAG实战|构建知识库:文档和网页的加载、转换、索引与存储
  • 操作word 以及pdf 记录以及踩坑总结
  • TD综合教程——噪波球和正交线性脉冲(附思路和工程文件)
  • m4v是什么格式?m4v转mp4方法(2024最新)
  • 学习Linux第二天
  • [C++]五、数组
  • 十年后的web渗透(网络安全)前景如何?你想知道的都在这里
  • 网络编程项目(速递项目)
  • C语言代码练习