解药,Dubbo面试18问!帮你更好的应对面试和运用Dubbo,自由之战

频道:今日头条 日期: 浏览:259


Java识堂,一个高原创,高保藏,有干货的微信大众号,一同生长,一同前进,欢迎重视

dubbo是什么

dubbo是一个散布式结构,长途效劳调用的散布式结构,其中心部分包含:铃原爱 集群容错:供给依据接口办法的通明长途过程调用,包含多协议支撑,以及软负载均衡,失利容错,地址路由,动态装备等集群支撑。 长途通讯: 供给对多种依据长衔接的NIO结构笼统封装,包含多种线程模型,序列化,以及“恳求-呼应”形式的信息交流办法。 主动发现:依据注册中心目录效劳,使效劳消费方能动态的查找效劳供给方,使地址通明,使效劳供给方能够滑润增加或削减机器。

dubbo能做什么

通明化的长途办法调用,就像调用本地办法相同调用长途办法,只需简略装备,没有任何API侵入。 软负载均衡及容错机制,可在内网代替F5等硬件负载均衡器,降低成本,削减单点。 效劳主动注册与发现,不再需求写死效劳供给方地址,注册中心依据接口名查询效劳供给者的IP地址,而且能够滑润增加或删去效劳供给者。

1、默许运用的是什么通讯结构,还有其他挑选吗?

答:默许也引荐运用 netty 结构,还有 mina。

2、效劳调用是堵塞的吗?

答:默许是堵塞的,能够异步调用,没有回来值的能够这么做。

3、一般运用什么注册中心?还有其他挑选吗?

答:引荐运用 zookeeper 注册中心,还有 Multicast注册中心, Redis注册中心, Simple注册中心.

ZooKeeper的节点是经过像树相同的结构来进行保护的,而且解药,Dubbo面试18问!帮你更好的应对面试和运用Dubbo,自在之战每一个节点经过途径来标明以及拜访。除此之外,每一个节点华乐七子还具有自身的解药,Dubbo面试18问!帮你更好的应对面试和运用Dubbo,自在之战一些信息,包含:数据、数据长度、创立时刻、修正时刻等等。

4、默许运用什么序列化结构,你知道的还有哪些?

答:默许运用 Hessian 序列化,还有 临沂大学数字化学校Duddo、FastJson、Java 自带序列化。 hessian是一解药,Dubbo面试18问!帮你更好的应对面试和运用Dubbo,自在之战个选用二进制格局传输的效劳结构,相对传统soap web service,更轻量,更快速。

Hessian原理与协议简析:

http的协议约好了数据传输的办法,hessian也无法改动太多:

1) hessian中client与server的交互,依据http-post办法。

2) hessian将辅佐信息,封装在http header中,比方“授权tok郝叔en”等,咱们能够依据http-header来封装关于“安全校验”“meta数据”等。hessian供给了简略的”校验”机制。

3) 关于古噬人鲨hessian的交互中心数据,比方“调用的办法”和参数列表信息,将经过post恳求的body体直接发送,格局为字节省。

4) 关于hessian的server端呼应数据,将在response中经过字节省的办法直接输出。

hessian的协议自身并不杂乱,在此不再赘言;所谓协议(protocol)便是束缚数据的格局,client依照协议将恳求信息序列化成字节序列发送给server端,server端依据协议,将数据反序列化成“目标”,然后履行指殷无双君上邪定的办法,并将办法的回来值再次依照协议序列化成字节省,呼应给client,client依照协议将字节省反序列话成”目标”。


5、效劳供给者能完结失效踢出是什么原理?

答:效劳失效踢出依据 zookeepe闭组词r 的暂时节点原理。

6、效劳上线怎样不影响旧版别?

答:选用多版别开发,不影响旧版别。在装备中增加version来作为版别差异

7、怎样处理效劳调用链过长的问题?

答:能够结合 zipkin 完结散布式效劳追寻。

8、说说中心的装备有哪些?

中心装备有:

1) dubbo:service/

2) 沈琼霍小媛dubbo:reference/

3) dubbo:protocol/

4) dubbo:registry/

5) dubbo:application/

6) dubbo:provider/

7) dubbo:consumer/

8) dubbo:method/

9、dubbo 引荐用什么协议?

答:默许运用 dubbo 协议。

10、同一个效劳多个注册的状况下能够直连某一个效劳吗?

答:能够直连,修正装备即可,也能够经过 telnet 直接某个效劳。

11、dubbo 在安全机制方面怎样处理的?

dubbo 经过 token 令牌防止用户绕过注册中解药,Dubbo面试18问!帮你更好的应对面试和运用Dubbo,自在之战心直连,然后在注册中心办理授权,dubbo 供给了是非名单,操控效劳所答应的调用方。

12、集群容错怎样做?

答:读操作主张运用 Failover 失利主动切换,默许重试两次其他效劳器。写操作主张运用 Failfast 快速失利,发一次调用失利就当即报错。

13、在运用过程中都遇到了些什么问题? 怎样处理的?

1) 一起装备了 XML 和 properties 文件,则 properties 中的装备无效

只要 XML 没有装备时,properties 才收效。

2) dubbo 缺省会在发动时查看依靠是否可用,不可用就抛出反常,阻挠 spring 初始化完结,check 特点默许为 true。

测验时有些效劳不关心或许呈现了循环依靠解药,Dubbo面试18问!帮你更好的应对面试和运用Dubbo,自在之战,将 check 设置为 false

3) 为了便利开发测验,线下有一个一切效劳可用的注册中心,这时,假如有一个正在开发中的效劳供给者注册,或许会影响顾客不能正常运转。

处理:让效劳供给者开发方,只订阅效劳,而不注册正在开发的效劳,经过直连测验正在开发的效劳。设置 dubbo:registry 标签的 register 特点为 false。

4) spring 2.x 初始化死锁问题。

在 spring 解析到 dubbo:service 时,就现已向外露出了效劳,而 spring 还在接着初始化其他 bean,假如这时有恳求进来,而且效劳的完结类里有调用 applicati麻批onContext.getBean() 的用法。getBean 线程和 spring 初始化线程的锁的次序不相同,导致了junoflo线程死锁,不能供给效劳,发动不了。

处理:不要在效劳的完结类中运用 applicationContext.getBean(); 假如不想依靠装备次序,能够将 dubbo:provider 的 deplay 特点设置为 - 1,使 dubbo刘耐岗 在容器初始化完结后再露出效劳。

5) 效劳注册不上

查看 dubbo 的 jar 包有没有在 classpath 中,以及有没有重复的 jar 包

查看露出效劳的 spring 装备有没有加载

在效劳供给者机器上测验与注册中心的网络是否通

6) 呈现 RpcException: No provider available for remote service 反常

表明没有可用的效劳供给者,

a. 查看衔接的注册中心是否正确

b. 到注册中心查看相应的效劳供给者是否存在

c. 查看效劳供给者是否正常运转

7) 呈现” 音讯发送失利” 反常

通常是接口办法的传入传出参数未完结 Serializable 接口。


14、dubbo 和解药,Dubbo面试18问!帮你更好的应对面试和运用Dubbo,自在之战 dubbox 之间的差异?

答:dubbox 是当当网依据 dubbo 上做了一些扩展,如加了效劳可 restful 调用,更新了开源组件等。


15、你还了解其他散布式结构吗?

答:其他还有 spring 的 spring cloud,facebook 的 thrift,twitter 的 fina陆小誉gle 等。

16、Dubbo 支撑哪些协议,每种协议的运用场景,优缺点?

dubbo: 云养汉单一长衔接和 N3u8773IO 异步通讯,合适大并发小数据量的效劳调用,以及顾客远大于供给者。传输协议 TCP,异步,Hessian 序列化;

rmi: 选用 JDK 规范的 rmi 协议完结,传输参数和回来参数目标需求完结 Serializable 接口,运用 java 规范序列化机制,运用堵塞式短衔接,传输数据包巨细混合,顾客和供给者个数差不多,可传文件,传输协议 TCP。 多个短衔接,TCP 协议传输,同步传输,适用惯例的长途效劳调用和 rmi 互操作。在依靠低版其他 Common-Collections 包,java 序列化存在安全漏洞;

webservice:依据 WebService 的长途调用协议,集成 CXF 完结,供给和原生 WebService 的互操作。多个短衔接,依据 HTTP 传输,同步传输,适用菠萝社解药,Dubbo面试18问!帮你更好的应对面试和运用Dubbo,自在之战系统集成和跨言语调用;http: 依据 Http 表单提交的长途调用协议,运用 Spring 的 HttpInvoke 完结。多个短衔接,传输协议 HTTP,传入参数巨细混合,供给者个数多于顾客,需求给运用程序和浏览器 JS 调用; hessian: 集成 Hessian 效劳,依据 HTTP 通讯,选用 Servlet 露出效劳,Dubbo 内嵌 Jetty 作为效劳器时默许完结,供给与 Hession 效劳互操作。多个短衔接,同步 HTTP 传输,Hessian 序列化,传入参数较大,供给者大于顾客,供给者压力较大,可传文件;

memcache: 依据 memcached 完结的 RPC 协议 redis: 依据 redis 完结的 RPC 协议

17、Dubbo 集群的负载均衡有哪k7041些战略

Dubbo 供给了常见的集群战略完结,并预扩展点予以自行完结。

Random LoadBalance: 随机选取提我什么都没有仅仅有一点吵供者战略,有利于动态调整供给者权重。截面磕碰率高,调用次数越多,散布越均匀;

RoundRobin LoadBalance: 轮循选取供给者战略,均匀散布,可是存在恳求累积的问题;

LeastActive LoadBalance: 最少活泼调用战略,处理慢供给者接纳更少的恳求; ConstantHash LoadBalance: 一致性 Hash 战略,使相论仁慈同参数恳求总是发到同一供给者,一台机器宕机,能够依据虚拟节点,分摊至其他供给者,防止引起供给者的剧烈变化;

18、效劳调用超时问题怎样处理

dubbo在调用效劳不成功时,默许是会重试两次的。这样在效劳端的处理时刻超过了设定的超时时刻时,就会有重复恳求,比方在发邮件时,或许就会宣布多份重复邮件,履行注册恳求时,就会刺进多条重复的注册数据,那么怎样处理超时问题呢?如下

关于中心的效劳中心,去除dubbo超时重试机制,并从头评价设置超时时刻。 事务处理代码有必要放在效劳端,客户端只做参数验证和效劳调用,不触及事务流程处理 大局装备实例



当然Dubbo的重试机制其实是非常好的QOS确保,它的路由机制,是会帮你把超时的恳求路由到其他机器上,而不是本机测验,所以 dubbo的重试机器也能必定程度的确保效劳的质量。可是请必定要归纳线上的拜访状况,给出归纳的评价。


原文:https://deanwang194sw0363.github.io/bugs/2018/10/05/面试/饿了么/dubbo%20面试题/