• 面试官:Dubbo怎么实现服务降级,他有什么好处?


    哈喽!大家好,我是小奇,一位热爱分享的程序员
    小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧
    文章持续更新

    一、前言

    书接上回,今天周一了,招聘软件上的公司又开始蠢蠢欲动了。各种各样的用工方式,驻场、劳务派遣、项目外包等让人眼花缭乱,稍有不慎就落入了公司的“圈套”,各位还是要擦亮双眼啊。

    老样子,还是先看看某直聘上的最新发布,挑挑拣拣,最后选了十几家投了简历,然后就静候佳音吧,趁这功夫去村里黑网吧玩会。

    在这里插入图片描述

    没想到周一也这么多人,这些小孩估计是逃学来的吧,看我不把他们轰走。

    我:喂,小屁孩,知道我是谁吗?

    小屁孩:哎呦,这不是奇哥嘛,大哥今天也逃学了啊。

    我:逃什么学,老子早毕业了。

    小屁孩:唉,被学校开除就说开除了,还说什么毕业了。

    我:滚蛋,老子有毕业证。

    小屁孩:毕业证多少钱啊。

    我:两千!!!

    小屁孩:哈哈哈。。。

    在这里插入图片描述

    我:别给我扯这没用的,赶紧换地图,玩我最熟悉的守望之城,我可是狙神奇哥。

    正在我十几连杀的时候突然我的手机响了,谁呀这么不会挑时候。

    我:“喂您好”。

    对面:“您好,请问是小奇吗”。

    我:“是我,你是?”。

    对面:“我是XXX公司的,我看到hr推给我你的简历,我感觉还不错,你什么时候方便来现场面试一下”。

    我:“现在不方便现场面试了”。

    对面:“好吧,那你现在方便吗?我们现在线上面试一下吧”。

    我:“好的”。

    二、面试

    面试官:我看你简历上写的精通Dubbo,那你能说一下Dubbo怎么可以实现服务降级吗?

    我:Dubbo可以向注册中心写入动态配置覆盖规则来实现服务降级。

    RegistryFactory registryFactory = ExtensionLoader.getExtensionLoader(RegistryFactory.class).getAdaptiveExtension();
    Registry registry = registryFactory.getRegistry(URL.valueOf("zookeeper://10.20.153.10:2181"));
    registry.register(URL.valueOf("override://0.0.0.0/com.foo.BarService?category=configurators&dynamic=false&application=foo&mock=force:return+null"));
    

    在这里我们可以看到后面代码最后面有一个mock=force:return+null,这个就是用来定义降级后的返回策略的。其中:

    mock=force:return+null 表示消费方对该服务的方法调用直接返回 null 值,不发起远程调用。这样的话让我们配置了这个策略后,我们消费者调用这个服务者直接就返回null了,这个服务挂掉也没有关系了。

    mock=fail:return+null 表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常,这样的话我们消费者在调用这个服务端的时候会等待服务端的响应,如果调用失败后,就会返回消费者null值,这个如果调用成功的话就正常返回,这里还是比较灵活的。

    面试官:嗯,Dubbo为什么要实现服务降级?

    我:因为我们一个系统会有核心业务流程,和非核心业务流程。

    例如一个网购的系统,在高峰期间压力剧增,这个时候如果一个非核心业务流程服务出现问题,那么核心的业务流程可能在远程调用非核心服务时出现问题,这样就造成核心流程服务也收到影响。

    所以如果在高峰期压力大的情况下, 如果非核心服务出现问题,我们可以使用服务降级策略,使得不可用的服务就不会再调用,直接让他返回null值,不影响我们核心业务流程就好了。

    面试官:“小伙子不错呀,什么时候能回北京入职呢”

    我:“额。。。等等吧,现在还有好多家公司等着谈薪资呢,我得挑一家合适的。”

    面试官:“你要多少我都给你,来我这吧”

    我:“额。。。那就月薪100个W吧”。

    面试官:“喂,你说什么我听不见,信号不好。。。”

    我:“喂喂喂”(嘟嘟嘟嘟嘟嘟嘟嘟。。。)。

    三、总结

    这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

    文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

    如果觉得我的文章还不错的话就点个赞吧

  • 相关阅读:
    Rocky Linux 8.9 一键安装 Oracle 11GR2(231017)单机 ASM
    泛型编程与模板
    matplotlib 中使用中文
    【C进阶】——预处理详解
    HTML+CSS大作业:使用html设计一个简单好看的公司官网首页 浮动布局
    【Linux C小技巧】零长度数组的使用
    【线性代数】线性代数的几何意义
    二次开发入门须知
    chatglm3-6b部署及微调
    caffe 安装
  • 原文地址:https://www.cnblogs.com/xiaoqiJava/p/16336391.html