5.消费端服务降级

2020-09-06  本文已影响0人  山海树

1.force:return
客户端做如下配置,force:return时,直接走mock,不去远端服务

RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class)
                .getAdaptiveExtension();
        // (2)根据zk地址,获取具体的zk注册中心的客户端实例
        Registry registry2 = registryFactory.getRegistry(URL.valueOf("zookeeper://127.0.0.1:2181"));

        // (3)注册降级方案到zk
        registry2.register(URL.valueOf(
                "override://0.0.0.0/service.GreetingService?category=configurators&dynamic=false&application=first-dubbo-consumer&"
                        + "mock=force:return+null&group=dubbo&version=1.0.0"));

2.fail:return
客户端做如下配置,fail:return时,先走远端,成功返回成功的结果,失败走mock

RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class)
                .getAdaptiveExtension();
        // (2)根据zk地址,获取具体的zk注册中心的客户端实例
        Registry registry2 = registryFactory.getRegistry(URL.valueOf("zookeeper://127.0.0.1:2181"));

        // (3)注册降级方案到zk
        registry2.register(URL.valueOf(
                "override://0.0.0.0/service.GreetingService?category=configurators&dynamic=false&application=first-dubbo-consumer&"
                        + "mock=fail:return+null&group=dubbo&version=1.0.0"));

3.原理
当以参数force调用上述代码时,降级策略就回写入Zookeeper服务器service.GreetingService字数中Type=configurators的下面
当服务消费者启动时,回去订阅service.GreetingService自述中信息,
当吊费者发起远程调用时,会看是否设置了force:return降级策略,如果设置了,则不发起远程调用。
如果远程结果成功,则直接返回结果,如果失败,则看当前是否设置了fail:return的降级策略,如果设置了,则返回mock,否则返回服务失败的具体原因。

上一篇下一篇

猜你喜欢

热点阅读