https://www.imooc.com/article/21638
https://github.com/apache/incubator-dubbo/tree/master/dubbo-demo
http://dubbo.apache.org/books/dubbo-user-book/configuration/xml.html
http://dubbo.apache.org/books/dubbo-dev-book/
1、默認(rèn)使用的是什么通信框架宴抚,還有別的選擇嗎?
2、服務(wù)調(diào)用是阻塞的嗎臀防?
3强戴、一般使用什么注冊(cè)中心?還有別的選擇嗎?
4量蕊、默認(rèn)使用什么序列化框架,你知道的還有哪些艇挨?
5残炮、服務(wù)提供者能實(shí)現(xiàn)失效踢出是什么原理?
6缩滨、服務(wù)上線怎么不影響舊版本势就?
7、如何解決服務(wù)調(diào)用鏈過長的問題脉漏?
8苞冯、說說核心的配置有哪些?
9鸠删、dubbo推薦用什么協(xié)議抱完?
10、同一個(gè)服務(wù)多個(gè)注冊(cè)的情況下可以直連某一個(gè)服務(wù)嗎刃泡?
11巧娱、畫一畫服務(wù)注冊(cè)與發(fā)現(xiàn)的流程圖
12碉怔、集群容錯(cuò)怎么做?
13禁添、在使用過程中都遇到了些什么問題撮胧?
14、dubbo和dubbox之間的區(qū)別老翘?
15芹啥、你還了解別的分布式框架嗎?
分布式服務(wù)框架
1铺峭、說一下dubbo的實(shí)現(xiàn)過程注冊(cè)中心掛了可以繼續(xù)通信嗎??
2墓怀、zk原理知道嗎zk都可以干什么Paxos算法知道嗎?說一下原理和實(shí)現(xiàn)??
3、dubbo支持哪些序列化協(xié)議?hessian 說一下hessian的數(shù)據(jù)結(jié)構(gòu)PB知道嗎為啥PB效率是最高的啊??
4卫键、知道netty嗎'netty可以干嘛呀NIO,BIO,AIO 都是什么啊有什么區(qū)別啊?
5傀履、dubbo復(fù)制均衡策略和高可用策略都有哪些啊動(dòng)態(tài)代理策略呢?
6、為什么要進(jìn)行系統(tǒng)拆分啊拆分不用dubbo可以嗎'dubbo和thrift什么區(qū)別啊?
Dubbo得通訊協(xié)議
第一莉炉、dubbo
默許得钓账,單純長銜接、NIO異步通訊絮宁。合適幾據(jù)量小梆暮,伴發(fā)大得場(chǎng)景,消耗者幾量大于參考者得處境绍昂。
傳輸個(gè)大文件啦粹、視頻、哪些得而且為不能用了治专。
很多普遍得平常類型用這種就夠了卖陵。
第二、RMI
無疑的JDK規(guī)范得長途調(diào)用協(xié)議张峰,閉塞式短銜接&JDK規(guī)范得序列化方法泪蔫。
輸出輸入得幾據(jù)包巨細(xì)同化,消耗者或者參考者幾量不好少量喘批,為相對(duì)恰當(dāng)?shù)昧萌伲軌騻魑募?br>
各自在類型中沒用過,不大關(guān)心饶深。
第三餐曹、hessian
Hessian選取HTTP通訊,因Servlet對(duì)外參考辦事敌厘,在Dubbo中運(yùn)用Jetty干辦事器台猴。非常合適傳輸頁面、文件。
第四饱狂、Http
這種沒什么棒陳訴得曹步,關(guān)鍵為合適還有給APP、網(wǎng)頁得Ajax參考辦事休讳。我在類型中到?jīng)]這么用過讲婚,平常那種處境均為干脆用SpringMVC打成war包,經(jīng)過Keepalived+Nginx+Tomcat采用高可用或者負(fù)載都衡俊柔。
第五筹麸、WebService
老牌得幾據(jù)交流措施了,SOAP協(xié)議雏婶,CXF框架完成物赶,2010年此后我在類型中就沒用過了。
第六留晚、thrift
Facebook得RPC框架块差,Dubbo加了少許頭消息,不鼓勵(lì)null值倔丈。
第七、緩存
Dubbo鼓勵(lì)緩存幾據(jù)庫Memcached状蜗、Redis需五。
通訊協(xié)議比較
注冊(cè)核心
保舉為Zookeeper,另外例如下:
第一轧坎、Multicast宏邮,不該核心,僅僅節(jié)點(diǎn)得播送地點(diǎn)為同樣得缸血,均能夠彼此發(fā)覺蜜氨,這種同樣便是小領(lǐng)域使用,和開辟得時(shí)候候用捎泻。
程序?yàn)椋?br>
A)參考者發(fā)動(dòng)時(shí)候播送地點(diǎn)飒炎。
B)消耗者發(fā)動(dòng)時(shí)候播送定閱拜托。
C)參考者收獲定閱拜托為笆豁,單播或組播本人得地點(diǎn)給消耗者郎汪。
D)消耗者收獲參考者地點(diǎn),采用RPC調(diào)用闯狱。
第二煞赢、Redis,關(guān)鍵為用到了Redis得公布/定閱形式(這種我在類型好用于信息行列哄孤,可參瞧我以前得內(nèi)容《基于Redis得信息行列之公布定閱形式》照筑,還有關(guān)聯(lián)參閱:《Redis再次:其次:9單機(jī)版裝置》、《基于Redis得信息行列之消費(fèi)消耗者形式(來日誥日寫公布/定閱形式)》)。應(yīng)該求每個(gè)辦事器功夫一定保留一樣凝危,如果須要盡心跳監(jiān)察臟幾據(jù)波俄,對(duì)辦事器而且為有必定負(fù)擔(dān)得。
程序?yàn)椋?br>
A)參考者發(fā)動(dòng)時(shí)候提交本人得地點(diǎn)媒抠,發(fā)生注冊(cè)事情弟断。
B)消耗者發(fā)動(dòng)時(shí)候定閱注冊(cè)&排除注冊(cè)事情,提交本人得地點(diǎn)趴生。
C)消耗者收獲注冊(cè)或者排除注冊(cè)事情后阀趴,到獲得參考者地點(diǎn)列表。
D)監(jiān)控核心發(fā)動(dòng)時(shí)候定閱注冊(cè)&排除注冊(cè)苍匆、定閱&排除定閱事情刘急。
E)監(jiān)控核心收獲注冊(cè)&排除注冊(cè)事情后,到獲得參考者地點(diǎn)列表浸踩。
F)監(jiān)控核心收獲定閱&排除定閱事情后叔汁,到獲得消耗者地點(diǎn)列表。
第三检碗、Simple注冊(cè)据块、監(jiān)控核心,無疑的Dubbo本人完成單個(gè)辦事折剃。
第四另假、Zookeeper,程序例如下:
A)參考者發(fā)動(dòng)時(shí)候?qū)戇M(jìn)本人得URL怕犁。
B)消耗者發(fā)動(dòng)時(shí)候定閱參考者URL列表边篮,并寫進(jìn)本人得URL。
C)監(jiān)控核心定閱全部消耗者參考者URL目次奏甫。
參考者怎么完成無效踢出
由Zookeeper注冊(cè)核心是例戈轿,有單個(gè)heartbeat_monitor心臟跳動(dòng)監(jiān)察線程,查驗(yàn)參考者可否生存阵子,假如反省不到心臟跳動(dòng)思杯,就把參考者從參考者列表中移除,反之參加款筑。
在不危害舊版此得處境下晉級(jí)新版此辦事
運(yùn)用Dubbo就相對(duì)便利智蝠,如果在設(shè)置參考者或者辦事者得時(shí)候候能夠規(guī)定版此號(hào)。
辦事調(diào)用鏈太長
而且為必須聚集營業(yè)來梳理模塊奈梳,只要某個(gè)營業(yè)操縱得調(diào)用鏈太長得時(shí)候候杈湾,還得思考把這一塊整合一下。
Dubbo中心設(shè)置
dubbo:applicationname使用名
dubbo:registry注冊(cè)核心
dubbo:protocol運(yùn)用協(xié)媾和端口
dubbo:reference定閱得辦事接口check發(fā)動(dòng)時(shí)候反省辦事可否可用version多版此
dubbo:service參考者cluster容錯(cuò)機(jī)理retries鎩羽重試多次loadbalance負(fù)載算法
可否能夠直連參考者
能夠攘须,在dubbo:reference經(jīng)過設(shè)置url干脆指引某個(gè)參考者漆撞,多地點(diǎn)用逗號(hào)分離。
辦事注冊(cè)和發(fā)覺得程序圖
辦事注冊(cè)和發(fā)覺得程序圖
集群容錯(cuò)
這種在我得《Dubbo消耗者參考者簡(jiǎn)易案例》中有描繪,摘抄例如下:
默許得failover浮驳,然后加之retries悍汛,象征消耗者調(diào)用參考者呈現(xiàn)變異時(shí)候,自行切換至会,默許試兩次离咐。
failfast,鎩羽了就報(bào)變異奉件,關(guān)鍵為應(yīng)用非等冪性得寫操縱宵蛀。固然這種同樣等價(jià)于failover,retres=0县貌。
failsafe术陶,鎩羽就鎩羽了,同樣不報(bào)變異煤痕,應(yīng)用少許不首要得操縱梧宫,例如寫個(gè)不首要得日記哪些得,錯(cuò)個(gè)第一摆碉、2條得不危害塘匣。
failback,鎩羽了重發(fā)巷帝,例如推送馆铁。
forking,調(diào)用全部參考者锅睛,誰最早前往成果就用誰得,這種太耗能源了历谍。
broadcast现拒,調(diào)用全部參考者,單個(gè)報(bào)錯(cuò)就報(bào)錯(cuò)望侈,這種關(guān)鍵為應(yīng)用告知參考者革新緩存啊印蔬,此地能源之類得操縱。
關(guān)聯(lián)參閱:Dubbo辦理把握臺(tái)裝置脱衙、ZooKeeper單機(jī)版裝置設(shè)置--集群版背面然后發(fā)侥猬、ZooKeeper集群裝置設(shè)置運(yùn)用
1 面試題:Dubbo中zookeeper做注冊(cè)中心,如果注冊(cè)中心集群都掛掉捐韩,發(fā)布者和訂閱者之間還能通信么退唠?
可以的,啟動(dòng)dubbo時(shí),消費(fèi)者會(huì)從zk拉取注冊(cè)的生產(chǎn)者的地址接口等數(shù)據(jù),緩存在本地鲜锚。每次調(diào)用時(shí)苛骨,按照本地存儲(chǔ)的地址進(jìn)行調(diào)用
注冊(cè)中心對(duì)等集群傻唾,任意一臺(tái)宕掉后臊恋,會(huì)自動(dòng)切換到另一臺(tái)
注冊(cè)中心全部宕掉冈钦,服務(wù)提供者和消費(fèi)者仍可以通過本地緩存通訊
服務(wù)提供者無狀態(tài)居凶,任一臺(tái) 宕機(jī)后滩愁,不影響使用
服務(wù)提供者全部宕機(jī)躯喇,服務(wù)消費(fèi)者會(huì)無法使用,并無限次重連等待服務(wù)者恢復(fù)
2 dubbo連接注冊(cè)中心和直連的區(qū)別
在開發(fā)及測(cè)試環(huán)境下硝枉,經(jīng)常需要繞過注冊(cè)中心廉丽,只測(cè)試指定服務(wù)提供者,這時(shí)候可能需要點(diǎn)對(duì)點(diǎn)直連檀咙,
點(diǎn)對(duì)點(diǎn)直聯(lián)方式雅倒,將以服務(wù)接口為單位,忽略注冊(cè)中心的提供者列表弧可,
服務(wù)注冊(cè)中心蔑匣,動(dòng)態(tài)的注冊(cè)和發(fā)現(xiàn)服務(wù),使服務(wù)的位置透明棕诵,并通過在消費(fèi)方獲取服務(wù)提供方地址列表裁良,實(shí)現(xiàn)軟負(fù)載均衡和Failover, 注冊(cè)中心返回服務(wù)提供者地址列表給消費(fèi)者校套,如果有變更价脾,注冊(cè)中心將基于長連接推送變更數(shù)據(jù)給消費(fèi)者。
服務(wù)消費(fèi)者笛匙,從提供者地址列表中侨把,基于軟負(fù)載均衡算法,選一臺(tái)提供者進(jìn)行調(diào)用妹孙,如果調(diào)用失敗秋柄,再選另一臺(tái)調(diào)用。注冊(cè)中心負(fù)責(zé)服務(wù)地址的注冊(cè)與查找蠢正,相當(dāng)于目錄服務(wù)骇笔,服務(wù)提供者和消費(fèi)者只在啟動(dòng)時(shí)與注冊(cè)中心交互,注冊(cè)中心不轉(zhuǎn)發(fā)請(qǐng)求嚣崭,服務(wù)消費(fèi)者向注冊(cè)中心獲取服務(wù)提供者地址列表笨触,并根據(jù)負(fù)載算法直接調(diào)用提供者,注冊(cè)中心雹舀,服務(wù)提供者芦劣,服務(wù)消費(fèi)者三者之間均為長連接,監(jiān)控中心除外说榆,注冊(cè)中心通過長連接感知服務(wù)提供者的存在持寄,服務(wù)提供者宕機(jī)源梭,注冊(cè)中心將立即推送事件通知消費(fèi)者
注冊(cè)中心和監(jiān)控中心全部宕機(jī),不影響已運(yùn)行的提供者和消費(fèi)者稍味,消費(fèi)者在本地緩存了提供者列表
注冊(cè)中心和監(jiān)控中心都是可選的废麻,服務(wù)消費(fèi)者可以直連服務(wù)提供者
3、Dubbo在安全機(jī)制方面是如何解決的
Dubbo通過Token令牌防止用戶繞過注冊(cè)中心直連模庐,然后在注冊(cè)中心上管理授權(quán)烛愧。Dubbo還提供服務(wù)黑白名單,來控制服務(wù)所允許的調(diào)用方掂碱。