4、默认使用什么序列化框架,你知道的还有哪些?

在Dubbo RPC中,同时支持多种序列化方式:

  1. dubbo序列化,阿里尚不成熟的java序列化实现。

  2. hessian2序列化:hessian是一种跨语言的高效二进制的序列化方式,但这里实际不是原生的hessian2序列化,而是阿里修改过的hessian lite,它是dubbo RPC默认启用的序列化方式

  3. json序列化:目前有两种实现,一种是采用的阿里的fastjson库,另一种是采用dubbo中自已实现的简单json库,一般情况下,json这种文本序列化性能不如二进制序列化。

  4. java序列化:主要是采用JDK自带的java序列化实现,性能很不理想。

另外还有专门针对Java语言的Kryo,FST,及跨语言的Protostuff、ProtoBuf,Thrift,Avro等。

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

利用的是zookeeper的临时节点原理

Zookeeper

持久节点

所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点,也就是说不会因为创建该节点的客户端会话失效而消失

临时节点

临时节点的生命周期和客户端会话绑定,也就是说,如果客户端会话失效,那么这个节点就会自动被清除掉

Dubbo创建的zookeeper树结构

当提供者出现断电等异常停机时,注册中心能自动删除提供者信息(通过临时节点及watch机制实现)
详见,Dubbo zookeeper注册中心,传送门

5、服务上线怎么不影响旧版本?

来自dubbo文档

<!--当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。在低压力时间段,先升级一半提供者为新版本再将所有消费者升级为新版本然后将剩下的一半提供者升级为新版本-->
<dubbo:service interface="com.foo.BarService" version="1.0.0" />
<dubbo:service interface="com.foo.BarService" version="2.0.0" />
<dubbo:reference id="barService" interface="com.foo.BarService" version="1.0.0" />
<dubbo:reference id="barService" interface="com.foo.BarService" version="2.0.0" />不区分版本:(2.2.0以上版本支持)<dubbo:reference id="barService" interface="com.foo.BarService" version="*" />

6、如何解决服务调用链过长的问题?

使用分布式服务追踪,如zipkin

7、核心的配置有哪些

核心配置有:


dubbo:service/dubbo:reference/dubbo:protocol/dubbo:registry/dubbo:application/dubbo:provider/dubbo:consumer/dubbo:method/

8、dubbo推荐用什么协议?

默认使用dubbo协议。

dubbo共支持如下几种通信协议:

  • dubbo://
  • rmi://
  • hessian://
  • http://
  • webservice://
  • thrift://
  • memcached://
  • redis://
  • rest://

详见:http://dubbo.apache.org/zh-cn/docs/user/references/protocol/introduction.html

9、同一个服务多个提供者,消费者可以直连吗

可以直连,修改配置即可,也可以通过telnet直接某个服务。

10、画一画服务注册与发现的流程图

11、集群容错怎么做?

读操作建议使用Failover失败自动切换,默认重试两次其他服务器。写操作建议使用Failfast快速失败,发一次调用失败就立即报错。

11.1 集群容错模式:

Failover Cluster

失败自动切换,当出现失败,重试其它服务器。(缺省)

通常用于读操作,但重试会带来更长延迟。

可通过retries="2"来设置重试次数(不含第一次)。正是文章刚开始说的那种情况.

Failfast Cluster

快速失败,只发起一次调用,失败立即报错。

通常用于非幂等性的写操作,比如新增记录。

Failsafe Cluster

失败安全,出现异常时,直接忽略。

通常用于写入审计日志等操作。

Failback Cluster

失败自动恢复,后台记录失败请求,定时重发。

通常用于消息通知操作。

Forking Cluster

并行调用多个服务器,只要一个成功即返回。

通常用于实时性要求较高的读操作,但需要浪费更多服务资源。

可通过forks="2"来设置最大并行数。

Broadcast Cluster

广播调用所有提供者,逐个调用,任意一台报错则报错。(2.1.0开始支持)

通常用于通知所有提供者更新缓存或日志等本地资源信息。

重试次数配置如:(failover集群模式生效)

详见:http://dubbo.apache.org/zh-cn/docs/source_code_guide/cluster.html

12、负载均衡策略

Dubbo提供了多种均衡策略,缺省为random随机调用。

Random LoadBalance

随机,按权重设置随机概率。

在一个截面上碰撞的概率高,但调用量越大分布越均匀,而且按概率使用权重后也比较均匀,有利于动态调整提供者权重。

RoundRobin LoadBalance

轮循,按公约后的权重设置轮循比率。

存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。

LeastActive LoadBalance

最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。

使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

ConsistentHash LoadBalance

一致性Hash,相同参数的请求总是发到同一提供者。

当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。

Dubbo的集群容错和负载均衡同样也是Dubbo本身的高级特性.正如我们在说自定义扩展的时候一样,这两个特征同样也可以进行自定义扩展,用户可以根据自己实际的需求来扩展他们从而满足项目的实际需求.

13、Dubbo和Spring Cloud

14、Dubbo如何优雅停机?

Dubbo 是通过 JDK 的 ShutdownHook 来完成优雅停机的,所以如果使用 kill -9 PID 等强制关闭指令,是不会执行优雅停机的,只有通过 kill PID 时,才会执行。

Dubbo——面试问题集(4~14)相关推荐

  1. Dubbo——面试问题集(1~3)

    1.默认使用的是什么通信框架,还有别的选择吗? Dubbo默认使用netty,还支持mina, grizzy 配置方式: <dubbo:protocol name="dubbo&quo ...

  2. Dubbo面试 - dubbo 负载均衡策略和集群容错策略都有哪些?

    Dubbo面试 - dubbo 负载均衡策略和集群容错策略都有哪些? 面试题 dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 面试官心理分析 继续深问吧,这些都是用 dubbo 必须 ...

  3. 史上最强Dubbo面试28题答案详解:核心功能+服务治理+架构设计等

    1.Dubbo是什么? Dubbo 是一个分布式.高性能.透明化的 RPC 服务框架,提供服务自动注册.自动发现等高效服务治理方案, 可以和 Spring 框架无缝集成. RPC 指的是远程调用协议, ...

  4. Java架构师面试题系列之Dubbo面试专题(29题,含详细答案解析)

    [Java架构师面试网]收集整理了几乎整个架构师学习途中会遇到的面试题,希望大家都能早日圆自己的架构师梦~ 网站近期在备案和迁移服务器,暂时无法打开,先关注一波公众号吧 公众号:Java架构师面试网, ...

  5. Dubbo面试专题总结

    Dubbo面试专题总结 文章目录 Dubbo面试专题总结 1. Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么? 2. dubbo 服务负载均衡策 ...

  6. Dubbo面试 - dubbo的工作原理

    Dubbo面试 - dubbo的工作原理 面试题 说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程? 面试官心理分析 MQ.ES.Redis.Dubbo,上来 ...

  7. 只会温水煮青蛙,工作都找不到还不好好学这份16W字Java面试合集

    蓦然回首自己做开发已经十年了,这十年中我获得了很多,技术能力.培训.出国.大公司的经历,还有很多很好的朋友.但再仔细一想,这十年中我至少浪费了五年时间,这五年可以足够让自己成长为一个优秀的程序员,可惜 ...

  8. 别再找借口了!找不到工作还不好好学一下这份16W字Java面试合集

    背景 前两天在朋友圈发了一条招人的感慨,关于大厂招人和小公司招人的区别. 大厂:有影响力,有钱,能够吸引了大量的应聘者.因此,也就有了筛选的资格,比如必须985名校毕业,必须35岁以下,不能5年3跳, ...

  9. Dubbo面试 - Dubbo通信协议

    Dubbo面试 - Dubbo通信协议 面试题 dubbo 支持哪些通信协议?支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的? 面试官心理分析 上一 ...

最新文章

  1. SQL Server 最佳实践分析器使用小结
  2. 学计算机视觉台式机,回顾2020,2020年最受欢迎的7种电脑视觉工具
  3. 承载千万级并发的分布式系统架构设计思想
  4. Activity与Thread之间的通讯(old)
  5. 机器学习之决策树(下)
  6. 5.0安装没有costom mysql_Zabbix5.0监控mysql配置
  7. SQL——快速定位相关的外键表
  8. HTFS.Software.v7.3-ISO 1DVD(传热模拟,最新完全解密版)
  9. hosts文件 端口_在Linux系统中使用Vim读写远程文件
  10. 视觉SLAM——ORB特征
  11. 基因表达式编程的任务指派问题求解算法设计与实现
  12. 媒体无效或 0 磁道损坏 - 磁盘无法使用。 格式化失败。
  13. 边界值法中的上点、内点和离点分析
  14. [HTML+CSS+Vue.js] 超长文本等内容默认折叠显示,点击展开全文,再点击收起(仿知乎效果)
  15. 微型计算机的地址加法器,地址加法器
  16. Hubstudio指纹浏览器和YiLu代理(易路代理)的配置教程
  17. 美国英语情景对话大全(zt)
  18. html5 显示k线图,canvas绘图,html5 k线图,股票行情图
  19. excel 隔行插入和错位
  20. ARM实验板移植,linux点阵字库的使用

热门文章

  1. 可以自发热的袜子,穿上暖3.9℃,这个冬天不再怕脚冷!
  2. 熊吃人该不该杀?这头3米高的大熊吃了7个人,还在洞里藏了很多女人用的东西.........
  3. 史上最严重的忘拿钥匙事件 | 今日最佳
  4. 要学习数据科学知识,这些信息需要知道(数据)
  5. android activity解耦,Android与设计模式:用单一职责原则为Activity解耦
  6. 苹果android 对比,苹果安卓旗舰差距有多少?看了这份对比,果粉傻眼了
  7. linux目录结果说明,Linux目录结构及文件说明
  8. 华为服务器如何用pe重装系统,教你华为u盘重装win10系统详细图文
  9. php header会重定向吗,php – 可以依靠header()重定向来结束程序流吗?
  10. 广东省计算机应用(2010),2010年广东省高等教育自学考试计算机基础及应用(N)试卷(课程代码.doc...