了解Dubbo续集--尾声

前面该说的都说了配置啊,使用啊,整合啊什么的乱七八糟的,然后这里最后再给各路神仙说下Dubbo高可用这一块的一样东西

Zookeeper宕机和Dubbo直连

先测试之前的是否还是可以使用(没有问题)
在这里插入图片描述
场景模拟1(Zookeeper宕机):这个时候如果Zookeeper被关掉了那么是否还能调用这样应用呢?

答案:还是可以的…可以自己测试下的哦(把本地的Zookeeper关闭后发现还是可以调用的但是在我们的控制台上面会一直报错,原因就是找不到Zookeeper)这里简单说下原因,为什么Zookeeper关闭后还是可以调用暴露的服务呢?

Zookeeper健壮性:
监控中心宕机后不影响使用,只是丢失部分采样功能
数据库宕机后,注册中心仍然可以通过缓存提供服务列表查询,但是不能注册新服务
注册中心对等集群,任意一台宕机后,将自动切换的另一台
注册中心全部宕机后,服务提供者和服务消费者仍然可以通过本地缓存通信(上面就是这一条)
服务提供者无状态,任意一台宕机后,不影响使用
服务提供者全部宕机后,服务消费者应用将无法正常使用,并且无限次重连等待服务提供者恢复

场景模拟2:那么在这样的情况下是否可以不用Zookeeper来做到通信呢?
使用Dubbo直连。。。。

@Reference(url = "127.0.0.1:20880")

Dubbo负载均衡

Dubbo的四种LoadBalance策略

Random LoadBalance:随机负载平衡
RoundRobin LoadBalance:轮询负载平衡
LeastActive LoadBalance:最小活动负载平衡
ConsistentHash LoadBalance:一致的哈希负载平衡
Dubbo默认的策略是Random

如果需要人为的去选择轮询的方式操作如下:

 按照官网上面的就是在reference上面进行配置
 @Reference(loadbalance = "roundrobin")

另外就自行测试。。还是一个就是权重调节,可以在控制台里面进行调节,前提:权重调节必须是随机负载均衡策略

服务降级

什么是服务降级?
当服务压力剧增的情况下,根据实际业务情况以及流量,对一些服务和页面有策略的不处理或者简单处理,从而释放服务器资源以保证核心交易正常运作或高效运作。
降级策略:

  • 配置mock=force:return+null意味着此服务的所有调用将直接返回null值,而无需进行远程调用。通常用于减少某些缓慢的非关键服务的影响。

  • 您也可以将该配置更改为mock=fail:return+null。然后,在呼叫失败后您将获得null值。如果成功,消费者将尝试进行远程呼叫以获取真实结果;如果呼叫失败,您将获得null值。通常用于容忍一些非关键服务。

第一种就是直接在访问的时候就是放回一个null,就是没有页面效果
第二种是在方法调用过后但是出问题了的时候放回一个null,不然就会出现页面报错

服务容错Hystrix

Dubbo官网的容错策略里面很多但是在实际开发中一般还是使用Hystrix来做服务容错
1.生产端导入pom依赖

   <!--服务容错-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
            <version>1.4.4.RELEASE</version>
        </dependency>

2.启动类添加注解
@EnableHystrix
3.编写方法
在这里插入图片描述
4.消费端导入pom(上面一样的)
5.启动类添加注解(上面一样的)
6.编写代码
在这里插入图片描述
结果自行测试,小编这里貌似出现了版本冲突问题…

猜你喜欢

转载自blog.csdn.net/weixin_44255950/article/details/106239404