分布式系統的面試題10


 

1、面試題

 

如何自己設計一個類似dubborpc框架?

 

2、面試官心里分析

 

說實話,就這問題,其實就跟問你,如何自己設計一個MQ,一樣的道理,就考兩個:

 

1)你有沒有對某個rpc框架原理有非常深入的理解

2)你能不能從整體上來思考一下,如何設計一個rpc框架,考考你的系統設計能力

 

3、面試題剖析

 

其實一般問到你這問題,你起碼不能認慫,因為既然咱們這個課程是短期的面試突擊訓練課程,那我不可能給你深入講解什么kafka源碼剖析,dubbo源碼剖析,何況我就算講了,你要真的消化理解和吸收,起碼個把月以后了。

 

所以我給大家一個建議,遇到這類問題,起碼從你了解的類似框架的原理入手,自己說說參照dubbo的原理,你來設計一下,舉個例子,dubbo不是有那么多分層么?而且每個分層是干啥的,你大概是不是知道?那就按照這個思路大致說一下吧,起碼你不能懵逼,要比那些上來就懵,啥也說不出來的人要好一些

 

舉個例子,我給大家說個最簡單的回答思路:

 

1)上來你的服務就得去注冊中心注冊吧,你是不是得有個注冊中心,保留各個服務的信心,可以用zookeeper來做,對吧

2)然后你的消費者需要去注冊中心拿對應的服務信息吧,對吧,而且每個服務可能會存在於多台機器上

3)接着你就該發起一次請求了,咋發起?蒙圈了是吧。當然是基於動態代理了,你面向接口獲取到一個動態代理,這個動態代理就是接口在本地的一個代理,然后這個代理會找到服務對應的機器地址

4)然后找哪個機器發送請求?那肯定得有個負載均衡算法了,比如最簡單的可以隨機輪詢是不是

5)接着找到一台機器,就可以跟他發送請求了,第一個問題咋發送?你可以說用netty了,nio方式;第二個問題發送啥格式數據?你可以說用hessian序列化協議了,或者是別的,對吧。然后請求過去了。。

6)服務器那邊一樣的,需要針對你自己的服務生成一個動態代理,監聽某個網絡端口了,然后代理你本地的服務代碼。接收到請求的時候,就調用對應的服務代碼,對吧。

 

這就是一個最最基本的rpc框架的思路,先不說你有多牛逼的技術功底,哪怕這個最簡單的思路你先給出來行不行?好,突擊課程,那就到這兒結束了,我這課程定位是幫你快速梳理一遍,掃清盲點,不是打通你任督二脈,給你九陽神功的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM