Dubbo面试题

Dubbo面试题

springcloud和Dobbo有什么区别

说真的,这两个东西没有可比性,Dubbo最开始是一个可扩展的RPC调用框架,在Dubbo里一次调用涉及到的服

务路由、负载均衡、序列化机制、网络传输协议等等都是可以扩展的,具体的性能取决于所选用的组件,同样

Spring Cloud也类似,所以我们不能站在性能的角度来对比两个框架。

其次,作为框架,要对比我们也应该对比这个框架的可扩展性,Dubbo的可扩展性是不要比Spring Cloud好的。

而Spring Cloud目前的优势是组件比较齐全,比如有服务网关、分布式配置中心、服务跟踪等等,而这些Dubbo

暂时还没有,但是在Dubbo生态里是准备加上的。

Dubbo2.7有什么新功能

\1. 动态配置中心(confifigcenter)

\2. 元数据中心

\3. 条件路由支持应用

\4. 标签路由

Dubbo支持哪些通信协议,分别适用于哪些场景

\1. dubbo://,框架的默认协议,采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用。

\2. http://,使用短连接同步传输,使用数据量不确定,并且需要在js或浏览器中使用。

http长连接和短连接

Http1.0,不支持长连接

Http1.1,默认为长连接,Connection=keep-alive

但是,说Http长连接并不准确,因为http是应用层协议,tcp才是传输层协议,只有传输层才能说建立连接与关闭

连接。

那么,长连接有什么好处,长连接就是可以保持连接,那当我打开一个网页后,实际上我通常要过会才有可能去

请求其他东西,其实并不需要这个连接一直保持在这,从这个角度看,似乎使用短连接比较合适。

长连接,实际上是指tcp长连接,那么http可以在这个连接的基础上发送多次http请求与接收多次http响应,实际

上当我们打开一个网页时,还需要请求很多js,css等资源,这个时候这些请求是可以复用tcp连接的,从而节省

了网络资源。

那么,长连接什么时候才关闭?有一个超时时间的,在header进行设置,当这段时间内没有任何http请求则超时

后自动关闭。

Dubbo支持的集群容错方案

  1. Failover Cluster:失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延

迟。

\2. Failfast Cluster:快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记

录。

\3. Failsafe Cluster:失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。

\4. Failback Cluster:失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。

\5. Forking Cluster:并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需

要浪费更多服务资源

\6. Broadcast Cluster:广播调用所有提供者,逐个调用,任意一台报错则报错。通常用于通知所有提供者更

新缓存或日志等本地资源信息。

Dubbo支持的负载均衡策略

\1. Random LoadBalance:随机

\2. RoundRobin LoadBalance:轮询

\3. LeastActive LoadBalance:最少活跃调用数

\4. ConsistentHash LoadBalance:一致性 Hash,相同参数的请求总是发到同一提供者。

Dubbo服务降级实现

Dubbo中的服务降级实际上使用的就是Dubbo中的Mock机制,比如当调用某个服务失败后,可以设置

mock=fail:return+null表示调用服务失败后返回null。

服务提供者实现失效踢出是什么原理

服务失效踢出基于 Zookeeper 的临时节点原理。

Dubbo服务暴露的过程

首先Dubbo会通过DubboNamespanceHandler解析dubbo:service/标签,并且Spring会完成Bean的实例化,随后

发布ContextRefreshEvent事件,会调用ServiceBean中的export方法,以这个方法为入口然后进行服务暴露。实

际上,我们应该叫服务导出,因为服务导出包括服务注册和服务暴露,导出顺序也是先进行服务注册在进行服务

暴露,服务注册就是将服务信息(包括接口名以及对于的协议等信息)注册到注册中心,然后进行服务信息监听

器绑定,然后进行服务暴露(其实就是启动tomcat或nettyserver)。

Dubbo服务引入的过程

首先Dubbo会通过DubboNamespanceHandler解析dubbo:reference/标签,并且Spring会完成Bean的实例化,在

引入该Bean的时候,会调用ReferenceBean的getObject方法,以这个方法为入口然后进行服务引入,服务引入

的步骤为:先根据服务名从注册中心找到所有的服务提供者并且封装到服务目录中,然后进行服务路由的初始

化,然后进行监听器绑定,然后将服务目录封装为Cluster,最后生成代理类。实际上服务引入是相当复杂的,这

里只能面试大概的步骤。

Dubbo服务调用的过程

消费者:

\1. Mock机制

\2. 服务路由

\3. 负载均衡

\4. Filter过滤

\5. 发送请求

服务者:

\1. 接收请求

\2. Filter过滤

\3. 执行具体的实现类

\4. 返回结果

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容