精选(63) 面试官:说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?
面試題
說一下的 dubbo 的工作原理?注冊中心掛了可以繼續通信嗎?說說一次 rpc 請求的流程?
面試官心理分析
MQ、ES、Redis、Dubbo,上來先問你一些思考性的問題、原理,比如 kafka 高可用架構原理、es 分布式架構原理、redis 線程模型原理、Dubbo 工作原理;之后就是生產環境里可能會碰到的一些問題,因為每種技術引入之后生產環境都可能會碰到一些問題;再來點綜合的,就是系統設計,比如讓你設計一個 MQ、設計一個搜索引擎、設計一個緩存、設計一個 rpc 框架等等。
那既然開始聊分布式系統了,自然重點先聊聊 dubbo 了,畢竟 dubbo 是目前事實上大部分公司的分布式系統的 rpc 框架標準,基于 dubbo 也可以構建一整套的微服務架構。但是需要自己大量開發。
當然去年開始 spring cloud 非常火,現在大量的公司開始轉向 spring cloud 了,spring cloud 人家畢竟是微服務架構的全家桶式的這么一個東西。但是因為很多公司還在用 dubbo,所以 dubbo 肯定會是目前面試的重點,何況人家 dubbo 現在重啟開源社區維護了,捐獻給了 apache,未來應該也還是有一定市場和地位的。
既然聊 dubbo,那肯定是先從 dubbo 原理開始聊了,你先說說 dubbo 支撐 rpc 分布式調用的架構啥的,然后說說一次 rpc 請求 dubbo 是怎么給你完成的,對吧。
面試題剖析
dubbo 工作原理
- 第一層:service 層,接口層,給服務提供者和消費者來實現的
- 第二層:config 層,配置層,主要是對 dubbo 進行各種配置的
- 第三層:proxy 層,服務代理層,無論是 consumer 還是 provider,dubbo 都會給你生成代理,代理之間進行網絡通信
- 第四層:registry 層,服務注冊層,負責服務的注冊與發現
- 第五層:cluster 層,集群層,封裝多個服務提供者的路由以及負載均衡,將多個實例組合成一個服務
- 第六層:monitor 層,監控層,對 rpc 接口的調用次數和調用時間進行監控
- 第七層:protocal 層,遠程調用層,封裝 rpc 調用
- 第八層:exchange 層,信息交換層,封裝請求響應模式,同步轉異步
- 第九層:transport 層,網絡傳輸層,抽象 mina 和 netty 為統一接口
- 第十層:serialize 層,數據序列化層
工作流程
- 第一步:provider 向注冊中心去注冊
- 第二步:consumer 從注冊中心訂閱服務,注冊中心會通知 consumer 注冊好的服務
- 第三步:consumer 調用 provider
- 第四步:consumer 和 provider 都異步通知監控中心
注冊中心掛了可以繼續通信嗎?
可以,因為剛開始初始化的時候,消費者會將提供者的地址等信息拉取到本地緩存,所以注冊中心掛了可以繼續通信。
總結
以上是生活随笔為你收集整理的精选(63) 面试官:说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDFS 关闭安全模式
- 下一篇: python设计模式(一)创建型模式