更新時間:2023-02-15 16:22:18 來源:動力節點 瀏覽2807次
1.Dubbo 有哪些特性?
答:Dubbo 特性如下:
面向接口代理的高性能 RPC 調用:提供高性能的基于代理的遠程調用能力,服務以接口為粒度,為開發者屏蔽遠程調用底層細節;
智能負載均衡:內置多種負載均衡策略,智能感知下游節點健康狀況,顯著減少調用延遲,提高系統吞吐量;
服務自動注冊與發現:支持多種注冊中心服務,服務實例上下線實時感知;
高度可擴展能力:遵循微內核+插件的設計原則,所有核心能力如 Protocol、Transport、Serialization 被設計為擴展點,平等對待內置實現和第三方實現;
運行期流量調度:內置條件、腳本等路由策略,通過配置不同的路由規則,輕松實現灰度發布,同機房優先等功能;
可視化的服務治理與運維:提供豐富服務治理、運維工具:隨時查詢服務元數據、服務健康狀態及調用統計,實時下發路由策略、調整配置參數。
2.Dubbo 有哪些核心組件?
答:Dubbo 核心組件如下:
Provider:服務提供方
Consumer:服務消費方
Registry:服務注冊與發現的注冊中心
Monitor:主要用來統計服務的調用次數和調用時間
Container:服務的運行容器
3.Dubbo 有哪些負載均衡策略?
答:Dubbo 負責均衡策略如下:
隨機負載均衡(Random LoadBalance):按權重設置隨機概率,在一個截面上碰撞的概率高,但調用量越大分布越均勻,而且按概率使用權重后也比較均勻,有利于動態調整提供者權重;
輪詢負載均衡(RoundRobin LoadBalance):按公約后的權重設置輪詢比率,存在慢的提供者累積請求的問題,比如:第二臺機器很慢,但沒掛,當請求調到第二臺時就卡在那,久而久之,所有請求都卡在調到第二臺上;
最少活躍調用數負載均衡(LeastActive LoadBalance):使用最少活躍調用數,活躍數指調用前后計數差;
哈希負載均衡(ConsistentHash LoadBalance):使用哈希值轉發,相同參數的請求總是發到同一提供者。
負載均衡配置如下 :
服務端服務級別
<dubbo:service interface="xxx" loadbalance="roundrobin" />
客戶端服務級別
<dubbo:reference interface="xxx" loadbalance="roundrobin" />
服務端方法級別
<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 不支持以下哪種協議?
A:dubbo://
B:rmi://
C:redis://
D:restful://
答:D
題目解析:restful 一直編程規范,并不是一種傳輸協議,也不被 Dubbo 支持。
5.Dubbo 默認使用什么注冊中心,還有別的選擇嗎?
答:推薦使用 ZooKeeper 作為注冊中心,還有 Nacos、Redis、Simple 注冊中心(普通的 Dubbo 服務)。
6.Dubbo 支持多注冊中心嗎?
答:Dubbo 支持同一服務向多注冊中心同時注冊,或者不同服務分別注冊到不同的注冊中心上去,甚至可以同時引用注冊在不同注冊中心上的同名服務。
多注冊中心注冊:
<?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 等注冊中心。
① 組播方式 ,不需要啟動任何中心節點,只要廣播地址一樣,就可以互相發現。
組播受網絡結構限制,只適合小規模應用或開發階段使用。組播地址段: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 缺省使用單播發送提供者地址信息給消費者,如果一個機器上同時啟了多個消費者進程,消費者需聲明 unicast=false,否則只會有一個消費者能收到消息;當服務者和消費者運行在同一臺機器上,消費者同樣需要聲明 unicast=false,否則消費者無法收到消息,導致 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 服務,可以減少第三方依賴,使整體通訊方式一致。
<dubbo:registry protocol="zookeeper" address="N/A" file="./.dubbo-platform"/>
將 Simple 注冊中心暴露成 Dubbo 服務:
<?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="simple-registry" />
<!-- 暴露服務協議配置 -->
<dubbo:protocol port="9090" />
<!-- 暴露服務配置 -->
<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>
<!-- 簡單注冊中心實現,可自行擴展實現集群和狀態同步 -->
<bean id="registryService" class="org.apache.dubbo.registry.simple.SimpleRegistryService" />
</beans>
引用 Simple Registry 服務:
<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 只是簡單實現,不支持集群,可作為自定義注冊中心的參考,但不適合直接用于生產環境。
③ ZooKeeper 注冊中心 ,Zookeeper 是 Apacahe Hadoop 的子項目,是一個樹型的目錄服務,支持變更推送,適合作為 Dubbo 服務的注冊中心,工業強度較高,可用于生產環境,并推薦使用。
以上就是“2023年IT企業攻略,Java分布式架構面試題”,你能回答上來嗎?如果想要了解更多的Java面試題相關內容,可以關注動力節點Java官網。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習