面試題
說一下的 dubbo 的工作原理?注冊中心掛了可以繼續(xù)通信嗎菌仁?說說一次 rpc 請求的流程浩习?
面試官心理分析
MQ、ES济丘、Redis谱秽、Dubbo,上來先問你一些思考的問題摹迷,原理(kafka 高可用架構(gòu)原理疟赊、es 分布式架構(gòu)原理、redis 線程模型原理峡碉、Dubbo 工作原理)近哟,生產(chǎn)環(huán)境里可能會(huì)碰到的一些問題(每種技術(shù)引入之后生產(chǎn)環(huán)境都可能會(huì)碰到一些問題),系統(tǒng)設(shè)計(jì)(設(shè)計(jì)MQ鲫寄,設(shè)計(jì)搜索引擎吉执,設(shè)計(jì)一個(gè)緩存,設(shè)計(jì) rpc 框架)
那既然開始聊分布式系統(tǒng)了地来,自然重點(diǎn)先聊聊 dubbo 了戳玫,畢竟 dubbo 是目前事實(shí)上大部分公司的分布式系統(tǒng)的 rpc 框架標(biāo)準(zhǔn),基于 dubbo 也可以構(gòu)建一整套的微服務(wù)架構(gòu)未斑。但是需要自己大量開發(fā)咕宿。
當(dāng)然去年開始 spring cloud 非常火蜡秽,現(xiàn)在大量的公司開始轉(zhuǎn)向spring cloud了府阀,spring cloud 人家畢竟是微服務(wù)架構(gòu)的全家桶式的這么一個(gè)東西。但是因?yàn)楹芏喙具€在用 dubbo载城,所以 dubbo 肯定會(huì)是目前面試的重點(diǎn)肌似,何況人家 dubbo 現(xiàn)在重啟開源社區(qū)維護(hù)了,未來應(yīng)該也還是有一定市場和地位的诉瓦。
既然聊 dubbo川队,那肯定是先從 dubbo 原理開始聊了,你先說說 dubbo 支撐 rpc分布式調(diào)用的架構(gòu)啥的睬澡,然后說說一次 rpc 請求 dubbo 是怎么給你完成的固额,對吧。
面試題剖析
dubbo 工作原理
- 第一層:service 層煞聪,接口層斗躏,給服務(wù)提供者和消費(fèi)者來實(shí)現(xiàn)的
- 第二層:config 層,配置層昔脯,主要是對 dubbo 進(jìn)行各種配置的
- 第三層:proxy 層啄糙,服務(wù)代理層笛臣,無論是 consumer 還是 provider,dubbo 都會(huì)給你生成代理隧饼,代理之間進(jìn)行網(wǎng)絡(luò)通信
- 第四層:register 層沈堡,服務(wù)注冊層,負(fù)責(zé)服務(wù)的注冊與發(fā)現(xiàn)
- 第五層:cluster 層燕雁,集群層诞丽,封裝多個(gè)服務(wù)提供者的路由以及負(fù)載均衡,將多個(gè)實(shí)例組合成一個(gè)服務(wù)
- 第六層:monitor 層拐格,監(jiān)控層僧免,對 rpc 接口的調(diào)用次數(shù)和調(diào)用時(shí)間進(jìn)行監(jiān)控
- 第七層:protocal 層,遠(yuǎn)程調(diào)用層捏浊,封裝 rpc 調(diào)用
- 第八層:exchange 層懂衩,信息交換層,封裝請求響應(yīng)模式呛伴,同步轉(zhuǎn)異步
- 第九層:transport 層勃痴,網(wǎng)絡(luò)傳輸層,抽象 mina 和 netty 為統(tǒng)一接口
- 第十層:serialize 層热康,數(shù)據(jù)序列化層
工作流程
- 第一步:provider 向注冊中心去注冊
- 第二步:consumer 從注冊中心訂閱服務(wù)沛申,注冊中心會(huì)通知 consumer 注冊好的服務(wù)
- 第三步:consumer 調(diào)用 provider
-
第四步:consumer 和 provider 都異步通知監(jiān)控中心
注冊中心掛了可以繼續(xù)通信嗎?
可以姐军,因?yàn)閯傞_始初始化的時(shí)候铁材,消費(fèi)者會(huì)將提供者的地址等信息拉取到本地緩存,所以注冊中心掛了可以繼續(xù)通信奕锌。