这是我们正常启动:
现在我们去把zookeeper注册中心关掉。
此时我们的注册中心是用不了的。
但是我们的数据还有,也就是我们的消费者还是能调用我们的提供者中的方法。
那么我们现在来试一下dubbo直连,也就是没有注册中心,我们也可以正常使用:
我们现在来配置一下:
我们可以直接进行连接。
1号服务:
2号服务:
3号服务:
我们现在就有3个提供者了。
我们现在来启动消费者:
我们现在可以看到三个服务者一个提供者。
那么我们来看一下我们第一次调用的是哪个提供者:
可以看到我们调用的是2号服务。
我们再去刷新一下:
还是我们的2号。
我们再刷新一下:
这次是我们的3号服务。
我们可以看出我们的dubbo中默认的是随机,也就是我们的权重方法。
我们可以去查看这个接口,默认是随机的。
我们有很多种负载均衡机制。
当然我们也是可以去更改我们的负载均衡方式的:
我们这样配置,我们以轮询为例,这样去做一下看看效果:
我们刷新四次依次调用:
我们再调回随机:
这样我们可以针对权重进行一些配置:
我们可以在主页给它调配它的权重。
可以看到我们给它们调成了不同的权重。
这样运行后可以根据权重优先选择提供者调用。
服务降级:
我们可以选择屏蔽功能:
这样我们就不再发起调用了。
我们可以发现这是空的。
也没有显示我们调用了服务。
当然我们也可以让它再恢复过来;
这样我们可以线上实时的去根据需求和情况去屏蔽掉某些服务。
然后我们再去试一下容错:
我们还是可以调用成功的。
这个和屏蔽的区别是,我们这个是当能够正常调用时不会有什么措施,只有在无法正常调用的时候才会返回空。
那我们就设置一下,让我们的服务无法正常调用:
我们的消费者允许的超时时间是1秒。
我们的提供者需要睡2秒,这样正常来说是无法调用成功的。
我们再去试一下:
现在我们的消费者是已经容错了的状态的。
我们返回的是空。
我们的控制台也并没有报错。
那如果我们取消容错呢?
我们发现页面报错了。
那么我们就可以根据实际情况进行服务的容错和屏蔽处理了。
服务容错
我们默认的方式是第一个Failover Cluster也就是设置我们的重试次数。
当然在企业中我们可能并不是通过这些方式进行容错的。
我们可能会使用到熔断器:
这个也是我们springcloud默认的容错方式。
我们首先要导入我们的依赖。
我们加上容错注解。
我们现在不让服务超时了。
我们这里写上这样一段产生随机数的代码,这样是可能随时产生异常的。
给方法配上我们这样的一个注解就可以开启容错了。
然后我们就可以启动提供者了。
这里我们要更改一下我们的pom依赖版本:
这样我们的提供者就正常启动了。
当然我们在我们的消费者中也要去做相关的依赖配置:
然后我们在我们的消费者的启动类上也要加上我们的熔断器注解:
我们的消费者想调用服务者的时候,这里可能会出错,所以在这里我们要做相关容错配置。
这样如果出错了,我们会返回下面的方法。
我们运行消费者进行测试:
失败的时候就会调用容错方法了,这里和springcloud中的容错方法差不多。