1.Dubbo是什麼?前端
Dubbo 是一個分佈式、高性能、透明化的 RPC 服務框架,提供服務自動註冊、自動發現等高效服務治理方案, 能夠和 Spring 框架無縫集成。java
RPC 指的是遠程調用協議,也就是說兩個服務器交互數據。web
2.Dubbo的由來?redis
互聯網的快速發展,Web應用程序的規模不斷擴大,通常會經歷以下四個發展階段。spring
單一應用架構瀏覽器
當網站流量很小時,只需一個應用,將全部功能都部署在一塊兒便可。緩存
垂直應用架構安全
當訪問量逐漸增大,單一應用按照有業務線拆成多個應用,以提高效率。服務器
此時,用於加速前端頁面開發的 Web框架(MVC) 是關鍵。restful
分佈式服務架構
當垂直應用愈來愈多,應用之間交互不可避免,將核心業務抽取出來,做爲獨立的服務,逐漸造成穩定的服務中心,使前端應用能更快速的響應多變的市場需求。
此時,用於提升業務複用及整合的 分佈式服務框架(RPC) 是關鍵。
Java架構/分佈式:705127209(大牛交流羣)沒有開發經驗勿加!
流動計算架構
當服務愈來愈多,容量的評估,小服務資源的浪費等問題逐漸顯現,此時需增長一個調度中心基於訪問壓力實時管理集羣容量,提升集羣利用率。
此時,用於提升機器利用率的 資源調度和治理中心(SOA) 是關鍵。
3.Dubbo的主要應用場景?
透明化的遠程方法調用,就像調用本地方法同樣調用遠程方法,只需簡單配置,沒有任何API侵入。
軟負載均衡及容錯機制,可在內網替代F5等硬件負載均衡器,下降成本,減小單點。
服務自動註冊與發現,再也不須要寫死服務提供方地址,註冊中心基於接口名查詢服務提供者的IP地址,而且可以平滑添加或刪除服務提供者。
4.Dubbo的核心功能?
主要就是以下3個核心功能:
5.Dubbo的核心組件?
6.Dubbo服務註冊與發現的流程?
流程說明:
設計的緣由:
image
7.Dubbo的架構設計?
Dubbo框架設計一共劃分了10個層:
服務接口層(Service):該層是與實際業務邏輯相關的,根據服務提供方和服務消費方的業務設計對應的接口和實現。
配置層(Config):對外配置接口,以ServiceConfig和ReferenceConfig爲中心。
服務代理層(Proxy):服務接口透明代理,生成服務的客戶端Stub和服務器端Skeleton。
服務註冊層(Registry):封裝服務地址的註冊與發現,以服務URL爲中心。
集羣層(Cluster):封裝多個提供者的路由及負載均衡,並橋接註冊中心,以Invoker爲中心。
監控層(Monitor):RPC調用次數和調用時間監控。
遠程調用層(Protocol):封將RPC調用,以Invocation和Result爲中心,擴展接口爲Protocol、Invoker和Exporter。
信息交換層(Exchange):封裝請求響應模式,同步轉異步,以Request和Response爲中心。
網絡傳輸層(Transport):抽象mina和netty爲統一接口,以Message爲中心。
8.Dubbo的服務調用流程?
9.Dubbo支持哪些協議,每種協議的應用場景,優缺點?
10.dubbo推薦用什麼協議?
默認使用dubbo協議
11.Dubbo有些哪些註冊中心?
Java架構/分佈式:705127209(大牛交流羣)沒有開發經驗勿加!
12.Dubbo的服務治理?
過多的服務URL配置困難
負載均衡分配節點壓力過大的狀況下也須要部署集羣
服務依賴混亂,啓動順序不清晰
過多服務致使性能指標分析難度較大,須要監控
13.Dubbo的註冊中心集羣掛掉,發佈者和訂閱者之間還能通訊麼?
能夠的,啓動dubbo時,消費者會從zookeeper拉取註冊的生產者的地址接口等數據,緩存在本地。
每次調用時,按照本地存儲的地址進行調用。
Java架構/分佈式:705127209(大牛交流羣)沒有開發經驗勿加!
Dubbo採用全Spring配置方式,透明化接入應用,對應用沒有任何API侵入,只需用Spring加載Dubbo的配置便可,Dubbo基於Spring的Schema擴展進行加載。
15.Dubbo使用的是什麼通訊框架?
默認使用NIO Netty框架
16.Dubbo集羣提供了哪些負載均衡策略?
缺省時爲Random隨機調用
17.Dubbo的集羣容錯方案有哪些?
18.Dubbo的默認集羣容錯方案?
Failover Cluster
19.Dubbo支持哪些序列化方式?
默認使用Hessian序列化,還有Duddo、FastJson、Java自帶序列化。
20.Dubbo超時時間怎樣設置?
Dubbo超時時間設置有兩種方式:
21.服務調用超時問題怎麼解決?
dubbo在調用服務不成功時,默認是會重試兩次的。
22.Dubbo在安全機制方面是如何解決?
Dubbo經過Token令牌防止用戶繞過註冊中心直連,而後在註冊中心上管理受權。Dubbo還提供服務黑白名單,來控制服務所容許的調用方。
23.dubbo 和 dubbox 之間的區別?
dubbox 基於 dubbo 上作了一些擴展,如加了服務可 restful 調用,更新了開源組件等。
24.除了Dubbo還有哪些分佈式框架?
你們熟知的就是Spring cloud,固然國外也有相似的多個框架。
25.Dubbo和Spring Cloud的關係?
Dubbo
是 SOA 時代的產物,它的關注點主要在於服務的調用,流量分發、流量監控和熔斷。而 Spring Cloud
誕生於微服務架構時代,考慮的是微服務治理的方方面面,另外因爲依託了 Spirng、Spirng Boot
的優點之上,兩個框架在開始目標就不一致,Dubbo 定位服務治理、Spirng Cloud 是一個生態。
26.dubbo和spring cloud的區別?
最大的區別:Dubbo底層是使用Netty這樣的NIO框架,是基於TCP協議傳輸的,配合以Hession序列化完成RPC通訊。
而SpringCloud是基於Http協議+Rest接口調用遠程過程的通訊,相對來講,Http請求會有更大的報文,佔的帶寬也會更多。可是REST相比RPC更爲靈活,服務提供方和調用方的依賴只依靠一紙契約,不存在代碼級別的強依賴,這在強調快速演化的微服務環境下,顯得更爲合適,至於注重通訊速度仍是方便靈活性,具體狀況具體考慮。