更新時間:2023-02-15 16:22:18 來源:動力節(jié)點(diǎn) 瀏覽2894次
1.Dubbo 有哪些特性?
答:Dubbo 特性如下:
面向接口代理的高性能 RPC 調(diào)用:提供高性能的基于代理的遠(yuǎn)程調(diào)用能力,服務(wù)以接口為粒度,為開發(fā)者屏蔽遠(yuǎn)程調(diào)用底層細(xì)節(jié);
智能負(fù)載均衡:內(nèi)置多種負(fù)載均衡策略,智能感知下游節(jié)點(diǎn)健康狀況,顯著減少調(diào)用延遲,提高系統(tǒng)吞吐量;
服務(wù)自動注冊與發(fā)現(xiàn):支持多種注冊中心服務(wù),服務(wù)實(shí)例上下線實(shí)時感知;
高度可擴(kuò)展能力:遵循微內(nèi)核+插件的設(shè)計原則,所有核心能力如 Protocol、Transport、Serialization 被設(shè)計為擴(kuò)展點(diǎn),平等對待內(nèi)置實(shí)現(xiàn)和第三方實(shí)現(xiàn);
運(yùn)行期流量調(diào)度:內(nèi)置條件、腳本等路由策略,通過配置不同的路由規(guī)則,輕松實(shí)現(xiàn)灰度發(fā)布,同機(jī)房優(yōu)先等功能;
可視化的服務(wù)治理與運(yùn)維:提供豐富服務(wù)治理、運(yùn)維工具:隨時查詢服務(wù)元數(shù)據(jù)、服務(wù)健康狀態(tài)及調(diào)用統(tǒng)計,實(shí)時下發(fā)路由策略、調(diào)整配置參數(shù)。
2.Dubbo 有哪些核心組件?
答:Dubbo 核心組件如下:
Provider:服務(wù)提供方
Consumer:服務(wù)消費(fèi)方
Registry:服務(wù)注冊與發(fā)現(xiàn)的注冊中心
Monitor:主要用來統(tǒng)計服務(wù)的調(diào)用次數(shù)和調(diào)用時間
Container:服務(wù)的運(yùn)行容器
3.Dubbo 有哪些負(fù)載均衡策略?
答:Dubbo 負(fù)責(zé)均衡策略如下:
隨機(jī)負(fù)載均衡(Random LoadBalance):按權(quán)重設(shè)置隨機(jī)概率,在一個截面上碰撞的概率高,但調(diào)用量越大分布越均勻,而且按概率使用權(quán)重后也比較均勻,有利于動態(tài)調(diào)整提供者權(quán)重;
輪詢負(fù)載均衡(RoundRobin LoadBalance):按公約后的權(quán)重設(shè)置輪詢比率,存在慢的提供者累積請求的問題,比如:第二臺機(jī)器很慢,但沒掛,當(dāng)請求調(diào)到第二臺時就卡在那,久而久之,所有請求都卡在調(diào)到第二臺上;
最少活躍調(diào)用數(shù)負(fù)載均衡(LeastActive LoadBalance):使用最少活躍調(diào)用數(shù),活躍數(shù)指調(diào)用前后計數(shù)差;
哈希負(fù)載均衡(ConsistentHash LoadBalance):使用哈希值轉(zhuǎn)發(fā),相同參數(shù)的請求總是發(fā)到同一提供者。
負(fù)載均衡配置如下 :
服務(wù)端服務(wù)級別
<dubbo:service interface="xxx" loadbalance="roundrobin" />
客戶端服務(wù)級別
<dubbo:reference interface="xxx" loadbalance="roundrobin" />
服務(wù)端方法級別
<dubbo:service interface="xxx">
<dubbo:method name="xxx" loadbalance="roundrobin"/>
</dubbo:service>
客戶端方法級別
<dubbo:reference interface="xxx">
<dubbo:method name="xxx" loadbalance="roundrobin"/>
</dubbo:reference>
4.Dubbo 不支持以下哪種協(xié)議?
A:dubbo://
B:rmi://
C:redis://
D:restful://
答:D
題目解析:restful 一直編程規(guī)范,并不是一種傳輸協(xié)議,也不被 Dubbo 支持。
5.Dubbo 默認(rèn)使用什么注冊中心,還有別的選擇嗎?
答:推薦使用 ZooKeeper 作為注冊中心,還有 Nacos、Redis、Simple 注冊中心(普通的 Dubbo 服務(wù))。
6.Dubbo 支持多注冊中心嗎?
答:Dubbo 支持同一服務(wù)向多注冊中心同時注冊,或者不同服務(wù)分別注冊到不同的注冊中心上去,甚至可以同時引用注冊在不同注冊中心上的同名服務(wù)。
多注冊中心注冊:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<dubbo:application name="world" />
<!-- 多注冊中心配置 -->
<dubbo:registry id="hangzhouRegistry" address="10.20.141.150:9090" />
<dubbo:registry id="qingdaoRegistry" address="10.20.141.151:9010" default="false" />
<!-- 向多個注冊中心注冊 -->
<dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" registry="hangzhouRegistry,qingdaoRegistry" />
</beans>
7.Dubbo 支持的連接方式有哪些?
答:Dubbo 支持的主要連接方式有:組播、直連和 ZooKeeper 等注冊中心。
① 組播方式 ,不需要啟動任何中心節(jié)點(diǎn),只要廣播地址一樣,就可以互相發(fā)現(xiàn)。
組播受網(wǎng)絡(luò)結(jié)構(gòu)限制,只適合小規(guī)模應(yīng)用或開發(fā)階段使用。組播地址段:224.0.0.0 ~ 239.255.255.255
配置
<dubbo:registry address="multicast://224.5.6.7:1234" />
或
<dubbo:registry protocol="multicast" address="224.5.6.7:1234" />
為了減少廣播量,Dubbo 缺省使用單播發(fā)送提供者地址信息給消費(fèi)者,如果一個機(jī)器上同時啟了多個消費(fèi)者進(jìn)程,消費(fèi)者需聲明 unicast=false,否則只會有一個消費(fèi)者能收到消息;當(dāng)服務(wù)者和消費(fèi)者運(yùn)行在同一臺機(jī)器上,消費(fèi)者同樣需要聲明 unicast=false,否則消費(fèi)者無法收到消息,導(dǎo)致 No provider available for the service 異常:
<dubbo:registry address="multicast://224.5.6.7:1234?unicast=false" />
或
<dubbo:registry protocol="multicast" address="224.5.6.7:1234">
<dubbo:parameter key="unicast" value="false" />
</dubbo:registry>
② 直連方式 ,注冊中心本身就是一個普通的 Dubbo 服務(wù),可以減少第三方依賴,使整體通訊方式一致。
<dubbo:registry protocol="zookeeper" address="N/A" file="./.dubbo-platform"/>
將 Simple 注冊中心暴露成 Dubbo 服務(wù):
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
<!-- 當(dāng)前應(yīng)用信息配置 -->
<dubbo:application name="simple-registry" />
<!-- 暴露服務(wù)協(xié)議配置 -->
<dubbo:protocol port="9090" />
<!-- 暴露服務(wù)配置 -->
<dubbo:service interface="org.apache.dubbo.registry.RegistryService" ref="registryService" registry="N/A" ondisconnect="disconnect" callbacks="1000">
<dubbo:method name="subscribe"><dubbo:argument index="1" callback="true" /></dubbo:method>
<dubbo:method name="unsubscribe"><dubbo:argument index="1" callback="false" /></dubbo:method>
</dubbo:service>
<!-- 簡單注冊中心實(shí)現(xiàn),可自行擴(kuò)展實(shí)現(xiàn)集群和狀態(tài)同步 -->
<bean id="registryService" class="org.apache.dubbo.registry.simple.SimpleRegistryService" />
</beans>
引用 Simple Registry 服務(wù):
<dubbo:registry address="127.0.0.1:9090" />
或者:
<dubbo:service interface="org.apache.dubbo.registry.RegistryService" group="simple" version="1.0.0" ... >
或者:
<dubbo:registry address="127.0.0.1:9090" group="simple" version="1.0.0" />
適用性說明:此 SimpleRegistryService 只是簡單實(shí)現(xiàn),不支持集群,可作為自定義注冊中心的參考,但不適合直接用于生產(chǎn)環(huán)境。
③ ZooKeeper 注冊中心 ,Zookeeper 是 Apacahe Hadoop 的子項(xiàng)目,是一個樹型的目錄服務(wù),支持變更推送,適合作為 Dubbo 服務(wù)的注冊中心,工業(yè)強(qiáng)度較高,可用于生產(chǎn)環(huán)境,并推薦使用。
以上就是“2023年IT企業(yè)攻略,Java分布式架構(gòu)面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關(guān)內(nèi)容,可以關(guān)注動力節(jié)點(diǎn)Java官網(wǎng)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743