Spring Cloud应用开发(三:客户端的负载均衡)
1、Ribbon的使用
注:在石榴啊RestTemplate的方法上添加@LoadBalanced注解,并在其执行方法中使用服务实例的名称即可;
1.1、添加@LoadBalanced注解,在ms-spring-eureka-user工程引导类中的RestTemplate()方法上添加@LoadBalanced注解;
注:在上述方法中RestTemplate被@LoadBalanced注解后,就具有了负载均衡的能力。
1.2、使用服务实例名称。在用户服务实例的查询方法中,使用服务提供者(订单服务)的实例名称来执行已注册服务列表中实例的方法,如下:
注:从上述代码中可以看出,getForObject()方法的URI中使用的已经不是“主机地址+端口号”的形式,而使用的是注册中心中的订单服务实例名称
1.3、创建服务监听类,为了演示负载均衡的实现效果,在这里ms-spring-eureka-order工程中创建一个用于监听服务实例端口的工具类ServiceInfoUtil,实现代码如下:
1.4、添加输出语句,在订单控制器类OrderController的查询订单方法中,增加一行执行输出当前实例端口号的语句;
1.5、启动服务,测试应用。分别启动注册中心,用户服务和订单服务,然后修改订单服务端口号(此处用7902),再次启动一个订单服务后,Eureka信息页面注册信息如下:
1.6、当通过浏览器连续4次访问地址http://localhost:8000/findOrderByUser/1后,两个控制台如下图所示。