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

负载均衡API测试

1.引入负载均衡依赖(services模块)

<!--负载均衡-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

2,测试类

package com.order;import com.cx.order.OrderMainApplication;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;/*** @author Jiang* @date 2025/11/15*/
@SpringBootTest(classes = {OrderMainApplication.class})
public class OrderApplicationTest {@ResourceLoadBalancerClient loadBalancerClient;@Testpublic void test() {ServiceInstance choose = loadBalancerClient.choose("service-product");System.out.println("choose.getHost()+choose.getPort() = " + choose.getHost() + ":" + choose.getPort());choose = loadBalancerClient.choose("service-product");System.out.println("choose.getHost()+choose.getPort() = " + choose.getHost() + ":" + choose.getPort());choose = loadBalancerClient.choose("service-product");System.out.println("choose.getHost()+choose.getPort() = " + choose.getHost() + ":" + choose.getPort());choose = loadBalancerClient.choose("service-product");System.out.println("choose.getHost()+choose.getPort() = " + choose.getHost() + ":" + choose.getPort());choose = loadBalancerClient.choose("service-product");System.out.println("choose.getHost()+choose.getPort() = " + choose.getHost() + ":" + choose.getPort());}}

3.使用负载均衡的方式进行远程调用

package com.cx.order.service.impl;import com.cx.Order;
import com.cx.Product;
import com.cx.order.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;/*** @author Jiang* @date 2025/11/7*/
@Service
public class OrderServiceImpl implements OrderService {@AutowiredDiscoveryClient discoveryClient;@AutowiredRestTemplate restTemplate;@AutowiredLoadBalancerClient loadBalancerClient;@Overridepublic Order createOrder(Long userId, Long productId) {Product product = getProductFromRemote(productId);Order order = new Order();order.setId(1L);// 总金额=价格*数量BigDecimal price = product.getPrice();//价格int num = product.getNum();//数量order.setTotalAmount(price.multiply(new BigDecimal(num)));//总价order.setUserId(userId);order.setNickName("张三");order.setAddress("火星");// 远程查询商品列表order.setProductList(Arrays.asList(product));return order;}//远程调用获取商品信息public Product getProductFromRemote(Long productId) {//1、获取到商品服务所在的所有机器IP+portList<ServiceInstance> instances = discoveryClient.getInstances("service-product");ServiceInstance instance = instances.get(0);//远程URLString url = "http://" + instance.getHost() + ":" + instance.getPort() + "/productId/" + productId;//2、给远程发送请求return restTemplate.getForObject(url, Product.class);}//负载均衡public Product getProductFromRemoteWithLoadBalance(Long productId) {//1、获取到商品服务所在的所有机器IP+portServiceInstance choose = loadBalancerClient.choose("service-product");//远程URLString url = "http://" + choose.getHost() + ":" + choose.getPort() + "/productId/" + productId;//2、给远程发送请求Product product = restTemplate.getForObject(url, Product.class);return product;}}

总结:discoveryClient返回的是服务列表,loadBalancerClient返回的是单个实例它会根据配置的负载均衡算法从可用实例中挑选一个合适的实例以达到负载均衡的目的

http://www.dtcms.com/a/613660.html

相关文章:

  • 门户类网站费用淘宝网站边上的导航栏怎么做
  • oralce创建种子表,使用存储过程生成最大值sql,考虑并发,不考虑并发的脚本,plsql调试存储过程,java调用存储过程示例代码
  • 计算机网络技术三级知识点
  • 好用心 做网站送女友wordpress英文主题出现汉字
  • 建筑网站夜里几点维护个人网站名字大全
  • 18.HTTP协议(二)
  • 【科技补全76】新概念英语点读工具NCE-Flow、在线文件管理器copyparty 部署指北
  • 添加某些应用程序使其能够用win+r启动
  • 免费的个人网站北京工程建设监理协会网站
  • 34_FastMCP 2.x 中文文档之FastMCP客户端高级功能:处理服务端发起的用户引导详解
  • 算法公司技术面试经验总结
  • 公路建设管理办公室网站网站建设到维护
  • 美国 TikTok 带货 GMV 翻倍:专线 + 纯净住宅 IP 的流量密码
  • [智能体设计模式] 第11章:目标设定与监控模式
  • Modbus RTU 转 Modbus TCP:物联网网关实现中药产线巴赫曼与三菱PLC互联
  • 商城网站都有哪 些功能济南网签查询系统
  • Flink20 SQL 窗口函数概述
  • Java基础 | SpringBoot实现自启动的方式
  • 【ZeroRange WebRTC】UDP无序传输与丢包检测机制深度分析
  • 零基础建设网站视频教程抚州的电子商务网站建设公司
  • qt显示类控件--- Label
  • 【深度学习】基于Faster R-CNN与HRNet的豆类品种识别与分类系统
  • 专业建设网站公司东莞阿里巴巴代运营
  • 【深度学习】YOLOv10n-MAN-Faster实现包装盒flap状态识别与分类,提高生产效率
  • 网站备案需要费用吗中国容桂品牌网站建设
  • 知识图谱与中医古籍的数智化融合:中医药多智能体大模型系统的未来展望
  • wordpress全站cdn法人变更在哪个网站做公示
  • 鸿蒙开发TypeScript第六课:对象
  • 【Linux日新月异(四)】CentOS 7进程管理深度指南:掌控系统生命线
  • 如何避免新手对 instanceof 的误解?