<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Dubbo35個面試題,總會被問到!

          共 4406字,需瀏覽 9分鐘

           ·

          2021-07-17 16:59


          點擊“程序員面試吧”,選擇“星標??”

          下拉至文末”查看更多

             鏈接:https://blog.csdn.net/qq_14958051/article/details/106516664

          1.什么是Dubbo?

          Dubbo是基于Java的高性能輕量級的RPC分布式服務框架,現(xiàn)已成為 Apache 基金會孵化項目。

          官網(wǎng):http://dubbo.apache.org/en-us/

          2.為什么要使用Dubbo?

          背景:

          隨著互聯(lián)網(wǎng)的快速發(fā)展,Web應用程序的規(guī)模不斷擴大,最后我們發(fā)現(xiàn)傳統(tǒng)的垂直體系結(jié)構(gòu)(整體式)已無法解決。分布式服務體系結(jié)構(gòu)和流計算體系結(jié)構(gòu)勢在必行,迫切需要一個治理系統(tǒng)來確保體系結(jié)構(gòu)的有序發(fā)展。

          • 開源免費
          • 一些核心業(yè)務被提取并作為獨立的服務提供服務,逐漸形成一個穩(wěn)定的服務中心,這樣前端應用程序就可以更好地響應變化多端的市場需求
          • 分布式框架能承受更大規(guī)模的流量
          • 內(nèi)部基于netty性能高

          3.Dubbo提供了哪3個關(guān)鍵功能?

          基于接口的遠程調(diào)用

          容錯和負載均衡

          自動服務注冊和發(fā)現(xiàn)

          4.你知道哪些機構(gòu)在用Dubbo嗎?

          image-20200423105332840

          5.Dubbo服務的關(guān)鍵節(jié)點有哪些?

          image-20200423105925624

          6.說一下Dubbo服務注冊流程?

          1. 服務容器負責啟動,加載,運行服務提供者。
          2. 服務提供者在啟動時,向注冊中心注冊自己提供的服務。
          3. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。
          4. 注冊中心返回服務提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。
          5. 服務消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。
          6. 服務消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。

          7.能畫一下服務注冊流程圖嗎?

          image-20200423110344448

          8.Dubbo架構(gòu)的特點?

          連通性、健壯性、伸縮性、以及向未來架構(gòu)的升級性。

          9.對jdk的最小版本需求?

          jdk1.6+

          10.注冊中心的選擇?

          一般來說選中Zookeeper更穩(wěn)定更合適。

          除了Zookeeper還有Redis注冊中心、Multicast注冊中心、Simple注冊中心。

          11.Dubbo的核心配置?用途?

          image-20200423111538534

          12.配置優(yōu)先級規(guī)則?

          image-20200423112118958

          優(yōu)先級從高到低:

          • JVM -D參數(shù),當你部署或者啟動應用時,它可以輕易地重寫配置,比如,改變dubbo協(xié)議端口;
          • XML, XML中的當前配置會重寫dubbo.properties中的;
          • Properties,默認配置,僅僅作用于以上兩者沒有配置時。

          13.如何用代碼方式繞過注冊中心點對點直連?


           
          ReferenceConfig<XxxService> reference = new ReferenceConfig<XxxService>(); // 此實例很重,封裝了與注冊中心的連接以及與提供者的連接,請自行緩存,否則可能造成內(nèi)存和連接泄漏
          // 如果點對點直連,可以用reference.setUrl()指定目標地址,設置url后將繞過注冊中心,
          // 其中,協(xié)議對應provider.setProtocol()的值,端口對應provider.setPort()的值,
          // 路徑對應service.setPath()的值,如果未設置path,缺省path為接口名
          reference.setUrl("dubbo://10.20.130.230:20880/com.xxx.XxxService"); 
           

          14.Dubbo配置來源有幾種?分別是?

          4種

          • JVM System Properties,-D參數(shù)
          • Externalized Configuration,外部化配置
          • ServiceConfig、ReferenceConfig等編程接口采集的配置
          • 本地配置文件dubbo.properties

          15.如何禁用某個服務的啟動檢查?

          <dubbo:reference interface = "com.foo.BarService" check = "false" />

          16.Dubbo 負載均衡策略?默認是?

          • 隨機負載平衡(默認)

          • RoundRobin負載平衡

          • 最小活動負載平衡

          • 一致的哈希負載平衡

          17.上線兼容老版本?

          多版本號(version)

          18.開發(fā)測試環(huán)境,想繞過注冊中心如何配置?

          • xml
           <dubbo:reference id="xxxService" interface="com.alibaba.xxx.XxxService" url="dubbo://localhost:20890" />

          • -D

            java -Dcom.alibaba.xxx.XxxService=dubbo://localhost:20890
          • .properties

            java -Ddubbo.resolve.file=xxx.properties
          com.alibaba.xxx.XxxService=dubbo://localhost:20890

          19.集群容錯幾種方法?

          image-20200423121735540

          20.Dubbo有幾種配置方式?

          1. Spring
          2. Java API

          21.Dubbo有哪些協(xié)議?推薦?

          • dubbo://(推薦)
          • rmi://
          • hessian://
          • http://
          • webservice://
          • thrift://
          • memcached://
          • redis://
          • rest://

          22.Dubbo使用什么通信框架?

          dubbo使用netty。

          23.dubbo協(xié)議默認端口號?http協(xié)議默認端口?hessian?rmi?

          • dubbo:20880
          • http:80
          • hessian:80
          • rmi:80

          24.Dubbo默認序列化框架?其他的你還知道?

          • dubbo協(xié)議缺省為hessian2
          • rmi協(xié)議缺省為java
          • http協(xié)議缺省為json

          25.一個服務有多重實現(xiàn)時,如何處理?

          可以用group分組,服務提供方和消費放都指定同一個group。

          26.Dubbo服務調(diào)用默認是阻塞的?還有其他的?

          默認是同步等待結(jié)果阻塞的,同時也支持異步調(diào)用。

          Dubbo 是基于 NIO 的非阻塞實現(xiàn)并行調(diào)用,客戶端不需要啟動多線程即可完成并行調(diào)用多個遠程服務,相對多線程開銷較小,異步調(diào)用會返回一個 Future 對象。

          27.Dubbo服務追蹤解決方案?

          • Zipkin
          • Pinpoint
          • SkyWalking

          28.Dubbo不維護了嗎?Dubbo和Dubbox有什么區(qū)別?

          現(xiàn)在進入了Apache,由apache維護。

          Dubbox是當當?shù)臄U展項目。

          29.Dubbox有什么新功能?

          • 支持REST風格遠程調(diào)用(HTTP + JSON/XML)

          • 支持基于Kryo和FST的Java高效序列化實現(xiàn)

          • 支持基于嵌入式Tomcat的HTTP remoting體系

          • 升級Spring

          • 升級ZooKeeper客戶端

          30.io線程池大小默認?

          cpu個數(shù) + 1

          31.dubbo://協(xié)議適合什么樣的服務調(diào)用?

          采用單一長鏈接和NIO異步通訊,適用于小數(shù)量大并發(fā)的服務調(diào)用,以及服務消費者機器數(shù)遠大于服務提供者機器數(shù)的情況。

          不適合傳送大數(shù)據(jù)量的服務,比如傳文件,傳視頻等,除非請求量很低。

          image-20200423154308365

          32.自動剔除服務什么原理?

          zookeeper臨時節(jié)點,會話保持原理。

          33.從 2.0.5 版本開始,dubbo支持通過x命令來進行服務治理?

          telnet

          34.如何用命令查看服務列表?

          telnet localhost 20880

          進入命令行。然后執(zhí)行 ls相關(guān)命令:

          • ls: 顯示服務列表
          • ls -l: 顯示服務詳細信息列表
          • ls XxxService: 顯示服務的方法列表
          • ls -l XxxService: 顯示服務的方法詳細信息列表

          35.Dubbo框架設計是怎樣的?

          image-20200423162348971

          各層說明:

          • 「config 配置層」:對外配置接口,以 ServiceConfig, ReferenceConfig 為中心,可以直接初始化配置類,也可以通過 spring 解析配置生成配置類
          • 「proxy 服務代理層」:服務接口透明代理,生成服務的客戶端 Stub 和服務器端 Skeleton, 以 ServiceProxy 為中心,擴展接口為 ProxyFactory
          • 「registry 注冊中心層」:封裝服務地址的注冊與發(fā)現(xiàn),以服務 URL 為中心,擴展接口為 RegistryFactory, Registry, RegistryService
          • 「cluster 路由層」:封裝多個提供者的路由及負載均衡,并橋接注冊中心,以 Invoker 為中心,擴展接口為 Cluster, Directory, Router, LoadBalance
          • 「monitor 監(jiān)控層」:RPC 調(diào)用次數(shù)和調(diào)用時間監(jiān)控,以 Statistics 為中心,擴展接口為 MonitorFactory, Monitor, MonitorService
          • 「protocol 遠程調(diào)用層」:封裝 RPC 調(diào)用,以 Invocation, Result 為中心,擴展接口為 Protocol, Invoker, Exporter
          • 「exchange 信息交換層」:封裝請求響應模式,同步轉(zhuǎn)異步,以 Request, Response 為中心,擴展接口為 Exchanger, ExchangeChannel, ExchangeClient, ExchangeServer
          • 「transport 網(wǎng)絡傳輸層」:抽象 mina 和 netty 為統(tǒng)一接口,以 Message 為中心,擴展接口為 Channel, Transporter, Client, Server, Codec
          • 「serialize 數(shù)據(jù)序列化層」:可復用的一些工具,擴展接口為 Serialization, ObjectInput, ObjectOutput, ThreadPool


          • 轉(zhuǎn)自:JAVA葵花寶典






          瀏覽 22
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产激情无码视频网站 | 91豆花成人社区 | 久操久操久操 | 欧美成人毛片AAAAAA | 免费18禁 |