上篇文章我们虽然实现了远程调用,但是并不经过eureka,这篇我们将通过eureka实现负载均衡和远程调用,负载均衡实际上说白了就是本来有好多一摸一样的工作需要一个师傅去完成,现在给他找了一个同行师傅,一起分担。是不是这个师傅的工作量就小了?
在我们的启动类在上一篇的基础上加上@LoadBalanced可以实现负载均衡
然后呢,我们需要在service上将我们的地址进行一个改变,把之前的http://localhost:端口
换成我们注册到eureka的名称
好的,现在我们虽然配置了负载均衡,但是呢,咱们的‘师傅’只有一个,现在我们去新增几个‘师傅’跟着操作
这里咱们给他的端口设置成8083,点击ok,
切换成它,运行。这时间去看我们的eurake,发现这名‘师傅’已经回到工作岗位了
为了演示负载均衡的效果呢,咱们让他控制台输出一个东西作为演示。
把我们这两个 重新运行,多次给他刷新,给这俩师傅下达任务
因为咱们一个年级有两个班级,for循环的时间刚好一人一个,不争不抢。发现俩都调用了一次。
但是呢,假如说我们这个‘师傅’比较能干(服务提供者对应的服务器大等等原因),另外一个没他能干,俩人还这样分,一个累死,一个轻轻松松,这样显然也是不合适的,所以负载均衡呢又有很多策略,看下图:
现在咱们可以给他改成第五个,让这个干不了的给另外一个。
好了,现在咱们给他改好了,但是这个效果不是很好演示(暂时没想到咋演示),但是咱们可以使用随机,这个效果明显。
//重新创建一个均衡策略
@Bean
public IRule getIReule(){ //通过获取一个IRule对象,
return new RandomRule(); //达到的目的,用我们重新选择,替代默认的轮训方式
}
重新运行我们的消费者。多次下达任务,
开始出现分赃不均了。这个效果就明显了。