什么是@Loadbalanced
使用 @LoadBalanced 注解是 Ribbon 实现负载均衡的一种常用方法。它的作用是在服务调用时自动选择负载均衡策略,并将请求转发到合适的后端服务实例上。
@LoadBalanced 注解可以与 Ribbon 客户端配合使用,以实现服务调用的负载均衡。它会自动识别服务名称和负载均衡策略,并将请求转发到后端服务实例上。这样可以简化服务调用的代码,并且使负载均衡的配置更加灵活。
需要注意的是,@LoadBalanced 注解需要在使用 Ribbon 客户端的类或方法上进行注解。同时,还需要在应用程序的配置文件中配置 Ribbon 客户端,以指定负载均衡策略和其他相关参数。
使用@Loadbalanced实现负载均衡
使用前我们先把Eureka集群改为单节点 可以在后续让我们更为方便
修改product-service服务和order-service服务的application.yml的Eureka配置
1.在创建RestTemplate的时候,添加注解@LoadBalanced
2.使用前使用微服务的服务名称来进行调用
使用restTemplate调用远程微服务:不需要拼接微服务的URL,用服务名称替换IP地址
修改前调用其他微服务,拼接服务调用url product = restTemplate.getForObject("http://"+host+":"+port+"/product/1", Product.class); 修改后用微服务的服务名称来进行调用,更加方便 product = restTemplate.getForObject("http://service-product/product/1", Product.class);
3.负载均衡
使用@LoadBalanced注解后,除了方便使用服务名称进行调用之外,更重要的是也实现了服务调用的负载均衡功能。
修改product-service的controller
测试
简单吧到这里我们就已经实现类负载均衡了我们来测试一下看看
启动两个product服务
查看Eureka Web页面http://localhost:9000
SERVICE-PRODUCT,有2个端口分别是:9001和9011 的在线状态的实例
访问http://localhost:9001/product/1
访问http://localhost:9011/product/1
访问http://localhost:9002/order/buy/1 刷新两次可以看到两次访问的分别是9001和9011说明实现了。
负载均衡多次刷新访问发现9001和9011是交替出现,说明默认使用的负载均衡是轮询策略。